Transcript General

:
Operating System
ecs150 Fall 2006
#1: OS Architecture, Kernel, & Process
Dr. S. Felix Wu
Computer Science Department
University of California, Davis
http://www.cs.ucdavis.edu/~wu/
[email protected]
09/29/2006
ecs150 Fall 2006
1
VM/MVS, DOS, Win95/98/ME/2000/XP,
Freebsd/Linux, MacOS-10, Mach, Minix,
PalmOS, uCOS, TinyOS, …
09/29/2006
ecs150 Fall 2006
2
….where applications meet Hardware!!!
Applications……..
OS
Hardware: CPU/Memory/HD/DVD/Wireless…
09/29/2006
ecs150 Fall 2006
3
“Information Router”
One NIC a process’s user-level memory
 One file another file

– OS kernel layer
– Hardware layer
09/29/2006
ecs150 Fall 2006
4
….where applications meet Hardware!!!
Applications……..
OS
Hardware: CPU/Memory/HD/DVD/Wireless…
09/29/2006
ecs150 Fall 2006
5
This quarter….
The internals of OS
 The basic design principles of OS
 The skills to modify or implement an OS.

09/29/2006
ecs150 Fall 2006
6
Operating System

An interesting balance between:
– Theories and Practical Experiences/Experiments
– Architectural Concept and Detailed Design
– Formal Verification and Empirical Validation
09/29/2006
ecs150 Fall 2006
7
About the Instructor

S. Felix Wu
– [email protected][email protected][email protected]



Office: 3057 Engineering II
Phone: 530-754-7070
Office Hours:
– 1-2 p.m. on Tuesday and Friday
– by appointment
09/29/2006
ecs150 Fall 2006
8
Why 3 email addresses?
– [email protected][email protected][email protected]
09/29/2006
ecs150 Fall 2006
9
Why 3 email addresses?
– [email protected][email protected]
– My main email contact for
everything all the time.
– [email protected]
09/29/2006
ecs150 Fall 2006
10
Why 3 email addresses?
– [email protected][email protected]
– My main email contact for
everything all the time.
– [email protected]
– Read only once in the past three
months…
09/29/2006
ecs150 Fall 2006
11
Why 3 email addresses?
– [email protected]
read/response during the quarters,
especially before the homework
deadlines.
– [email protected]
– My main email contact for everything
all the time.
– [email protected]
– Read only once in the past three
months…
09/29/2006
ecs150 Fall 2006
12
Anti-Spam
 [email protected]
  subject: [0xFE527804D204BA67]…


0xFE527804D204BA67 is the cyber
social link between the instructor and the
students in ecs150, fall 2006.
09/29/2006
ecs150 Fall 2006
13
Anti-Spam
 [email protected]
  subject: [0xFE527804D204BA67]…
 0xFE527804D204BA67 is the cyber
social link between the instructor and the
students in ecs150, fall 2006.
 Let’s see by the end of quarter whether this
little secret will be known to the
spammers…

09/29/2006
ecs150 Fall 2006
14
About the TA

TA Daniel Wu ([email protected])
– Office Hours:
TBA
– Discussion:
Monday
09/29/2006
ecs150 Fall 2006
15
about Web site
http://www.cs.ucdavis.edu/~wu/ecs150/
 all lectures, notes, announcements,
homework assignments, tools, papers will
be there.

09/29/2006
ecs150 Fall 2006
16
Textbook
Reading this book
itself may be a major
challenge.
But, you really learn
when you go through
this process!
"The Design and Implementation of the FreeBSD Operating Systems"
by Marshall Kirk McKusick and George V. Neville-Neil
Addison Wesley Professional, 2005, ISBN 0-201-70245-2.
http://www.freebsd.org/
09/29/2006
ecs150 Fall 2006
17
Prerequisites
Programming Languages: C and assembly
(ecs50)
 Date Structure (ecs110) and basic Computer
Architecture (ecs154a/eec70).
 ecs40
 Please talk to me if you have any concern.

