Introduction: History, Standards. Fundamentals: Command line arguments and environment variables. I/O redirections and File I/O., filters and file manipulation, Terminal handling and text based screen applications. Files and directories: File and directory structures, Permissions, Sequential and random file access, Accessing directories, ‘hard’ and ‘soft’ Links. Shell scripts, what they are good for, Mixing C and scripts. Processes: Process model, Process environment, Process handling (fork, exec etc.); Process creation and termination, Process control, Process times. Signals: Signal concepts, Times and Timers, Interrupt handling, Locking and Caching issues, Signal system calls. Inter-process communication: Communication via Pipes, Named pipes, pseudo terminals and sockets, Process synchronization;, Semaphores, Shared memory. I/O: Terminal I/O; Getting and setting terminal attributes, Canonical and non-canonical modes, Non-blocking I/O, Pseudo terminals, Advanced I/O; Advanced file I/O including special devices, Blocking & non-blocking I/O, handling multiple I/O streams using select. Threads: Thread concepts, Thread environment, Thread invocation and synchronization, Critical Sections and Semaphores. Socket programming: Intro to sockets, TCP/IP architecture, Client/server programming. Connection-Oriented Communication. Connectionless Communication and Multicast.
Students MUST DO a term project by programming in C at least one of the major functions of an operating system.