CS 3210 Design of Operating Systems
College of Computing, Georgia Tech
Thursday 13 January 2000
Kernel Overview / Architecture / Development with Skiff Boards
announcements
- roll
- photos
- handouts: LCKC chs 1-3, Beck Ch 3?
- team signups
- books
- new web pages
review of code development with Skiff boards
- Skiff Lab
- Home development
- power
- console (db9 serial)
- ethernet (hub or cross-over cable)
- flash rom, ram
Skiff development: software components
- terminal emulator: 38400, 8-1-N, no flow control
- Linux: minicom
- Windows/NT: hyperterminal
- xmodem for serial download (only hyperterminal xmodem works ... ouch!)
- kernel source tree (~50meg)
- Linux Intel hosted gcc cross-compiler (~100meg)
- xmodem download (slow, about 20 minutes)
- ethernet flash write (fw)
- bootloader (in flash)
- remotely mounted filesystems (NFS)
- to access additional cross-compiled applications, libraries, etc.
- for transferring applications to Skiff board
- to access new kernel when using fw
- for building root filesystem
- ramdisk-based root filesystem (initrd)
- stored in flash
- reconstituted as part of boot process
kernel architecture overview (Maxwell Ch 3)
- design goals (lots of tradeoffs)
- clarity (within constraints of robustness, speed)
- compatibility
- POSIX, Sys V, BSD, "personalities", emulation
- file systems, networking, device drivers
- mechanism: modularity, abstraction, interfaces (e.g. VFS)
- portability
- robustness
- security
- speed
- basic architecture:
- hardware
- kernel (arch dependent, independent)
- system calls
- libraries
- applications
- kernel structuring techniques
- layering
- modules
- objects
- Linux is hybrid, based on pragmatic decisions
- monolithic kernel vs. microkernel
- speed vs. flexibility, maintainability
- kernel "module" system
- kernel source structure (usually /usr/src/linux)
- Documentation
- arch/ (alpha, arm, i386, m68k, mips, ppc, sparc, sparc64, etc.)
- boot code, interrupts, trap handling, fp emulation, optimized
utility routines (strlen)
- contains kernel subdirectories for platform-specific kernel stuff
- contains mm subdirectories for platform-specific memory stuff
- drivers
- fs (vfs, ext2, isofs, proc, etc.)
- include (for compiling the kernel; not stdlib includes for apps)
- init -- main.c (!), boot, kernel initialization, some tricks here
- ipc
- kernel -- platform-independent core stuff; sched.c, fork.c, etc.
- lib -- inflate.c, stdlib utilities for use within the kernel
- mm -- platform-independent memory stuff
- net
- scripts -- kernel compilation, configuration scripts
readings for next tuesday (18 jan 2000)
- Maxwell Ch 2 "First Look at Code" printk
- Maxwell Ch 4 Booting
- Beck Ch 3.2.3, Appendix D Booting
- Rubini Ch 16 Kernel Source Tour, Booting
coming up!
- system calls
- timers, interrupt handling
- char device drivers ? project
- process/thread structure
- scheduling