09/29/2006
ecs150 Fall 2006
18
Syllabus
Process/Kernel
 Memory Management
 midterm
 IO & File Systems
 Others
 final

09/29/2006
ecs150 Fall 2006
(09)
(06)
(10)
(03)
19
OS Principles/Concepts
What is “kernel”?
What is the difference between a process and a thread?
What is the difference between user-level and kernel-level
threads?
What is the difference between a system call and a library
function call?
What are SJF, RR, Lottery, LRU, TLB, Second Chance?
How to do Mutual Exclusion?
What is the difference between deadlock prevention and
avoidance?
What are the differences among hardware interrupt, hardware
trap, and software trap?
09/29/2006
ecs150 Fall 2006
20
OS
Let’s examine OS concepts in a realistic
context: “FreeBSD”
 Then, we can re-think those concepts….

– And, maybe you will realize later that some of
the concepts are either “misleading” or
“irrelevant” in certain context.
09/29/2006
ecs150 Fall 2006
21
Principles vs. Practice



Ideas and Theories first, then we will go over
some FreeBSD code segments.
You will need to learn FreeBSD internals for
programming assignments!!
The first few discussion sessions will be dedicated
to FreeBSD internals.
– Most of the discussion sessions are very important and
they will appear in the exams and homeworks.
09/29/2006
ecs150 Fall 2006
22
Course Requirements

48%: Programming Assignments
– teamwork: 1~2 students (no more than 2!)
– 4 Assignments (10%, 18%, 12%, 8%)
– HW#1 is out (check the website).
16%: In-class open-book midterm
 32%: open-book final
 04%: Participation of Lectures and
Discussion sessions.

– Deducted if missed more than TWO sessions.
09/29/2006
ecs150 Fall 2006
23
Grading
I will give +/- grades.
 possible grading :

–
–
–
–
09/29/2006
A: >= 92
B: >= 82
C: >= 72
D: >= 62
A-: >= 89
B-: >= 79
C-: >= 69
D-: >= 59
ecs150 Fall 2006
B+: >= 85
C+: >= 75
D+: >= 65
24
FreeBSD

You need to have access to a FreeBSD
environment
– I386, QEMU, VMware, VirtualPC
09/29/2006
ecs150 Fall 2006
25
virtualization
Unmodified Applications
Unmodified OS (XP, Linux, Solaris, or, FreeBSD)
VirtualPC
Standard Full Virtualization  e.g., WindowXP
Hardware
09/29/2006
ecs150 Fall 2006
26
09/29/2006
ecs150 Fall 2006
27
FreeBSD
Unmodified OS (XP, Linux, Solaris, or, FreeBSD)
API
Unmodified Applications
Virtual PC or VMware
Hardware
09/29/2006
ecs150 Fall 2006
28
Programmable Virtualization
Unmodified Applications
“Programmable” Full Virtualization
DLVM
API
Unmodified OS (XP, Linux, Solaris, or, FreeBSD)
DLVM
Hardware
09/29/2006
ecs150 Fall 2006
29
The Structure of OS
The Kernel
 Processes and Threads
 The System Call Interface

09/29/2006
ecs150 Fall 2006
30
What is “kernel”?
09/29/2006
ecs150 Fall 2006
31
Kernel
The basic OS services
 Which services? What is it doing?
 Let’s check a couple examples

09/29/2006
ecs150 Fall 2006
32
….what are the basic services?
OS
09/29/2006
ecs150 Fall 2006
33
FreeBSD Kernel:
Services
Timer/clock, descriptor, process
 Memory Management: paging/swapping
 I/O control and terminal
 File System
 Inter-process communication
 Networking

09/29/2006
ecs150 Fall 2006
34
09/29/2006
ecs150 Fall 2006
35
Kernel of SVR2 of AT&T Unix
user
User programs
trap
Libraries
System Call Interface
File subsys
kernel
Buffer cache
Process
Control
Subsys.
Inter-Process
Communication
Scheduler
Character block
device drivers
Memory
Management
Hardware Control
hardware
09/29/2006
ecs150 Fall 2006
36
Kernel & Processes

