CMSC 412, Nicholas Duchon, UMUC
Minix lecture

Overview: Notes

Processes in Minix (2.5)

Processes: internal structure

user process
user proces
user processes
memory management
file system
network server
server processes
I/O tasks, kernel
Process management
MINX System in four layers

Processes: management

Processes: interprocess communication

Processes: scheduling

Implementation of Processes (2.6)

ProcImp: organization of source code (2.6.1)

Source code organization

directory description sections in text pages in appendix A
/usr/include sys -  posix headers 2.6.2,  523-541; 541-552
minix -  headers for minix 2.6.3 552-569
ibm -  headers for PC's 2.6.3 569-570
kernel -  layers 1 and 2 (processes, messages and drivers) 2.6.4-2.6.11 570-743 (long!)
mm -  memory manager

fs file system

lib library procedures (e.g., open, read), code not included in book listing

tools init program (code not included in book)

boot booting and installing minix (code not in book)

commands operating system interface (e.g., cat, cp, date, ls, pwd

test programs to test a newly compiled minix system

inet adds network support

memory map
Source code process starting location in K

User processes 2383
src/tools/init init 2372
src/inet/inet (opt) inet task 2198 (depending on number of buffers in system)
src/fs/fs file system 1077
src/mm/mm memory manager 1024

read only memory and I/O adapters, unavailable to minix 640

available to user programs 129 (depending on number of I/O tasks)
src/kernel/kernel ethernet task
printer task
terminal task
memory task
clock task
disk task
kernel 2 (start of kernel)
(unused) 1
interrupt vectors 0

ProcImp: common header files (ends in .h) (2.6.2)

ProcImp: MINIX header files (2.6.3)

ProcImp: data files and header files (2.6.4)

ProcImp: bootstrapping (2.6.5)

ProcImp: system initialization (2.6.6)

ProcImp: interrupt handling (2.6.7)

ProcImp: interprocess communication (2.6.8)

ProcImp: scheduling (2.6.9)

ProcImp: hardware-dependent kernel support (2.6.10)

ProcImp: utilities and the kernel library (2.6.11)

I/O in Minix (3.4)

I/O: interrupt handlers (3.4.1)

I/O: device drivers (3.4.2)

I/O: device independent (3.4.3)

I/O: user-level (3.4.4)

I/O: deadlock handling (3.4.5)

Block Devices (3.5)

Block devices: overview of drivers (3.5.1)

Block devices: common drivers (3.5.2)

Block devices: driver library (3.5.3)

RAM Disks (3.6)

RAM Disk: hardware and software (3.6.1)

RAM Disk: overview of driver (3.6.2)

RAM Disk: implementation of driver (3.6.3)

Disks (3.7)

Disks: hardware (3.7.1)

Disks: software (3.7.2)

Disks: overview of drivers (3.7.3)

Disks: implementation (3.7.4)

Disks: floppies (3.7.5)

Clocks (3.8)

Clock: hardware (3.8.1)

Clock: software (3.8.2)

Clock: overview of driver (3.8.3)

Clock: implementation of driver (3.8.4)

Terminals (3.9)

Term: hardware (3.9.1)

Term: software (3.9.2)

Term: overview of driver (3.9.3)

Term: device independent driver (3.9.4)

Term: keyboard driver (3.9.5)

Term: display driver (3.9.6)

Memory Management (4.7)

Memory: layout (4.7.1)

Memory: handling (4.7.2)

Memory: data structures and algorithms (4.7.3)

Memory: fork, exit, wait system calls (4.7.4)

Memory: exec system call (4.7.5)

Memory: brk system call (4.7.6)

Memory: signal handling (4.7.7)

Memory: other system calls (4.7.8)

Implementation of Memory Management (4.8)

MMimp: header files and data structures (4.8.1)

MMimp: main program (4.8.2)

MMimp: fork, exit wait (4.8.3)

MMimp: exec (4.8.4)

MMimp: brk (4.8.5)

MMimp: signal handling (4.8.6)

MMimp: other system calls (4.8.7)

MMimp: utilities (4.8.8)

Minix File System (5.6)

Files: messages (5.6.1)

Files: layout (5.6.2)

Files: bit maps (5.6.3)

Files: i-nodes (5.6.4)

Files: block cache (5.6.5)

Files: directories and paths(5.6.6)

Files: file descriptors (5.6.7)

Files: locking (5.6.8)

Files: pipes and special files (5.6.9)

Files: example: read system call (5.6.10)

Implementation of the File System (5.7)

Files: header files and global data structures (5.7.1)

Files: table management (5.7.2)

Files: main program (5.7.3)

Files: operations on individual files (5.7.4)

Files: directories and paths (5.7.5)

Files: other system calls (5.7.6)

Files: I/O device interface (5.7.7)

Files: general utilities (5.7.8)

Some reference sites: