This is a planned series of presentations to take place at the University of Calgary in May 2014, as a part of a hands-on x86_64 hobbyist operating system development workshop.
A basic background in low-level programming is assumed; this means things like a good understanding of how pointers operate is a prerequisite. Experience with any sort of assembly is also assumed; Intel assembly is a bonus but not required.
The goals for the workshop are for participants to:
- Gain a working understanding of how the Intel x86_64 architecture functions, in addition to a general outline of IBM-compatible architectures
- Build a multiboot kernel targeting the Intel x86_64 architecture, with
support for:
- multiple threads with a round-robin scheduler
- SMP
- I/O APIC for IRQ handling
- Local APICs for interrupt handling
- a full virtual/physical memory manager (including support for 2MiB pages)
- additional useful infrastructure like a heap and data structures
- Develop technical documentation reading and low-level debugging skills
- Apply academic and theoretical knowledge to systems programming
See the topic map for more details on the structure and topics covered.
Meetings are tentatively scheduled for each Tuesday and Saturday in May from 1830-2030 in the undergraduate computer labs at the University of Calgary. This time is open to change based on availability of participants.
Arrangements are being made for the presentations both to be recorded and broadcast live for people at remote locations to participate. If you want to participate in the live broadcast, send me an email.
Expected background
- Strong knowledge of pointers
- Basic computer architecture knowledge (for UCalgary, this means CPSC 355)
- Experience with some sort of assembly, x86 assembly a bonus
Suggested preliminary reading
- The background notes
Useful resources
- The prepared notes
- The OSDev Wiki
- The Intel Software Developer manuals (particularly Vol 3)
- The AMD64 Architecture Programmer's Manual (all volumes)
- The provided reference code (hopefully useful, that is!)
- The provided reference kernel
Communication
You can email me at the address in the webpage footer, or at my University email address if you prefer.
There are several ways to reach other parties interested in kernel development.
I've reserved the #uc-kdw
IRC channel on Freenode for the purposes of this
workshop, but there is also the more general #osdev
channel there. The OSDev
forums may be worth a visit if you have an esoteric
issue. There is also a mailing list set up for participants; send an email to
uc-kdw-subscribe@yahoogroups.com
if you would like to join.