The Unix Timesharing System
The Unix Timesharing System
What is the Problem?
A very unspecific problem. Essentially they were burnt by Multics and wanted to create a simpler and more general system.
Summary
Key design goal is simplicity. Everything is hierarchical. Everything is a file.
File System Implementation
- Tree strucutre
- FS mounted on a file
- Sys table of i-numbers (i-list)
- i-node contains metadata for each file
- path names don't distinguish between files and directories
- mount table for mounted file systems
- buffering is built into kernel and transparent to user - write-behind (flushes to disk when buffer is full)
Storage Devices
- block devices - data is stored in fixed-size blocks - "free list" of blocks for allocation, Linked list of blocks - hard disks, usb drive, ssd, tape drives - early versions of ethernet
- character devices
Execution
- Image is an execution env (parallel container)
- Process is an instance/execution of an image - Program text write-protected and shared between all instances of that process - Separate virtual address space for each process
- Kernel - Mediator for accessing services/hardware/shared resources