Course Outcomes

CS 3013, Operating Systems, C-Term 2018

This course is designed to help you learn:–

·         About operating systems, what they are, and what are their major components

·         How to add to and/or modify C code in a large system written by others

·         How to write and/or modify concurrent programs

·         Some basic principles about system performance

Learning will involve factual information, basic skills, and conceptual abilities. Projects and quizzes are designed to teaching, demonstrate, and assess these three levels of learning.

Knowledge and understanding

·         What is an operating system

·         Types of operating systems and differences among them

·         Processes, threads, and the differences between the two

·         Interrupts, synchronization, waiting, and atomic behavior

·         Virtual memory, paging, and memory allocation

·         Caching principles and quantitative estimation of cache behavior

·         Paging performance and page replacement

·         Files and storage of persistent information

·         Types of files and file access

·         Input, output, and types of I/O devices

Skills

·         Programming and debugging C code at the system level

·         Modifying C code written by others

·         Communicating directly with an operating system via system calls

·         Configuring and building a non-trivial operating system designed by others

·         Forking processes, waiting for them to terminate, and getting information about them

·         Spawning and joining threads

·         Using semaphores, monitors, message-passing, and other forms of synchronization among threads

·         Use of different kinds of memory allocators

·         Writing a highly concurrent program