Operating Systems Fundamentals

In this module, we will cover the fundamental features of an operating system. We will start with the history of Unix, including the core components, purposes and philosophies underpinning the Unix operating system. Next we will introduce the fundamental process and file system abstractions that operating systems provide.

We will also study the features and functionality of the terminal interface, which we will use to interact with the operating system through the system shell utility, sh. Finally, we will learn to work with text files in the vim text editor and read system documentation with the manual paging utility, man.

By the end of this module, you will be familiar with the basic design of an operating system, and begin to demonstrate proficiency with several core system utilities which you will later use to write and produce system software. Successfully completing this module will prepare you to begin writing your first C programs.

Module Learning Outcomes

Following this module, students should be able to:

  • Summarize the historical development and significance of the C language and the Unix family of operating systems.

  • Explain the basic properties of processes and the kernel-process interface consisting of virtual memory, system calls, signals, and scheduling.

  • Describe the basic structure of a file system, basic types of files, and access control mechanisms.

  • Describe the basic modes of the terminal–raw and cooked–and use the terminal interactively to provide input to programs.

  • Execute simple commands in an interactive shell environment and navigate the file system.

  • Assign variables and perform simple expansions in an interactive shell environment.

  • Perform i/o redirection and pipe commands together.

  • Execute commands concurrently and manage jobs with job control.

  • Edit text files in vim to write simple shell programs.