CS 3210 Design of Operating Systems
College of Computing, Georgia Tech
Lecture 10: Tuesday 15 February 2000
Processes, Threads, Scheduling:
- Maxwell Ch 7
- Beck 3.1.3, 3.2.5, 3.3.3
announcements
- topic signups
- p3 progress? replacement Skiff board
- next week: Jamey Hicks, MIDTERM
process vs. thread vs. task
quick scheduling review, preemption, timeslicing
"realtime"
priorities
- static (priority) [setpriority(), "niceness"] --
timeslice size (default 210ms?)
- dynamic (counter) -- timeslice counter in jiffies (counts
down)
- realtime -- 0 for "normal", higher is better,
only root
pids
- 0 .. 32767 (currently limited to 512)
- don't reuse "old" pids too quickly
- possible for processes to share PID! (clone stuff...)
data structures (picture from Maxwell Fig 7.2)
- pcb --> struct task_struct (1k!)
- excellent walk-through in Beck
- task (task array, process table)
- task list (prev_task, next_task)
- run queue (prev_run, next_run)
- pidhash (fast access via pid)
- task array freelist (tarray_freelist)
- "process graph"
- original parent p_opptr ("reparenting")
- current parent p_pptr
- youngest child p_cptr
- younger, older siblings p_ysptr, p_osptr
process states
- TASK_RUNNING (ready)
- TASK_INTERRUPTIBLE, TASK_UNINTERRUPTIBLE
- TASK_ZOMBIE
- TASK_STOPPED
- (TASK_SWAPPING)
fork, __clone
- cloning: CLONE_VM, _FS, _FILES, _SIGHAND, _PID
- copy-on-write
- kernel_thread? special kernel task, no preemption, for
things like kswapd
- do_fork()
- "activating" a new process: wake_up_process(me) !
get_pid
- some tricks to return a "safe" unused pid
- maintains a "water mark"
- 300 !
exec
- setup some info "binprms"
- setup environment: args, env
- locate binary handler
- do_execve()
executable formats
- a.out, COFF, ELF, Java, "shells"
- ELF good support for dynamic linking, flexible
- magic numbers, #!
- "binary handler list"; search_binary_handler
- fs/binfmt_elf.c, _aout.c, _java.c, etc.
- table of function pointers (methods): load_binary,
load_shlib, core_dump, etc.
- example: Java binary handler
- load a JVM (what's *its* format? no recursion allowed!)
readings for next thursday (17 jan 2000)
- Maxwell Ch 7 scheduler proper