The concept of “application process”
09/29/2006
ecs150 Fall 2006
37
Kernel and User Space
Process FOO
Memory
space for this
process
System call
(or trap into the kernel)
program
conceptually
Process FOO
in the Kernel
System Call
Kernel Resources
(disk or IO devices)
09/29/2006
ecs150 Fall 2006
38
Processes
> ps
PID TTY
TIME CMD
2910 pts/4
0:00 tcsh
> ps -ef
UID
PID PPID C
root
0
0 0
root
1
0 0
root
2
0 0
root
3
0 0
root
223
1 0
root
179
1 0
root
273
1 0
root
56
1 0
root
58
1 0
root
106
1 0
root
197
1 0
root
108
1 0
root
168
1 0
root
118
1 0
root
159
1 0
09/29/2006
STIME TTY
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
Sep 25 ?
TIME CMD
0:01 sched
0:00 /etc/init 0:00 pageout
0:01 fsflush
0:00 /usr/lib/utmpd
0:00 /usr/sbin/cron
0:00 /usr/lib/saf/sac -t 300
0:00 /usr/lib/devfsadm/devfseventd
0:00 /usr/lib/devfsadm/devfsadmd
0:00 /usr/sbin/rpcbind
0:01 /usr/sbin/nscd
0:00 /usr/sbin/keyserv
0:00 /usr/sbin/syslogd
0:00 /usr/lib/netsvc/yp/ypbind
0:00 /usr/lib/autofs/automountd
ecs150 Fall 2006
39
09/29/2006
ecs150 Fall 2006
40
09/29/2006
ecs150 Fall 2006
41
Memory Structure
High
Arguments
Return address
String
Growth
Prev. frame pointer
Local variables
Stack
Pointer
Low
09/29/2006
Stack
Growth
ecs150 Fall 2006
42
Memory Structure
High
foo
Arguments
bar
Return address
String
Growth
Prev. frame pointer
Local variables
Stack
Pointer
Low
09/29/2006
Stack
Growth
ecs150 Fall 2006
bar( )
{……}
foo( )
{ ……
call bar( );
……
}
43
Per-process
Kernel Stack
User-stack
Procedure Call
 on the same
User Stack
Disk
Heap
Initialized data
Initialized data
text
a.out header
text
Memory
a.out magic number
09/29/2006
ecs150 Fall 2006
44
Per-process
Kernel Stack
User-stack
System Call
 on a different stack
Disk
Heap
Initialized data
Initialized data
text
a.out header
text
Memory
a.out magic number
09/29/2006
ecs150 Fall 2006
45
System Calls

Not a “normal” procedure call

It is a software trap “into” the kernel
– Hardware interrupt
– Hardware trap
– Software trap
09/29/2006
ecs150 Fall 2006
46
System Entry

Hardware interrupt
– Asynchronous, might not relate to the context
of the executing process

Hardware trap
– Related to the current executing process, e.g.,
divided by zero

Software-initiated trap
– Instructions, int
09/29/2006
ecs150 Fall 2006
47
System Entry Vector
fork()
Trap
:
:
09/29/2006
ecs150 Fall 2006
48
System Entry Vector
fork()
Trap
Reserved for
loadable system calls
:
:
XYZ()
09/29/2006
ecs150 Fall 2006
49
kldload
fork()
Trap
XYZ()
:
:
09/29/2006
ecs150 Fall 2006
50
Announcement
This Friday  discussion
 Next Monday  two regular lectures
 Office hour on Friday cancelled…


Felix is flying tomorrow to Pittsburgh to
attend a NSF meeting
09/29/2006
ecs150 Fall 2006
51
OS Architecture
09/29/2006
ecs150 Fall 2006
52
Process
Process – a program in execution
 A process includes:

– program counter
– stack
– data section
09/29/2006
ecs150 Fall 2006
53
Context Switching
09/29/2006
ecs150 Fall 2006
54
Scheduling &
Context Switching
Running
Blocked
09/29/2006
Running
Ready
Blocked
Running
Ready
Blocked
ecs150 Fall 2006
Running
Ready
Blocked
Ready
55
States of a Process

