CS423: Operating Systems Design
Tian anyin yin Xu Xu
CS 423 Operating System Design: The Kernel Abstraction
* Thanks for Prof. Adam Bates for the slides.
CS 423 Operating System Design: The Kernel Abstraction Tian anyin - - PowerPoint PPT Presentation
CS 423 Operating System Design: The Kernel Abstraction Tian anyin yin Xu Xu * Thanks for Prof. Adam Bates for the slides. CS423: Operating Systems Design Logistics MP 0 due is postponed to next Tue. C4 Paper Summary submitted to
CS423: Operating Systems Design
* Thanks for Prof. Adam Bates for the slides.
CS423: Operating Systems Design
2
CS423: Operating Systems Design
3
CS423: Operating Systems Design
4
CS423: Operating Systems Design
5
CS 423: Operating Systems Design
6
CS423: Operating Systems Design
7
CS423: Operating Systems Design
8
CS423: Operating Systems Design
9
CS423: Operating Systems Design
10
CS423: Operating Systems Design
11
CS423: Operating Systems Design
12
CS423: Operating Systems Design
13
CS423: Operating Systems Design
14
CS 423: Operating Systems Design
15
CS423: Operating Systems Design
16
CS423: Operating Systems Design
17
CS 423: Operating Systems Design
18
What is the CPU’s behavior defined by at any given moment?
CS 423: Operating Systems Design 19
Program Counter Code Segment Offset Program instructions
What is the CPU’s behavior defined by at any given moment?
CS 423: Operating Systems Design 20
Program Counter Code Segment Offset Data Segment Offset
Operand
Data Operand Current Instruction
OpCode
Program instructions Heap
What is the CPU’s behavior defined by at any given moment?
CS 423: Operating Systems Design 21
Program Counter Code Segment Offset Data Segment Offset
Operand
Data Operand Current Instruction
OpCode
Stack Segment Offset Stack Pointer Program instructions Heap Stack
What is the CPU’s behavior defined by at any given moment?
CS 423: Operating Systems Design 22
Program Counter Code Segment Offset Data Segment Offset
Operand
Data Operand Current Instruction
OpCode
Stack Segment Offset Stack Pointer Registers Program instructions Heap Stack
What is the CPU’s behavior defined by at any given moment?
CS 423: Operating Systems Design 23
Program Counter Code Segment Offset Data Segment Offset
Operand
Data Operand Current Instruction
OpCode
Stack Segment Offset Stack Pointer Registers
Program instructions Heap Stack
CS 423: Operating Systems Design
24
Program Counter Program instructions Code Segment Offset Heap Data Segment Offset
Operand
Data Operand Current Instruction
OpCode
Stack Segment Offset Stack Pointer Stack Registers
CS 423: Operating Systems Design
25
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers
CS 423: Operating Systems Design
26
The state for processes that are not running on the CPU are maintained in the Process Control Block (PCB) data structure
Updated during context switch
An alternate PCB diagram
CS 423: Operating Systems Design
27
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers
CS 423: Operating Systems Design
28
Note: In thread context switches, heap is not switched!
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset
Operand OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers Registers
CS 423: Operating Systems Design
29
Note: In thread context switches, heap is not switched!
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset
Operand OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers Registers
CS 423: Operating Systems Design
30
Note: In thread context switches, heap is not switched!
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset
Operand OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers Registers
CS 423: Operating Systems Design
31
Note: In thread context switches, heap is not switched!
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset
Operand OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers Registers
CS 423: Operating Systems Design
32
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Running Thread
Registers Registers
CS 423: Operating Systems Design
33
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Save PC on thread stack Jump to Interrupt handler
Interrupt
Registers Registers
CS 423: Operating Systems Design
34
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to Interrupt handler Handler
(SP, registers, segment pointers, …)
Thread Control Block
CS 423: Operating Systems Design
35
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Save PC on thread stack Jump to Interrupt handler Handler
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
Registers Registers
CS 423: Operating Systems Design
36
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Save PC on thread stack Jump to Interrupt handler Handler
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
Registers Registers
CS 423: Operating Systems Design
37
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Save PC on thread stack Jump to Interrupt handler Handler
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
Where does it return?
Registers Registers
CS 423: Operating Systems Design
38
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Stack
Save PC on thread stack Jump to Interrupt handler Handler
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
Where does it return?
Registers Registers
CS423: Operating Systems Design
39
CS 423: Operating Systems Design
41
Note: In thread context switches, heap is not switched!
Program Counter Program instructions Code Segment Offset Heap Data Segment
Operand
Data Operand
OpCode
Stack Segment Stack Pointer Stack Program Counter Program instructions Code Segment Offset
Operand OpCode
Stack Segment Stack Pointer Stack
Save State (Context) Load State (Context)
Registers Registers
CS 423: Operating Systems Design
42
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Running Thread
CS 423: Operating Systems Design
43
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function
yield()
CS 423: Operating Systems Design
44
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
(SP, registers, segment pointers, …)
Thread Control Block
CS 423: Operating Systems Design
45
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
(SP, registers, segment pointers, …)
Thread Control Block
CS 423: Operating Systems Design
46
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
CS 423: Operating Systems Design 47
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
(SP, registers, segment pointers, …)
Thread Control Block Thread Control Block
CS 423: Operating Systems Design 48
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
Thread Control Block Thread Control Block
CS 423: Operating Systems Design 49
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
Thread Control Block Thread Control Block
Where is the Scheduling Policy?
CS 423: Operating Systems Design 50
Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack Program Counter Program instructions Code Segment Offset Stack Segment Stack Pointer Registers Stack
Save PC on thread stack Jump to yield() function yield()
Thread Control Block Thread Control Block
Where is the Scheduling Policy?
Maintains a sorted queue of ready threads