Operating Systems

Vlastimil Babka

Lubomír Bulej

Vojtěch Horký

Petr Tůma

This material is a work in progress that is provided on a fair use condition to support the Charles University Operating Systems lecture. It should not be used for any other purpose than to support the lecture. It should not be copied to prevent existence of outdated copies. It comes without warranty of any kind.

This is version c4e8ea9cbfd46e2abdb2d2a46bd50950b29e8edb (modified) generated on 2018-01-11 10:12:18.

For the latest version, check http://d3s.mff.cuni.cz/~ceres.


Table of Contents

1. Introduction
1.1. Foreword
1.1.1. Origins
1.1.2. Structure
1.2. Historic Perspective
1.2.1. Stone Age
1.2.2. Transistors
1.2.3. Low Integration
1.2.4. High Integration
1.3. Basic Concepts
1.3.1. Hardware Building Blocks
1.3.2. Basic Computer Architecture
1.3.3. Advances In Processor Architecture
1.3.4. Advances In Memory Architecture
1.3.5. Advances In Bus Architecture
1.3.6. Operating System Structure
2. Process Management
2.1. Process Alone
2.1.1. Process And Thread Concepts
2.1.2. Starting A Process
2.1.3. What Is The Interface
2.1.4. Rehearsal
2.2. Achieving Parallelism
2.2.1. Multiprocessing On Uniprocessors
2.2.2. Multiprocessing On Multiprocessors
2.2.3. Cooperative And Preemptive Switching
2.2.4. Switching In Kernel Or In Process
2.2.5. Process Lifecycle
2.2.6. How To Decide Who Runs
2.2.7. What Is The Interface
2.2.8. Rehearsal
2.3. Process Communication
2.3.1. Means Of Communication
2.3.2. Shared Memory
2.3.3. Message Passing
2.3.4. Remote Procedure Call
2.3.5. Rehearsal
2.4. Process Synchronization
2.4.1. Synchronization Problems
2.4.2. Means For Synchronization
2.4.3. Memory Models
2.4.4. Synchronization And Scheduling
2.4.5. What Is The Interface
2.4.6. Rehearsal
3. Memory Management
3.1. Management Among Processes
3.1.1. Multiple Processes Together
3.1.2. Separating Multiple Processes
3.1.3. What Is The Interface
3.1.4. Rehearsal
3.2. Allocation Within A Process
3.2.1. Process Memory Layout
3.2.2. Stack
3.2.3. Heap
3.2.4. Rehearsal
4. Device Management
4.1. Device Drivers
4.1.1. Asynchronous Requests
4.1.2. Synchronous Requests
4.1.3. Power Management
4.1.4. Rehearsal
4.2. Devices
4.2.1. Busses
4.2.2. Clock
4.2.3. Keyboard
4.2.4. Mouse
4.2.5. Video Devices
4.2.6. Audio Devices
4.2.7. Disk Storage Devices
4.2.8. Memory Storage Devices
4.2.9. Network Cards
4.2.10. Parallel Ports
4.2.11. Serial Ports
4.2.12. Printers
4.2.13. Modems
4.2.14. Rehearsal
4.3. Rehearsal
5. File Subsystem
5.1. Abstractions And Operations
5.1.1. Stream File Operations
5.1.2. Example: Windows Stream File Operations
5.1.3. Mapped File Operations
5.1.4. Whole File Operations
5.1.5. Directory Operations
5.1.6. Sharing Support
5.1.7. Consistency Support
5.1.8. Rehearsal
5.2. File Subsystem Internals
5.2.1. Disk Layout
5.2.2. Integration Of File Subsystem With Memory Management
5.2.3. Integration Of Multiple File Subsystems
5.2.4. Rehearsal
6. Network Subsystem
6.1. Abstractions And Operations
6.1.1. Sockets
6.1.2. Remote Procedure Call
6.1.3. Rehearsal
6.2. Network Subsystem Internals
6.2.1. Queuing Architecture
6.2.2. Packet Filtering
6.2.3. Packet Scheduling
6.2.4. Example: Linux Packet Scheduling
6.2.5. Rehearsal
6.3. Network Subsystem Applications
6.3.1. File Systems
6.3.2. Computational Resource Sharing
6.3.3. Single System Image
6.3.4. Rehearsal
7. Security Subsystem
7.1. Authentication
7.1.1. Linux PAM Example
7.1.2. Kerberos Example
7.1.3. Rehearsal
7.2. Authorization
7.2.1. Activities do Actions on Resources
7.2.2. Levels delimit Security and Integrity
7.2.3. Example: Security Enhanced Linux
7.2.4. Rehearsal
7.3. Security Subsystem Implementation
7.3.1. Example: DoD TCSEC Classification
7.3.2. Example: NIST CCEVS

List of Figures

1.1. Principle Of Composing NAND And NOR Gates From Transistors
1.2. Principle Of Composing Flip Flops From Gates
1.3. Basic Computer Architecture Example
1.4. Timing Diagram Example
1.5. ISA Bus Read Cycle
1.6. ISA Bus Write Cycle
1.7. PCI Bus Read Cycle
1.8. PCI Bus Write Cycle
1.9. Multiple Buses Example
1.10. Simple Monolithic Operating Systems Example
2.1. Absolute Addressing Example
2.2. Relative Addressing Example
2.3. DOS EXE Format
2.4. CP/M BDOS System Call Example
2.5. CP/M BIOS System Call Entry Points
2.6. Library System Call Example
2.7. Linux Gate Library Based On INT 80h
2.8. Linux Gate Library Based On SYSENTER And SYSEXIT
2.9. Library System Call Example
2.10. Windows Process Creation System Calls
2.11. Windows Thread Creation System Calls
2.12. Windows Thread Pool Calls
2.13. Windows Process Timing Call
2.14. Standard Signals
2.15. Signal Handler Registration System Call
2.16. Signal Masking System Call
2.17. Signal Send System Call
2.18. Mutual Exclusion Petri Net
2.19. Rendez Vous Petri Net
3.1. Allocated Chunk Structure
3.2. Free Chunk Structure

List of Tables

3.1. Struktura paměti CP/M