Operating Systems (COMP30023 W1 L1,2)
We need to understand the ecosystem of where our application is running. Running too slow? Know where to optimize it.
What hardware and software components are involved between recording a video and getting it to viewers?
- CPU memory to process and render the video
- Network protocol to get the recording to the colud
- Hosting the recording on the cloud
- Web application where a user connects
- User downloads and watches it
Topic
- The role of the operating system
- The memory hierarchy (caches, virtual memory)
- Where is it stored?
- Interrupt handling, processes and scheduling
- Multiple processes running at the same time?
- Introduction to multiprocessors and synchronization
- Conflict resolution
- Computer system security and cryptographic protocols
- Introduction to network protocols (OSI model)
- Development of client-server applications
Components of a modern computer
- 1+ processors
- Main memory
- Disks
- Printers
- Keyboard
- Mouse
- Display
- Network interfaces
- I/O devices
These are hardwares. OS seamlessly takes care of everything!
Operating systems
OS is a layer in between the hardware and the software. (The manager that makes sure that the recipe is done in the kitchen)
Examples: Windows, macOS, Unix, Linux, Android… GUI or a command line shell is not an operating system.
- OS Provides an **1. abstraction**
- Abstraction between the hardware resources and the software that is running on it. → The developer can ignore the underlying processes.
- i.e. The main cook in the kitchen that makes sure that the recipe is done
- OS as a **2. resource manager**
- Managing: ensuring that the software get their CPU time, all being run
- Top down view
- Provide abstractions to application programs
- Bottom up view
- Manage pieces of complex system
- Alternative view
- Provide orderly, controlled allocation of resources
- Isolation of the memory given to different programs?
- OS as an **3. extended machine**
- OS turns ugly hardware into beautiful abstractions.
History of OS
- Driven by computer architecture
- The first generation (1945–55) vacuum tubes
- The second generation (1955–65) transistors and batch systems
- The third generation (1965–1980) integrated circuits and multiprogramming
- The fourth generation (1980–present) personal computers
- The fifth generation (1990–present) mobile computers
OS concepts
- Processes (running program)
- Address spaces (memory)
- Files and file system
- Input and Output
- Protection (manage security)
Typical memory hierarchy
Processor/CPU
- Central processing unit (CPU)
- Fetches instructions from registers (memory); executes them (marks the job done)
- Registers keep some process state information
- Two modes of execution:
- Kernel (execute any CPU instruction and reference any memory address) i.e. initiate I/O
- User (only a subset) i.e. add, sub
- CPU: The cooks that are doing the job, Kernel: higher level chef that deals with important ingredients
Processes: program in execution
- Key concept in all operating systems
- At any given time, the number of processes running a given program can be 0, 1, 2, 3, ….
- Assocciated with an address space & set of resources
- A container that holds all info needed to run the program
- A process is dynamic (↔ a program is static)
- The state of a process consists of:
- The code / text of the program
- The values of all the variables in memory and registers
- Address of the current instruction
- Current directory, etc.
- Act of cooking (=process) is dynamic <-> A recipe is a static entity (=program)
- The state of a process consists of:
Typically, number of processes run by a machine > number of CPUs
Multiple processes
- Each process has its own address space
- The state of the process has to be remembered, which requires "complete isolation" between processes
- Process memory has three segments:
- text (program code, “read only”)
- data (constant data strings, global vars)
- stack (local vars like functions and state of the variable)
- Conceptually, each process has its own virtual CPU.
-
In reality, multiple processes share a CPU, each taking a small period of time to run. (multiprogramming)
OS as a process
- Another way of defining the OS: process
- OS ensures that different proesses do not get in each other’s way while they are active at the “same” time
- Provides services such as “read N bytes from this file”, which is used by application programs, utilities, and non-privileged parts of the OS.
User vs. Kernel mode
- The program status word (PSW) register gives the CPU its current mode.
-
Code running in User mode
cannot issue privileged instructions, and can only access the parts of memory that is allowed by kernel mode code.
-
Code running in kernel mode
can issue all instructions, and can access all memory.
- Privileged instructions and memory locations: those which access anything that might interfere with another system (i.e. accessing I/O device)
-
Code running in User mode
- User / kernel distinction builds the security mechanisms for OS.
System call
- Transition between user and kernel mode is made via system calls
- Allow user programs to ask the OS to execute privileged instructions / memory locations on their behalf.
- Preserves system integrity and security since OS checks the requst before executing them.
- Several privileged things are carried out as a single logical operation to make system calls more convenient to use.
-
To the application programmer: system call = call to a privileged function
-
Mode bit (register) helps you distinguish which mode the system is running on.
- Example of a system call: Standard C library handling of write(). The library provides the system-call interface.
Typical system calls
- Process control (load/execute; create and terminate a process; get/set process attributes)
- File management (read/create/delete/open/close a file; get/set file attributes)
- Device management (request/release a device; read/write from a device)
- Information maintenance (get/set time or date)
- Communication (create/delete communication connections)