Running, Blocked, and Ready
Running
Waiting
09/29/2006
Ready
ecs150 Fall 2006
56
09/29/2006
ecs150 Fall 2006
57
1
RR
0
0
:
:
.
1
0
1
09/29/2006
256 different priorities
64 scheduling classes
0~63
64~127
128~159
160~223
224~255
ecs150 Fall 2006
bottom-half kernel (interrupt)
top-half kernel
real-time user
timeshare
idle
58
Kernel Processes

idle, swapper, vmdaemon, pagedaemon,
pagezero, bufdaemon, syncer, ktrace, vnlru,
random, g_event, g_up, g_down
/usr/src/sys/kern/kern_idle.c
/usr/src/sys/kern/init_main.c
/usr/src/sys/vm/vm_zeroidle.c
/usr/src/sys/kern_ktrace.c
/usr/src/sys/dev/random/randomsoft_dev.c
09/29/2006
ecs150 Fall 2006
59
09/29/2006
ecs150 Fall 2006
60
1
RR
0
0
:
:
.
1
0
1
09/29/2006
256 different priorities
64 scheduling classes
0~63
64~127
128~159
160~223
224~255
ecs150 Fall 2006
bottom-half kernel (interrupt)
top-half kernel
real-time user
timeshare
idle
61
Running
Waiting
09/29/2006
Ready
ecs150 Fall 2006
62
4.4BSD Process Structure
(/usr/src/sys/sys/proc.h)
Process
Structure
process group
session
process credential
user credential
VM space
region list
file descriptors
file entries
resource limits
statistics
signal actions
machine-dependent
process information
09/29/2006
process control block
process kernel stack
ecs150 Fall 2006
}
user structure
63
FreeBSD User Structure
/*
* Per process structure containing data that isn’t needed in core when the
* process isn’t running (esp. when swapped out).
This structure may or may not
* be at the same kernel address in all processes.
*/
struct user {
struct pcb u_pcb;
struct sigacts u_sigacts;
/* p_sigacts points here (use it!) */
struct pstats u_stats;
/* p_stats points here (use it!) */
/* Remaining fields only for core dump and/or ptrace—
not valid at other times! */
struct kinfo_proc u_kproc;
/* proc + eproc */
struce md_coredump u_md;
/* machine dependent glop */
}
09/29/2006
ecs150 Fall 2006
64
5.x Kernel
09/29/2006
ecs150 Fall 2006
65
1
RR
0
KSE:
Kernel Scheduling Entity
 kernel-level thread
0
:
:
.
1
0
1
09/29/2006
256 different priorities
64 scheduling classes
0~63
64~127
128~159
160~223
224~255
ecs150 Fall 2006
bottom-half kernel (interrupt)
top-half kernel
real-time user
timeshare
idle
66
09/29/2006
ecs150 Fall 2006
67
What is a thread?
09/29/2006
ecs150 Fall 2006
68
Process and Thread
(abstraction and abstraction)


An execution instance of a program.
Threads and resources
– a thread is a control entity of the logical flow in the
program.
– A sequential program needs only one single thread
because it only need to be controlled by one entity.
– Can you distinguish a process and a thread?

User mode versus (trap into the) Kernel mode.
09/29/2006
ecs150 Fall 2006
69
A Program and Threads
J=0;
(shared)
variables
If (j==0)
J=100
09/29/2006
ecs150 Fall 2006
70
Threads
Heavy-weight Process versus Light-weight
Thread
 User-level versus Kernel-level

09/29/2006
ecs150 Fall 2006
71
a Process and a Thread

A tradition process contains one thread (i.e,
one flow of control) and the resources (user
or kernel).
Resources
No obvious
concurrency
within a process
09/29/2006
ecs150 Fall 2006
72
Process and Threads

A Process can contain more than one
threads sharing the resources (user or
kernel).
Resources
09/29/2006
ecs150 Fall 2006
73
Threads
User-level
 Kernel-level

