|
Catalog Description: |
Overview modern multitasking operating systems: alternative kernel structures, file systems, process management, synchronization in concurrent programs, memory management, virtual memory. Multithreaded Java programming, basic systems programming in Linux and Windows. (Offered spring semester only.)
|
| Prerequisites: |
CIS 384 Elements of Computing Systems
|
|
Required Course Materials: |
Randal Bryant and David O’Hallaron, Computer Systems: A Programmer’s Perspective, 2nd edition, Prentice Hall, 2011 (ISBN: 9780136108047)
|
|
Course Coordinator: |
David R. Owen, Associate Professor of Computer Science
|
|
Course Audience: |
Required course for Information Science majors.
|
|
Course Objectives: |
|
- To write C programs in a Unix / Linux environment, with an understanding of security and reliability issues related to low-level representation of data.
- To understand and discuss the impact of hardware and software memory management technologies, including virtual memory, on application software performance and correctness.
- To understand and discuss exception handling, context switching, interprocess communication, and process scheduling in a modern multitasking operating system.
- To understand and discuss system-level I/O, including file I/O and communication over a network.
- To write a simple web server to handle multiple concurrent clients, with an understanding of efficiency vs. complexity tradeoffs in a multithreaded (or multiprocess) software system.
|
|
Topics: |
|
- Low-level representation of data, IA32 machine language, accessing elements of arrays and structures, pointers, preventing buffer overflow attacks.
- Locality of reference, memory hierarchy, cache management schemes, virtual memory, dynamic memory allocation, common memory-related bugs in C programs.
- Compilation of high-level code, dynamic linking, system libraries, user and system processes, process scheduling, system calls, interprocess communication via Unix / Linux signals.
- Files: opening, closing, reading, writing; file metadata, sharing files between multiple processes, I/O redirection, network programming, IP addresses, sockets, web servers.
- Concurrent programming: multiple processes, I/O multiplexing, multiple threads; communication via shared memory, synchronization, thread safety, deadlocks.
|
| |