



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Notes; Class: Computer Organization; Subject: Computer Science and Engineering ; University: University of Nebraska - Lincoln; Term: Unknown 1989;
Typology: Study notes
1 / 7
This page cannot be seen from the preview
Don't miss anything!




2
3
4
Physical control flow
Time
5
data arrives from a disk or a network adapter. Instruction divides by zero User hits ctl-c at the keyboard System timer expires
6
Mechanisms for exceptional control flow exists at all levels of a computer system.
exceptions change in control flow in response to a system event (i.e., change in system state) Combination of hardware and OS software
Process context switch Signals Nonlocal jumps (setjmp/longjmp) Implemented by either: OS software (context switch and signals). C language runtime library: nonlocal jumps.
7
System context for exceptions
Local/IO Bus
Memory
Network adapter
IDE disk controller
Video adapter
Display Network
Processor Interrupt controller
controller
SCSI bus
Serial port controller
Parallel port controller
Keyboard controller
Keyboard Mouse Modem Printer
disk disk CDROM
8
Exceptions
An exception is a transfer of control to the OS in response to some event (i.e., change in processor state)
User Process OS
exception exception processing by exception handler
exception return (optional)
event current next
9
Interrupt Vectors
Each type of event has a unique exception number k Index into jump table (a.k.a., interrupt vector) Jump table entry k points to a function (exception handler). Handler k is called each time exception k occurs.
interrupt vector 0 1 2 ...
n-
code for exception handler 0
code for exception handler 1
code for exception handler 2
code for exception handler n-
...
Exception numbers
10
Asynchronous Exceptions (Interrupts)
Caused by events external to the processor
Examples:
hitting ctl-c at the keyboard arrival of a packet from a network arrival of a data sector from a disk
hitting the reset button
hitting ctl-alt-delete on a PC
11
Synchronous Exceptions
Caused by events that occur as a result of executing an instruction:
Intentional Examples: system calls, breakpoint traps, special instructions Returns control to “next” instruction
Unintentional but possibly recoverable Examples: page faults (recoverable), protection faults (unrecoverable). Either re-executes faulting (“current”) instruction or aborts.
unintentional and unrecoverable Examples: parity error, machine check. Aborts current program
12
Trap Example
User Process OS
exception Open file
return
int pop
Opening a File
Function open executes system call instruction int
0804d070 <__libc_open>:
... 804d082: cd 80 int $0x 804d084: 5b pop %ebx ...
19
Context Switching
Processes are managed by a shared chunk of OS code
called the kernel
Control flow passes from one process to another via a
context switch.
Process A code
Process B code user code
kernel code user code
kernel code
user code
Time
context switch
context switch
20
Private Address Spaces
Each process has its own private address space.
kernel virtual memory (code, data, heap, stack)
memory mapped region for shared libraries
run-time heap (managed by malloc)
user stack (created at runtime)
0 unused
%esp (stack pointer)
memory invisible to user code
brk
0xc
0x
0x
read/write segment (.data, .bss) read-only segment (.init, .text, .rodata)
loaded from the executable file
0xffffffff
21
fork : Creating new processes
int fork(void)
if (fork() == 0) { printf("hello from child\n"); } else { printf("hello from parent\n"); }
Fork is interesting (and often confusing) because it is called once but returns twice
22
Fork Example #
void fork1() { int x = 1; pid_t pid = fork(); if (pid == 0) { printf("Child has x = %d\n", ++x); } else { printf("Parent has x = %d\n", --x); } printf("Bye from process %d with x = %d\n", getpid(), x); }
Key Points
Distinguish parent from child by return value from fork
Including shared output file descriptor Relative ordering of their print statements undefined
23
Fork Example #
void fork2() { printf("L0\n"); fork(); printf("L1\n"); fork(); printf("Bye\n"); }
Key Points
Bye
Bye
Bye
Bye
24
Fork Example #
void fork3() { printf("L0\n"); fork(); printf("L1\n"); fork(); printf("L2\n"); fork(); printf("Bye\n"); }
Key Points
Bye
Bye
Bye
Bye
Bye
Bye
Bye
Bye
25
Fork Example #
void fork4() { printf("L0\n"); if (fork() != 0) { printf("L1\n"); if (fork() != 0) { printf("L2\n"); fork(); } } printf("Bye\n"); }
Key Points
Bye
Bye
Bye
Bye
26
Fork Example #
void fork5() { printf("L0\n"); if (fork() == 0) { printf("L1\n"); if (fork() == 0) { printf("L2\n"); fork(); } } printf("Bye\n"); }
Key Points
L0 Bye
Bye
Bye
Bye
27
exit : Destroying Process
void exit(int status)
Normally return with status 0
void cleanup(void) { printf("cleaning up\n"); }
void fork6() { atexit(cleanup); fork(); exit(0); }
28
Zombies
Idea
Various tables maintained by OS
Living corpse, half alive and half dead
Reaping
What if Parent Doesn’t Reap?
E.g., shells and servers
29
linux> ./forks 7 & [1] 6639 Running Parent, PID = 6639 Terminating Child, PID = 6640 linux> ps PID TTY TIME CMD 6585 ttyp9 00:00:00 tcsh 6639 ttyp9 00:00:03 forks 6640 ttyp9 00:00:00 forks
Zombie
Example
void fork7() { if (fork() == 0) { / Child / printf("Terminating Child, PID = %d\n", getpid()); exit(0); } else { printf("Running Parent, PID = %d\n", getpid()); while (1) ; / Infinite loop / } }
30
linux> ./forks 8 Terminating Parent, PID = 6675 Running Child, PID = 6676 linux> ps PID TTY TIME CMD 6585 ttyp9 00:00:00 tcsh 6676 ttyp9 00:00:06 forks 6677 ttyp9 00:00:00 ps linux> kill 6676 linux> ps PID TTY TIME CMD 6585 ttyp9 00:00:00 tcsh 6678 ttyp9 00:00:00 ps
Nonterminating
Child
Example
void fork8() { if (fork() == 0) { / Child / printf("Running Child, PID = %d\n", getpid()); while (1) ; / Infinite loop / } else { printf("Terminating Parent, PID = %d\n", getpid()); exit(0); } }
37
Summarizing
Exceptions
Processes
38
Summarizing (cont.)
Spawning Processes
One call, two returns
Terminating Processes
One call, no return
Reaping Processes
Replacing Program Executed by Process
One call, (normally) no return