09/29/2006
ecs150 Fall 2006
74
Threads

Blocking/Synchronous I/O
– One thread blocks all others???
– “Block one  block all”
09/29/2006
ecs150 Fall 2006
75
CPU chip
register file
ALU
system bus
memory bus
main
memory
I/O
bridge
bus interface
I/O bus
USB
controller
mouse keyboard
09/29/2006
graphics
adapter
disk
controller
Expansion slots for
other devices such
as network adapters.
monitor
ecs150 Fall 2006
disk
76
CPU chip
register file
CPU initiates a disk read by writing a
command, logical block number, and
destination memory address to a port
(address) associated with disk controller.
ALU
main
memory
bus interface
I/O bus
USB
controller
mouse keyboard
09/29/2006
graphics
adapter
disk
controller
monitor
ecs150 Fall 2006
disk
77
CPU chip
register file
Disk controller reads the sector and
performs a direct memory access (DMA)
transfer into main memory.
ALU
main
memory
bus interface
I/O bus
USB
controller
mouse keyboard
09/29/2006
graphics
adapter
disk
controller
monitor
ecs150 Fall 2006
disk
78
CPU chip
When the DMA transfer completes, the
disk controller notifies the CPU with an
interrupt (i.e., asserts a special “interrupt”
pin on the CPU)
register file
ALU
main
memory
bus interface
I/O bus
USB
controller
mouse keyboard
09/29/2006
graphics
adapter
disk
controller
monitor
ecs150 Fall 2006
disk
79
Asynchronous I/O

How to deal with multiple I/O operations concurrently?
For example: wait for a keyboard input, a mouse click and input
from a network connection.

Select system call
int select(int n, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);

Poll system call (same idea, different implementation)
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
struct pollfd { int fd;
short events;
short revents;
};

/* file descriptor */
/* requested events */
/* returned events */
For more info see http://www.kegel.com/c10k.html
09/29/2006
ecs150 Fall 2006
80
/usr/src/sys/kern/vfs_aio.c
Solaris, Linux 2.6, FreeBSD pp230~231

POSIX P1003.4 Asynchronous I/O interface functions:
– aio_cancel:cancel asynchronous read and/or write
requests
– aio_error:retrieve Asynchronous I/O error status
– aio_fsync:asynchronously force I/O completion, and sets
errno to ENOSYS
– aio_read:begin asynchronous read
– aio_return:retrieve return status of Asynchronous I/O
operation
– aio_suspend:suspend until Asynchronous I/O Completes
– aio_write:begin asynchronous write
– lio_listio:issue list of I/O requests
09/29/2006
ecs150 Fall 2006
81
Security Problem!!
09/29/2006
ecs150 Fall 2006
82
User-Level Threads

Now, you should get the basic idea about
how to avoid “block one  block all”….
09/29/2006
ecs150 Fall 2006
83
Threads

User-level
– Kernel is unaware of multiple threading within
the same process. (Conceptually, the kernel
pretends one “kernel” thread per process.)

Kernel-level
– Kernel is fully aware of multiple kernel threads
within the same process, and therefore, it will
provide “related kernel services”.
09/29/2006
ecs150 Fall 2006
84
User and Kernel Threads

One thread per process or multiple thread per
process
UTS
UserLevelTs
KTS
09/29/2006
Which approach is better???
ecs150 Fall 2006
KernelTs
KTS
85
User-Level Threads
A small OS in the user-space to manage the
threads.
 The kernel is totally unaware how many
threads the process currently has.

09/29/2006
ecs150 Fall 2006
86
09/29/2006
ecs150 Fall 2006
87
Why Multiple Threads??
09/29/2006
ecs150 Fall 2006
88
Responsiveness
 Resource Sharing
 Economy
 Utilization of MP Architectures

