Transcript ppt

Last Time:
OS & Computer Architecture



Modern OS Functionality (brief review)
Architecture Basics
Hardware Support for OS Features
1
Last Time: Services & Hardware
Support
OS Service
Hardware Support
Protection
Interrupts
Traps
I/O
Synchronization
Virtual Memory
Scheduling
2
This Time:
OS Organizations & Processes


OS Organizations (kernels)
Processes
3
Monolithic Kernel


Classic
UNIX
approach,
Linux
Everything
in kernel
+ Fast
- Risky
4
Layered OS Design

“THE” operating system

Dijkstra
+ Modular, simple,
portable, easy to
design/debug
- Communication
overhead, copying,
bookkeeping
5
The Microkernel Approach

Goal: Minimize contents of kernel

Why?
6
Microkernel: Motivation

Minimize contents of kernel:

Reduces risk of crashing OS



Put as much functionality as possible in user-level
processes
Simplifies extension, modification &
customization
First μ-kernel: Hydra (CMU)

Current systems: Mach (also CMU), by Rick
Rashid et al. (now head of MSR)
7
μ-kernels vs. Monolithic Kernels

Past conventional wisdom: (1990’s)



Today: much faster computers


Mach – beautiful research idea but “failed” in practice
 Too slow!
Linux – ugly, monolithic, but fast
Mach: fast enough (Mac OS X)
Reliability, simplicity, robustness now more
important than performance
8
OS Structures & Processes


OS Organizations (kernels)
Processes
9
Process


OS manages variety of activities:
 User programs, batch jobs, command scripts
 Daemons: print spoolers, name servers, file servers,
etc.
Each activity encapsulated in process:
 Context (PC, registers, etc.) required for activity to
run
10
Process != program



Process is a running program
One program may comprise many
processes
Many processes may run same program
11
OS and Processes

OS manages & schedules processes





Creation, deletion
Resource allocation (e.g., CPU, memory)
Suspension & resumption
Inter-process communication
Synchronization
12
Processes





Process Concept
Process States
Process Scheduling
Process Management
Interprocess Communication
13
Process Concept


Process – program in execution
Process includes:





text section: program code
current activity: program counter, contents in
registers
stack
data section
heap
14
Processes





Process Concept
Process States
Process Scheduling
Process Management
Interprocess Communication
15
Process States





New
 Process being created
Running
 Instructions being executed
Waiting
 Process waiting for some event to occur
Ready
 Process waiting to be assigned to a processor
Terminated
 (duh)
16
Process State Diagram

Transitions:



Program
actions
(system calls)
OS actions
(scheduling)
External
events
(interrupts)
17
Process Execution Example
void main() {
printf (“Hello world\n”);
}
1.
2.
3.
4.
5.
6.
7.
New
Ready
Running
Waiting for I/O
Ready
Running
Terminated
18
Process Data Structures


Process Control Block:
 Tracks state
 OS allocates, places on queue
 OS deallocates on termination
Lots of info:
 Process state
 Program counter
 CPU registers
 Memory-management
information
 Accounting information
 I/O status information
19
Processes





Process Concept
Process States
Process Scheduling
Process Management
Interprocess Communication
20
Process Scheduling Queues

Job queue


Ready queue


Set of processes residing in main memory ready &
waiting to execute
Device queues



Set of all processes in system
Set of processes waiting for I/O device
One per device
Process migration between the various queues.
21
Process Queues Example
22
CPU Scheduling
time
23
PCBs and Hardware State


Switching processes: context switch
Relatively expensive


Start:



Time between switches (quantum) must be
long enough to amortize this cost
OS picks ready process
Loads register values from PCB
Stop:

OS saves registers into PCB
24
Process Scheduling
Queuing-diagram
representation:
25
Processes





Process Concept
Process States
Process Scheduling
Process Management
Interprocess Communication
26
Process Creation

One process can create other processes



Creator = parent, new processes = children
Parent can wait for child to complete,
or continue in parallel
UNIX: fork() used to create child processes


Copies variables & registers from parent to child
Only difference between parent & child: return value
 Parent: returns process id of child
 Child: returns 0
27
Process Creation Example


Logging into UNIX creates shell process
Every command typed into shell:



Child of shell process (spawned by fork)
Executes command via exec
Example:




Type “emacs”
OS forks new process
exec executes emacs
If followed by “&”, runs in parallel;
otherwise, waits until done
28
Example UNIX Program: Fork
29
Fork Example: What happened?
Parent process:
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
int main(){
int parentID = getpid();
char prgname[1024];
gets(prgname);
int cid = fork();
if(cid == 0){
execlp(prgname, prgname, 0);
printf(“I did not find program %s\n“,
prgname);
}
else{
sleep(1);
waitpid(cid, 0, 0);
printf("Program %s is finished. \n");
}
return 0; }
Child process:
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
int main(){
int parentID = getpid();
char prgname[1024];
gets(prgname);
int cid = fork();
if(cid == 0){
execlp(prgname, prgname, 0);
printf(“I did not find program %s\n“,
prgname);
}
else{
sleep(1);
waitpid(cid, 0, 0);
printf("Program %s is finished. \n");
}
return 0; }
30
Parent & Child Process
#include <unistd.h>
#include <stdio.h>
int main(){
int pid;
pid = fork();
if(pid == 0){
printf("Child: My PID = %d\n", getpid());
printf("Child: Running...\n");
sleep(20);
printf("Child: Done sleeping, returning.\n");
}
else{
printf("Parent: My PID = %d\n", getpid());
printf("Parent: Running...\n");
sleep(10);
printf("Parent: Done sleeping, returning.\n");
}
return 0;
}
31
Process Termination


On termination, OS reclaims all resources
assigned to process
UNIX processes:


Can terminate self via exit system call
Can terminate child via kill system call
32
Example: Process Termination
33
Processes





Process Concept
Process States
Process Scheduling
Process Management
Interprocess Communication
34
Cooperating Processes


Cooperating processes: one process can
affect or be affected by other processes
Advantages:



Can improve performance by overlapping
activities or performing work in parallel
Can enable simpler program design
Simplifies distribution

Processes can live on different machines
35
Interprocess Communication
Processes communicate in one of two ways:

Message passing:



Send and receive information
Numerous means: sockets, pipes, etc.
Shared memory:



Establish mapping to named memory object
Use mmap
Fork processes that share this structure
36
Process Summary


Process = unit of execution
Represented by Process Control Blocks


Process state:


New, Ready, Waiting, Running, or Terminated
One running process at a time (on a uniprocessor)


Contain process state, registers, etc.
Context switch when changing process executing on CPU
Communicate by message passing or shared memory
37