Professional Documents
Culture Documents
Processes
作者 : 陳鍾誠
單位 : 金門技術學院資管系
Email: ccc@kmit.edu.tw
URL : http://ccc.kmit.edu.tw
日期 : 110/11/02
2.1. Introduction to Processes
2.1.1. The Process Model
2.1.2. Process Creation
2.1.3. Process Termination
2.1.4. Process Hierarchies
2.1.5. Process States
2.1.6. Implementation of Processes
2.1.7. Threads
2 陳鍾誠 - 110/11/02
2.1 The Process Model
3 陳鍾誠 - 110/11/02
2.1.2 Process Creation
4 陳鍾誠 - 110/11/02
2.1.3 Process Termination
5 陳鍾誠 - 110/11/02
2.1.4 Process Hierarchy
6 陳鍾誠 - 110/11/02
2.1.5 Process States
7 陳鍾誠 - 110/11/02
2.1.6 Implementation of
Processes
8 陳鍾誠 - 110/11/02
9 陳鍾誠 - 110/11/02
2.1.7 Threads
10 陳鍾誠 - 110/11/02
11 陳鍾誠 - 110/11/02
12 陳鍾誠 - 110/11/02
2.2. Interprocess
Communication
2.2.1. Race Conditions
2.2.2. Critical Sections
2.2.3. Mutual Exclusion with Busy Waiting
2.2.4. Sleep and Wakeup
2.2.5. Semaphores
2.2.6. Mutexes
2.2.7. Monitors
2.2.8. Message Passing
13 陳鍾誠 - 110/11/02
2.2.1 Race Conditions
14 陳鍾誠 - 110/11/02
2.2.2 Critical Section
15 陳鍾誠 - 110/11/02
2.2.3 Mutual Exclusion with
Busy Waiting
Disabling Interrupts
Lock Variables
Strict Alternation
Peterson’s Solution
The TSL instruction
16 陳鍾誠 - 110/11/02
Disabling Interrupts
17 陳鍾誠 - 110/11/02
Lock Variables
18 陳鍾誠 - 110/11/02
Strict Alternation
19 陳鍾誠 - 110/11/02
Peterson’s Solution
20 陳鍾誠 - 110/11/02
The TSL instruction
21 陳鍾誠 - 110/11/02
2.2.4 Sleep and Wakeup
22 陳鍾誠 - 110/11/02
The Producer-Consumer
Problem
23 陳鍾誠 - 110/11/02
2.2.5 Semaphores
24 陳鍾誠 - 110/11/02
Solving the Producer-
Consumer Problem using
Semaphores
25 陳鍾誠 - 110/11/02
2.2.6. Mutexes
26 陳鍾誠 - 110/11/02
2.2.7. Monitors
27 陳鍾誠 - 110/11/02
Solving the Producer-
Consumer Problem using
Monitor (1)
28 陳鍾誠 - 110/11/02
Solving the Producer-
Consumer Problem using
Monitor (2)
29 陳鍾誠 - 110/11/02
2.2.8. Message Passing
30 陳鍾誠 - 110/11/02
2.3. Classical IPC Problems
2.3.1. The Dining Philosophers Problem
2.3.2. The Readers and Writers Problem
31 陳鍾誠 - 110/11/02
2.3.1. The Dining
Philosophers Problem
(DPP)
32 陳鍾誠 - 110/11/02
A nonsolution to DPP
33 陳鍾誠 - 110/11/02
A solution to DPP (1)
34 陳鍾誠 - 110/11/02
A solution to DPP (2)
35 陳鍾誠 - 110/11/02
2.3.2. The Readers and
Writers Problem
36 陳鍾誠 - 110/11/02
2.4. Scheduling
2.4.1. Introduction to Scheduling
2.4.2. Scheduling in Batch Systems
2.4.3. Scheduling in Interactive Systems
2.4.4. Scheduling in Real-Time Systems
2.4.5. Policy versus Mechanism
2.4.6. Thread Scheduling
37 陳鍾誠 - 110/11/02
2.4.1. Introduction to
Scheduling
Process Behavior
When to Schedule
Categories of Scheduling Algorithms
Scheduling Algorithm Goals
38 陳鍾誠 - 110/11/02
Process Behavior
39 陳鍾誠 - 110/11/02
Scheduling Algorithm
Goals
40 陳鍾誠 - 110/11/02
2.4.2. Scheduling in Batch
Systems
First-Come First Served
Shortest Job First
Shortest Remaining Time Next
Three-Level Scheduling
41 陳鍾誠 - 110/11/02
First-Come First Served
42 陳鍾誠 - 110/11/02
Shortest Job First
43 陳鍾誠 - 110/11/02
Shortest Remaining Time
Next
44 陳鍾誠 - 110/11/02
Three-Level Scheduling
45 陳鍾誠 - 110/11/02
2.4.3. Scheduling in
Interactive Systems
Round-Robin Scheduling
Priority Scheduling
Multiple Queues
Shortest Process Next
Guaranteed Scheduling
Lottery Scheduling
Fair-Share Scheduling
46 陳鍾誠 - 110/11/02
Round-Robin Scheduling
47 陳鍾誠 - 110/11/02
Priority Scheduling
48 陳鍾誠 - 110/11/02
Multiple Queues
49 陳鍾誠 - 110/11/02
Shortest Process Next
50 陳鍾誠 - 110/11/02
Guaranteed Scheduling
51 陳鍾誠 - 110/11/02
Lottery Scheduling
52 陳鍾誠 - 110/11/02
Fair-Share Scheduling
53 陳鍾誠 - 110/11/02
2.4.4. Scheduling in Real-
Time Systems
54 陳鍾誠 - 110/11/02
2.4.5. Policy versus
Mechanism
55 陳鍾誠 - 110/11/02
2.4.6. Thread Scheduling
56 陳鍾誠 - 110/11/02
2.5. Overview of Processes
in MINIX 3
2.5.1. The Internal Structure of MINIX 3
2.5.2. Process Management in MINIX 3
2.5.3. Interprocess Communication in MINIX 3
2.5.4. Process Scheduling in MINIX 3
57 陳鍾誠 - 110/11/02
2.5.1. The Internal Structure
of MINIX 3
58 陳鍾誠 - 110/11/02
2.5.2. Process Management
in MINIX 3
59 陳鍾誠 - 110/11/02
Minix Startup
60 陳鍾誠 - 110/11/02
Some Important MINIX 3
system components
61 陳鍾誠 - 110/11/02
Initialization of the Process
Tree
62 陳鍾誠 - 110/11/02
2.5.3. Interprocess Communication
in MINIX 3
63 陳鍾誠 - 110/11/02
2.5.4. Process Scheduling in MINIX
3
Round-Robin
64 陳鍾誠 - 110/11/02
2.6. Implementation of
Processes in MINIX 3
2.6.1. Organization of the MINIX 3 Source Code
2.6.2. Compiling and Running MINIX 3
2.6.3. The Common Header Files
2.6.4. The MINIX 3 Header Files
2.6.5. Process Data Structures and Header Files
2.6.6. Bootstrapping MINIX 3
2.6.7. System Initialization
2.6.8. Interrupt Handling in MINIX
2.6.9. Interprocess Communication in MINIX 3
2.6.10. Scheduling in MINIX 3
2.6.11. Hardware-Dependent Kernel Support
2.6.12. Utilities and the Kernel Library
65 陳鍾誠 - 110/11/02
2.6.1. Organization of the
MINIX 3 Source Code
66 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (1)
boot/ : 啟動相關的程式碼 (addaout.c, boot.c/h, bootlock.s, boothead.s, bootimage.c,
doshead.s, image.h, installboot.c, jumpboot.s, masterboot.s, mkfhead.s,
mkfile.c, rawfs.c/h
kernel/ : 行程相關的程式碼 (clock.c, config.c/h, debug.c/h, exception.c, glo.h, i8259.c,
ipc.h, kernel.h, klib88.s, klib386.s, klib.s, main.c, mpx88.s, mpx386.s,
mpx.s, priv.h, proc.c/h, protect.c/h, proto.h, sconst.h, start.c, system.c,
table.c, type.h, utility.c,
system/ : do_xx 的程式 , (do_abort.c, do_copy.c, dodevio.c, do_endksig.c, do_exec.c,
do_exit.c, do_fork.c, do_getinfo.c, do_getksig.c, do_int86.c, do_iopenable.c,
do_irqctl.c, dodo_exec.c, do_fork.c, do_kill.c, do_memset.c, do_newmap.c,
do_nice.c, do_privctl.c, do_sdevio.c, do_segctl.c, do_setalarm.c,
do_sigreturn.c, do_sigend.c, do_times.c, do_trace.c, do_umap.c,
do_unused.c, do_vcopy.c, do_vdevio.c)
67 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (2)
servers/ : 訊息傳遞相關的程式碼 (No file)
ds/ : Data Store Server, (main.c, store.c/h, glo.h, inc.h, proto.h)
fs/ : File System, (buf.h, cache.c, cache2.c, cdprobe.c, device.c, dmap.c, file.h,
filedes.c, fproc.h, fs.h, glo.h, inode.c/h, link.c, lock.c/h, main.c,
misc.c, mount.c, open.c, param.h, path.c, pipe.c, protect.c, proto.h,
read.c, select.c/h, stadir.c, super.c/h, table.c, time.c, timers.c,
type.h, utility.c, write.c)
inet/ : Networking, (buf.c, clock.c, inet.c, inet_config.c, mnx_eth.c, mq.c, qp.c,
sha2.c, sr.c, stacktrace.c, version.c)
generic/: 網路通用程式 , *arp.c/h, assert.h, buf.h, clock.h, eth.c/h, eth_int.h, event.c/h,
icmp.c/h, icmp_lib.h, io.c/h, ip.c/h, ip_eth.c/h, ip_int.h, ip_ioctl.c/h,
ip_lib.c, ip_ps.c, ip_read.c, ip_write.c, ipr.c/h, psip.c/h, rand256.c/h,
sr.h, tcp.c/h, tcp_int.h, tcp_lib.c, tcp_recv.c, tcp_send.c, type.h, udp.c,
udp.h, udp_int.h)
minix3/ : 只有 queryparam.c, .h
68 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (3)
init/ : 只有 init.c , 是所有 Process 的 Father Process.
is/ : information server, 除錯資訊的 dump.(dump.c, dmp_ds.c, dmp_fs.c, dmp_kernel.c,
dmp_pm.c, dmp_rs.c, glo.h, inc.h, is.h, main.c, proto.h)
pm/ : Process Management, 包含 (alloc.c, break.c, const.h, exec.c, forkexit.c, getset.c,
glo.h, main.c, misc.c, mproc.h, param.h, pm.h, proto.h, signal.c, table.c,
time.c, timers.c,trace.c, type.h, utility.c
rs/ : Reincarnation( 輪迴轉世 ) Server, (inc.h, main.c, manager.c/h, proto.h, service.c)
sm/ : System Process Manager, ( 沒有 *.c 只有一個 makefile)
69 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (4)
drivers/ : IO 驅動程式 (drivers.h)
at_wini/ : driver for the IBM-AT winchester controller.
bios_wini/: hard disk driver that uses the ROM BIOS.
cmos/ : access the CMOS chip to get or set the system time.
dp8390/ : Ethernet device driver for NS dp8390 based ethernet cards. (dp8390.c, ne2000.c, rtl9029.c, wdeth.c)
dpeth/ : Ethernet device driver for 3Com Etherlink (3c501) boards, 包含 3c501.c, 3c503.c,
3c509.c, 8390.c, devio.c, dp.c, ne.c, netbuff.c, wd.c,
floppy/ : Floppy Disk Driver, 包含 floppy.c
fxp/ : Ethernet device driver for Intel 82557, 82558, 82559, 82550, and 82562 fast ethernet controllers.
包含 : fxp.c ( 與裝置相關 ), mii.c ( 與裝置無關 )
lance/ : Ethernet driver for AMD LANCE based ethernet cards. (lance.c)
libdriver/: Device Independent Device Driver Interface. (driver.c, drvlib.c)
libpci/ : PCI 插槽 (pci.c, pci_table.c, pci_amd.h, pci_intel.h, pci_via.h, pci.h)
log/ : system log device (log.c, diag.c, kput.c)
memory/ : (memory.c)
printer/: printer driver. It is a fairly simple driver,supporting only one printer.
Characters that are written to the driver are written to the printer without
any changes at all.
random/ : random number generator, (main.c, random.c, sha2.c)
rescue/ : rescue device driver (rescue.c)
rtl8138/ : device driver for Realtek rtl8139 based ethernet cards.
sb16/ : driver for a DSP (Digital Sound Processor) on a SoundBlaster 16 soundcard.
tty/ : terminal driver (tty.c, rs232.c, pty.c, keyboard.c, console.c, vidcopy.c)
70 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (5)
tools/ : 工具軟體 (Makefile, mkboot, tell_config)
include/ : *.h 的表頭檔 (a.out.h, alloca.h, ansi.h, assert.h, configfile.h, ctype.h, courses.h,
dirent.h, env.h, errno.h, fcntl.h, float.h, grp.h, inttype.h, lib.h, libgen.h,
libutil.h, limits.h, locale.h, math.h, mathconst.h, netdb.h, pwd.h, regex.h,
regexp.h, setjmp.h, sgtty.h, signal.h, stdarg.h, stddef.h, stdint.h, stdio.h,
stdlib.h, string.h, tar.h, termcap.h, termios.h, time.h, timers.h, tools.h, ttyent.h,
unistd.h, utime.h, utmp.h)
arpa/ : inet.h
ibm/ : bios.h, cmos.h, cpu.h, diskparm.h, int86.h, interrupt.h, memory.h, partition.h,
portio.h, ports.h
minix/ : bitmap.h, callnr.h, cdrom.h, com.h, config.h, const.h, devio.h, dl_eth.h, dmap.h,
fslib.h, ioctl.h, ipc.h, jmp_buf.h, keymap.h, minlib.h, partition.h, paths.h,
sound.h, swap.h, sys_config.h, syslib.h, sysutil.h, type.h, u64.h,
71 陳鍾誠 - 110/11/02
MINIX 的原始檔列表 (6)
net/ : hton.h, if.h, ioctl.h, netlib.h
gen/ : arp_io.h, dhcp.h, eth_hdr.h, eth_io.h, ether.h, icmp.h, icmp_hdr.h, if_ether.h,
in.h, inet.h, ip_hdr.h, ip_io.h, nameser.h, netdb.h, oneCsum.h, psip_hdr.h,
psip_io.h, resolv.h, rip.h, route.h, socket.h, tcp.h, tcp_hdr.h, tcp_io.h, udp.h,
udp_hdr.h, udp_io.h, vjhc.h
netinet/ : in.h, tcp.h
sys/ : asynchio.h, dir.y, file.h, ioc_cmos.h, ioc_disk.h, ioc_file.h, ioc_memory.h,
ioc_scsi.h, ioc_sound.h, ioc_tape.h, ioc_tty.h, ioctl.h, mtio.h, param.h, ptrace.h,
resource.h, select.h, sigcontext.h, socket.h, stat.h, statfs.h, svrctl.h, time.h,
types.h, uio.h, un.h, utsname.h, wait.h
72 陳鍾誠 - 110/11/02
2.6.2. Compiling and Running MINIX 3
Rebuild MINIX Operating System
cd /usr/src/tools/
make
73 陳鍾誠 - 110/11/02
Memory Layout
74 陳鍾誠 - 110/11/02
2.6.3. The Common Header Files
75 陳鍾誠 - 110/11/02
Data Type Size
76 陳鍾誠 - 110/11/02
2.6.4. The MINIX 3 Header Files
77 陳鍾誠 - 110/11/02
Seven Message Type used
in MINIX
78 陳鍾誠 - 110/11/02
2.6.5. Process Data Structures and
Header Files
Discriptor table
Define how system resources are used and prevent process from accessing
memory assigend to other processes.
79 陳鍾誠 - 110/11/02
Privilege Table
80 陳鍾誠 - 110/11/02
2.6.6. Bootstrapping MINIX 3
Boot Process : SEC 2.6, page 155.
When the system is started, the hardware (actually, a program in ROM) reads the
first sector of the boot disk, copies it to a fixed location in memory, and executes
the code found there.
Hard disk are partitioned, and the program on the first sector (called master boot
on MINIX sytems) first relocates itself to a different memory region, the reads the
partition table, loaded with it from the first sector. Then it load and executes the
first sector of the active partition, as shown in Fig. 2-36(b).
81 陳鍾誠 - 110/11/02
Disk Structure for
Bootstrapping
82 陳鍾誠 - 110/11/02
Making boot program
The MINIX 3 boot sector is modified at the time it is written to the
disk by a special program called installboot which writes the boot
sector and patches into it the disk address of a file named boot on
its partition or subpartition
83 陳鍾誠 - 110/11/02
Boot Parameters
84 陳鍾誠 - 110/11/02
Reference for MINIX booter
Boot Sequence Overview
http://www.os-forum.com/minix/boot/bootsequence.php
85 陳鍾誠 - 110/11/02
2.6.7. System Initialization
86 陳鍾誠 - 110/11/02
8088 or 80386 ?
87 陳鍾誠 - 110/11/02
2.6.8. Interrupt Handling in MINIX
88 陳鍾誠 - 110/11/02
Interrupt V.S. System Call
89 陳鍾誠 - 110/11/02
8259 Interrupt Controller
90 陳鍾誠 - 110/11/02
System Startup - Restart
91 陳鍾誠 - 110/11/02
2.6.9. Interprocess Communication
in MINIX 3
92 陳鍾誠 - 110/11/02
93 陳鍾誠 - 110/11/02
2.6.10. Scheduling in MINIX 3
94 陳鍾誠 - 110/11/02
Process Queue
95 陳鍾誠 - 110/11/02
2.6.11. Hardware-Dependent Kernel
Support
96 陳鍾誠 - 110/11/02
2.6.12. Utilities and the Kernel
Library
97 陳鍾誠 - 110/11/02
The format of an Intel
Segment Descriptor
98 陳鍾誠 - 110/11/02
2.7. The System Task in
MINIX 3
2.7.1. Overview of the System Task
2.7.2. Implementation of the System Task
2.7.3. Implementation of the System
Library
99 陳鍾誠 - 110/11/02
2.7.1. Overview of the
System Task