09/29/2006
ecs150 Fall 2006
89
fork()
Process A
Global
Variables
fork()
Process B
Code
Global
Variables
Stack
Code
Stack
09/29/2006
ecs150 Fall 2006
90
Parent
fork()
execve()
Global
Variables
Child
Code
Stack
09/29/2006
Child
Global
Variables
Global
Variables
Code
Code
Stack
Stack
ecs150 Fall 2006
91
pthread_create()
Process A
Thread 1
Global
Variables
pthread_create()
Code
Process A
Thread 2
Stack
Stack
09/29/2006
ecs150 Fall 2006
92
Creation Time Difference

Because threads are by definition lightweight, they can be created
more quickly that “heavy” processes:
– Sun Ultra5, 320 Meg Ram, 1 CPU
 94 forks()/second
 1,737 threads/second (18x faster)
– Sun Sparc Ultra 1, 256 Meg Ram , 1 CPU
 67 forks()/second
 1,359 threads/second (20x faster)
– Sun Enterprise 420R, 5 Gig Ram, 4 CPUs
 146 forks()/second
 35,640 threads/second (244x faster)
– Linux 2.4 Kernel, .5 Gig Ram, 2 CPUs
 1,811 forks()/second
 227,611 threads/second (125x faster)
09/29/2006
ecs150 Fall 2006
93
09/29/2006
ecs150 Fall 2006
94
User Threads

Thread management done by user-level
threads library

Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
09/29/2006
ecs150 Fall 2006
95
Kernel Threads
Supported by the Kernel
 Examples
- Windows 95/98/NT/2000
- Solaris
- Linux

09/29/2006
ecs150 Fall 2006
96
Solaris 2 Threads
09/29/2006
ecs150 Fall 2006
97
Linux Threads
Linux refers to them as tasks rather than
threads.
 Thread creation is done through clone()
system call.
 clone() allows a child task to share the
address space of the parent task (process)

09/29/2006
ecs150 Fall 2006
98
Open new
connection
Application
(Web Server)
Thread class:
run
Programming Language
(Java)
Lib call:
pthread_create
Programming Library
(POSIX thread)
System call: Clone
09/29/2006
Operating System
(Linux Native Thread)
ecs150 Fall 2006
99
KT vs. UT

pros and cons?

BTW, how about FreeBSD?
09/29/2006
Threads
ecs150 Fall 2006
100
09/29/2006
ecs150 Fall 2006
101
UTS + KTS

Two independent schedulers:
User Space
Process
Process
Scheduler
Process
Scheduler
Scheduler
OS Kernel
processor
09/29/2006
processor
ecs150 Fall 2006
processor
102
KTS

One single scheduler:
User Space
Process
Process
Process
Scheduler
OS Kernel
processor
09/29/2006
processor
ecs150 Fall 2006
processor
103
KT vs. UT
UTS
Kernel Interface
KTS
09/29/2006
ecs150 Fall 2006
104
Solaris 2 Threads
mapping but NOT
coordinating
09/29/2006
ecs150 Fall 2006
105
Questions to ask

Why do we need “coordination”?
– kernel-support user-level threads

What do we need in this “K/U
coordination”?
– extended system call API

Is this only good for SMP?
– How about single processor?
– How about NPU? (e.g., IXP-2400)
09/29/2006
ecs150 Fall 2006
106
UTS
Library
Notify
I/O
events
Notify
new
decision
Kernel
KTS
09/29/2006
ecs150 Fall 2006
107
Is this a problem?
User Space
Kernel Space
syscall
I/O request
interrupt
Hardware
I don’t know how many UT’s you
have up there?
I can guess but I am not sure that is
exactly what you want!
09/29/2006
ecs150 Fall 2006
108
Scheduler Activations
CPU time wasted
User Space
Kernel Space
syscall
I/O request
interrupt
I don’t know how many
UT’s you have up there?
Hardware
CPU used
User Space
Kernel Space
upcall
upcall
Hardware
09/29/2006
ecs150 Fall 2006
109
Scheduler Activations


First proposed by [Anderson et al. 91]
Idea: cooperation between schedulers should take
place in both directions



User scheduler uses system calls
Kernel scheduler should use upcalls!
Upcalls
– Notify the user-level of kernel scheduling events

