ECS 150: History of OS and introduction to processes
Sam King
Administrative
Administrative
Processes and concurrency
main() {
getInput();
computeResult();
printOutput();
}
getInput() {
cout();
cin();
}
computeResult() {
sqrt();
pow();
}
printOutput() {
cout();
}
Programs decompose into several rows
main
getInput
cout
Job 1
Job 2
Job 3
What’s in a process?
Key abstractions
Examples!
Administrative
Project 1 is out, due on Thursday April 8th
Using gradescope for grades
You don’t need to know command lines
OS architectures
A peek into Unix/Linux
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
User mode
Kernel mode
A peek into Unix/Linux
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
Typical interactions w system
A peek into Unix/Linux
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
Shared libraries
A peek into Unix/Linux
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
High-level abstractions (e.g., file system)
A peek into Unix/Linux
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
Low-level (process switch)
OS architectures
Monolithic operating system
Applications
Libraries (e.g., c runtime)
Portable OS Layer
Machine-dependent layer
Alternative architectures: microkernel
Alternative architecture: VMM
Hardware
VMM
OS
Identical interface
OS
OS
System call implementation
Unix system calls
Project 1 hints
Use std::string for wgrep (and in general for string manipulation)
For wzip use hexdump to help debug
Reminder: use read/write/open/close
You have the full autograder test cases