This course is a prerequisite for Introduction to Security and Distributed Systems, and is helpful for Computer Design.
The aims of this course are to introduce the basic principles of
computer systems organisation and operation; to show how hardware is
controlled by program at the hardware/software interface; to outline
the basic OS resource management functions: memory, file, device (I/O)
and process management; and to explore the need for, principles of and
implementation of concurrency control.
Part I. Computer organisation [3-4 lectures]
Computer design; the hardware and its interfaces.
Bus/memory/CPU organisation. Representation of numbers and
characters; instruction sets and addressing. Operation of a simple
computer; the fetch-execute cycle.
I/O devices and interfaces; polling and interrupts. The general
exception mechanism for interrupts, errors, system calls, memory
management. Character and DMA interfaces.
Part II. Operating system structure and functions [6 lectures]
Operating system evolution and structure.
Creating virtual processor abstractions. Support for
processes (or threads) in operating systems. CPU scheduling.
File concept. Directory and storage services. File names and
meta-data. Directory name-space. File and directory operations.
Access control. Existence and concurrency control.
Part III. Concurrency control [3-4 lectures]
I/O management- aspects.
Process-device synchronisation. Process - process mutual
exclusion and synchronisation via I/O buffers.
User threads and kernel threads.
System structure and interprocess communication (IPC).
Requirements for concurrency control; System structure; Shared memory
mechanisms; Semaphores and
their implementation; examples; No-shared-memory mechanisms.
Composite concurrent operations.
Problem of deadlock. Introduction to transaction concept.
Part IV. Case studies [2-3 lectures]
Unix and Windows NT/2000.
At the end of the course students should
be prepared for hardware and architecture courses
understand the interaction of software and hardware
understand the concepts of process, thread and address space
understand how memory, devices (I/O), files and processes are managed
understand the need for and implementation of concurrency control
understand the design of widely used operating systems at a high
level of abstraction
For hardware/architecture please browse the books recommended for
hardware courses and for Computer Design.
* Bacon, J. & Harris, T. (2003). Operating systems: distributed and concurrent software design. Addison-Wesley.
Tanenbaum, A.S. & Woodhull, A. S. (2000). Operating systems design and implementation. Addison-Wesley (2nd ed.).
Silberschatz, A., Galvin, P.B. & Gagne, G. (2005, 2001). Operating system concepts. Addison-Wesley (7th, 6th eds.).
For further detail on the case studies (not required reading):
Bach, M.J. (1986). Design of the Unix operating system. Prentice-Hall.
Leffler, S.J. et al. (1989). The design of the 4.3BSD Unix operating system. Addison-Wesley.
McKusick M.K. et al. (1996). The design and implementation of the 4.4BSD Unix operating system. Addison-Wesley.
Soloman D.A. & Russinovich, M.E. (2000). Inside Microsoft Windows 2000. Microsoft Press. (3rd ed.)