Activations
– A new structure to support upcalls (~kernel thread)
– As many running activations as processors
– Kernel controls activation creation and destruction
09/29/2006
ecs150 Fall 2006
110
One Model (FreeBSD 5.x)
UTS - threads
Library
SA SA
Notify
I/O
events
Notify
new
decision
SA SA
KTS – virtual CPU’s
09/29/2006
ecs150 Fall 2006
Kernel
111
09/29/2006
ecs150 Fall 2006
112
I/O happens for Thread
User Program
(2)
User-Level
Runtime System
(3)
(1)
(A)
(4)
(B)
Add
Processor
Add
Processor
Operating System Kernel
Processors
09/29/2006
ecs150 Fall 2006
113
A’s Thread has blocked on an I/O request
User Program
(2)
User-Level
Runtime System
(3)
(1)
(4)
B
(A)
(B)
Operating
System Kernel
(C)
A’s thread has blocked
Processors
09/29/2006
ecs150 Fall 2006
114
A’s Thread I/O completed
User Program
(2)
(3)
User-Level
Runtime System
(1)
(1)
(A)
(B)
Operating
System Kernel
(C)
(4)
(D)
A’s thread and B’s
Thread can continue
Processors
“the upcall stack problem”
09/29/2006
ecs150 Fall 2006
115
A’s Thread resumes on Scheduler Activation D
User Program
(2)
(3)
(1)
User-Level
Runtime System
(C)
Operating
System Kernel
(1)
(4)
(D)
A’s thread and B’s
Thread can continue
Processors
09/29/2006
ecs150 Fall 2006
116
09/29/2006
ecs150 Fall 2006
117
One Model (FreeBSD 5.x)
UTS - threads
Library
SA SA
Notify
I/O
events
Notify
new
decision
SA SA
KTS – virtual CPU’s
09/29/2006
ecs150 Fall 2006
Kernel
118
FreeBSD 5.x

Kernel Scheduling Entity (KSE)
– a virtual CPU
– When “anything” changes regarding the service
of this KSE to the process, this KSE is
“unassigned” as the kernel doesn’t know what
other threads might be there!!
– Upcall to the UTS (via KSE mailbox).
– UTS uses both KSE mailbox and Thread
mailbox to handle/decide.
09/29/2006
ecs150 Fall 2006
119
09/29/2006
ecs150 Fall 2006
120
09/29/2006
ecs150 Fall 2006
121
#include <sys/types.h>
#include <sys/kse.h>
int kse_create(struct kse_mailbox *mbx,
int newsgroup);
int kse_exit(void);
int kse_release(struct timespec *timeout);
int kse_wakeup(struct kse_mailbox *mbx);
int kse_thr_interrupt(struct
kse_thr_mailbox
*tmbx);
09/29/2006
ecs150 Fall 2006
122
struct kse_mailbox {
int
km_version;
struct kse_thr_mailbox
*km_curthread;
struct kse_thr_mailbox
*km_completed;
sigset_t
km_sigscaught;
unsigned int
km_flags;
kse_func_t
*km_func;
/* UTS function */
stack_t
km_stack;
/* UTS context */
void
*km_udata; /* For use by the UTS */
struct timespec
km_timeofday; /* Time of day */
int
km_quantum;
int
km_spare[8];
};
09/29/2006
ecs150 Fall 2006
123
struct kse_thr_mailbox {
ucontext_t
unsigned int
struct kse_thr_mailbox
void
unsigned int
unsigned int
int
};
09/29/2006
tm_context;
tm_flags;
*tm_next;
*tm_udata;
tm_uticks;
tm_sticks;
tm_spare[8];
ecs150 Fall 2006
/*
/*
/*
/*
User and machine context */
Thread flags */
Next thread in list */
For use by the UTS */
124
upcalls
ksec_new
 ksec_preempt
 ksec_block
 ksec_unblock

09/29/2006
ecs150 Fall 2006
125
UTS
Library
ksec_new
ksec_preempt
ksec_block
ksec_unblock
kse_create
kse_exit
kse_release
kse_wakeup
kse_thr_interrupt
Kernel
KTS
09/29/2006
ecs150 Fall 2006
126
KSE Internal
KSE
 KSEG
 KSEC

