lecture: introduction · saving and restoring state note that you do not really have to...
TRANSCRIPT
![Page 1: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/1.jpg)
Lecture: Introduction
Anton Burtsev
![Page 2: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/2.jpg)
Lets take a brief look at how computers work
![Page 3: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/3.jpg)
CPU
● 1 CPU● 4 cores● 2 logical (HT) threads each
![Page 4: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/4.jpg)
Memory
![Page 5: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/5.jpg)
Memory abstraction
![Page 6: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/6.jpg)
What does CPU do internally?
![Page 7: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/7.jpg)
CPU execution loop
● CPU repeatedly reads instructions from memory
● Executes them● Example
ADD EDX, EAX, EBX // EDX = EAX + EBX
![Page 8: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/8.jpg)
![Page 9: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/9.jpg)
Simple observation
● Hardware executes instructions one by one
![Page 10: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/10.jpg)
What is an operating system?
![Page 11: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/11.jpg)
Task #1: Run your code on a piece of hardware
● Read CPU manual● A tiny boot layer
● Initialize CPU● Jump to the entry point of
your program– main()
● This can be the beginning of your OS!
![Page 12: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/12.jpg)
Task #2: Print something on the screen● On the screen or serial line
![Page 13: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/13.jpg)
I/O Devices
![Page 14: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/14.jpg)
Task #2: Print something on the screen● On the screen or serial line
![Page 15: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/15.jpg)
A more general interface● First device driver
![Page 16: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/16.jpg)
Device drivers
● Abstract hardware● Provide high-level interface● Hide minor differences● Implement some optimizations
– Batch requests
● Examples● Console, disk, network interface● ...virtually any piece of hardware you know
![Page 17: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/17.jpg)
OS is like a library that provides a collection of useful functions
![Page 18: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/18.jpg)
How hard it is to boot into main and print something on the screen?
● If you want to run this demo
https://github.com/mars-research/hello-os.git
printf(“Hello world\n”);
![Page 19: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/19.jpg)
Task #3: Want to run two programs
● What does it mean?● Only one CPU
● Run one, then run another one
![Page 20: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/20.jpg)
Very much like car sharing
![Page 21: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/21.jpg)
Time sharing
● Programs use CPU in turns● One program runs● Then OS takes control● Launches another program ● Then another program runs● OS takes control again● ...
![Page 22: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/22.jpg)
Task #3: Want to run two programs
● Exit into the kernel periodically
● Context switch● Save state of one
program● Restore state of
another program
![Page 23: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/23.jpg)
What is this state?
![Page 24: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/24.jpg)
State of the program
● Roughly it’s● Registers● Memory
● Plus some state (data structures) in the kernel associated with the program– Information about files opened by the program, i.e. file
descriptors– Information about network flows– Information about address space, loaded libraries,
communication channels to other programs, etc.
![Page 25: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/25.jpg)
Saving and restoring state
● Note that you do not really have to save/restore in-kernel state on the context switch● It’s in the kernel already, i.e., in some part of the
memory where kernel keeps its data structures ● You only have to switch from using one to using
another– i.e., instead of using the file descriptor table (can be as
simple as array) for program X start using at file descriptor table for program Y
![Page 26: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/26.jpg)
What about memory?
![Page 27: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/27.jpg)
● Two programs, one memory?
![Page 28: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/28.jpg)
Time-share memory
● Well you can copy in and out the state of the program into a region of memory where it can run● Similar to time-sharing the CPU
![Page 29: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/29.jpg)
Time-share memory
● Well you can copy in and out the state of the program into a region of memory where it can run● Similar to time-sharing the CPU
● What do you think is wrong with this approach?
![Page 30: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/30.jpg)
Time-share memory
● Well you can copy in and out the state of the program into a region of memory where it can run● Similar to time-sharing the CPU
● What do you think is wrong with this approach?● Unlike registers the state of the program in memory
can be large● Takes time to copy it in and out
![Page 31: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/31.jpg)
Virtual address spaces
● Illusion of a private memory for each application● Keep a description of an address space● In one of the registers
● OS maintains description of address spaces● Switches between them
![Page 32: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/32.jpg)
Address spaces with page tables
![Page 33: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/33.jpg)
Page tables high-level idea
● Break up memory into 4096-byte chunks called pages● Modern hardware supports 2MB, 4MB, and 1GB
pages● Independently control mapping for each page of
linear address space
![Page 34: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/34.jpg)
Staying in control
![Page 35: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/35.jpg)
● What if one program fails to release the CPU?● It will run forever. Need a way to preempt it. How?
![Page 36: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/36.jpg)
Scheduling
● Pick which application to run next● And for how long
● Illusion of a private CPU for each task● Frequent context switching
![Page 37: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/37.jpg)
Isolation
![Page 38: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/38.jpg)
● What if one faulty program corrupts the kernel?● Or other programs?
![Page 39: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/39.jpg)
No isolation: open space office
![Page 40: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/40.jpg)
Isolated rooms
![Page 41: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/41.jpg)
Each process has a private address space
![Page 42: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/42.jpg)
Each process maps the kernel
● It's not strictly required● But convenient for system calls● No need to change the page table when process
enters the kernel with a system call● Things are much faster!
![Page 43: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/43.jpg)
P1 and P2 can't access each other memory
![Page 44: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/44.jpg)
● What about communication? ● Can we invoke a function in a kernel?
![Page 45: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/45.jpg)
Files and network
![Page 46: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/46.jpg)
● What if you want to save some data to a file?
![Page 47: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/47.jpg)
● What if you want to save some data to a file? ● Permanent storage
● E.g., disks● Disks are just arrays of blocks
● write(block_number, block_data)
![Page 48: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/48.jpg)
I/O Devices
![Page 49: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/49.jpg)
● File system and block device provide similar abstractions
● Permanent storage● E.g., disks
● Disks are just arrays of blocks● write(block_number, block_data)
● Files● High level abstraction for saving data● fd = open(“contacts.txt”);● fpritnf(fd, “Name:%s\n”, name);
![Page 50: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/50.jpg)
File system
![Page 51: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/51.jpg)
File system and block layer
● Reliable storage on top of raw disc blocks
● Disks are just arrays of blocks
write(block_number, block_data)● Human readable names (files)
● High level abstraction for saving data
fd = open(“contacts.txt”);
fpritnf(fd, “Name:%s\n”, name);
![Page 52: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/52.jpg)
What if you want to send data over the network?
● Similar idea● Send/receive Ethernet packets (Level 2)● Two low level
● Sockets● High level abstraction for sending data
![Page 53: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/53.jpg)
● Linux/Windows/Mac
![Page 54: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/54.jpg)
Recap● Run multiple programs
● Each has illusion of a private memory and CPU– Context switching– Isolation and protection
● Management of resources– Scheduling (management of CPU)– Memory management (management of physical memory)
● High-level abstractions for I/O● File systems
– Multiple files, concurrent I/O requests– Consistency, caching
● Network protocols– Multiple virtual network connections
![Page 55: Lecture: Introduction · Saving and restoring state Note that you do not really have to save/restore in-kernel state on the context switch It’s in the kernel already, i.e., in some](https://reader033.vdocuments.net/reader033/viewer/2022050501/5f93db24d37faa7d2a76a7ea/html5/thumbnails/55.jpg)
Questions?