09/29/2006
ecs150 Fall 2006
127
09/29/2006
ecs150 Fall 2006
128
09/29/2006
ecs150 Fall 2006
129
09/29/2006
ecs150 Fall 2006
130
09/29/2006
ecs150 Fall 2006
131
Linux VPI
(Virtual Processor Interface)

Experimental/Research Prototype
– Benson/Butner/Padden/Fedosov
– Scheduler activation in Linux Kernel 2.4.18
09/29/2006
ecs150 Fall 2006
132
09/29/2006
ecs150 Fall 2006
133
One Model (FreeBSD 5.x)
UTS - threads
Library
SA SA
Notify
I/O
events
Notify
new
decision
SA SA
KTS – virtual CPU’s
09/29/2006
ecs150 Fall 2006
Kernel
134
Kernel Processes
(table 3.1 page 50)


idle, swapper, vmdaemon, pagedaemon,
pagezero, bufdaemon, syncer, ktrace, vnlru,
random, g_event, g_up, g_down
“Kernel processes execute code that is
complied into the kernel’s load image and
operate with the kernel’s privileged
execution code.”
09/29/2006
ecs150 Fall 2006
135
FreeBSD Kernel
09/29/2006
ecs150 Fall 2006
136
FreeBSD Kernel
09/29/2006
ecs150 Fall 2006
137
Kernel and User Space
Process FOO
Memory
space for this
process
System call
(or trap into the kernel)
program
conceptually
Process FOO
in the Kernel
System Call
Kernel Resources
(disk or IO devices)
09/29/2006
ecs150 Fall 2006
138
What is “micro-kernel”?
09/29/2006
ecs150 Fall 2006
139
….what are the basic services?
OS
09/29/2006
ecs150 Fall 2006
140
An Alternative: Micro-Kernel
Message Passing versus Optimized Procedure Calls
09/29/2006
ecs150 Fall 2006
141
Midterm

November 1st of 2006 in class.
09/29/2006
ecs150 Fall 2006
142
09/29/2006
ecs150 Fall 2006
143
TA Office Hours
Wed 12-1
 Thu 4-5:30

This week:
 Wed 12-1 (3104), 3:30-4:30 (2231 Kemper)
 Thu 3-5 (3104)

09/29/2006
ecs150 Fall 2006
144
System calls (HW#1)




int 80h
*.s (not in /usr/src/sys/kern/*)
*.c (not in /usr/src/sys/kern/*)
sysent/sysvec function pointer 
lkmnosys()
09/29/2006
ecs150 Fall 2006
145
/usr/src/sys/i386/i386/*.*
09/29/2006
ecs150 Fall 2006
146
Micro versus Monolithic
What is the real difference between these
two models??
 First Brainstorming!!

09/29/2006
ecs150 Fall 2006
147
Micro versus Monolithic
Is this really relevant?
 Advantages of Micro Kernels

– Modules (Architectural Cleanness), Adaptive,
Small/Quick-to-Boot,…

We did learn some lessons
– We have to consider the “users” &
“applications”, and make a new engineering
design decision.
09/29/2006
ecs150 Fall 2006
148
FreeBSD Kernel: Size

689794 machine independent LOC
108346 machine dependent LOC
846525 device driver LOC

Comparing:


–
–
–
–
Windows 3.1 ~ 6M LOC
Windows 2000 ~ 30-50M LOC
Windows XP ~ 45M LOC
Netscape ~ 7M LOC
09/29/2006
ecs150 Fall 2006
149
OS Design

Architectural Design
– how to organize the user and kernel resources?

Module Control Design
– how to design a control mechanism to protect the OS
resource integrity?

Interface Design
– how to let user programs access the resources easier?
(e.g., system call interface, multi-threaded interface).
09/29/2006
ecs150 Fall 2006
150
What is “Process”?
 What is “System Call”?
 What is “Kernel”?

09/29/2006
ecs150 Fall 2006
151