Operating Systems (OS) Training and Certification
We will begin this course with a high-level introduction to Operating Systems (OS). The Operating System acts as a platform of information exchange between your computer’s hardware and the applications running on it. Most people are familiar with the Windows Operating System family (like Windows 10, XP, or Vista) or Apple’s suite of Operating Systems (like Catalina, Mojave, or Sierra), but for the purposes of this course, we will focus on UNIX: the open-source OS deployed all over the world in both personal and commercial systems. First, we will start with a discussion on some of the earliest Operating Systems, including those which are considered precursors to the Operating Systems that we are familiar with today. Then, we will review the general OS structure and give a basic functional overview. We will conclude this module with a discussion of the modern Operating Systems and devices that we are familiar with.
WHAT WILL YOU LEARN?
Upon successful completion of this course, students are expected to have the ability to:
- Identify the various components of a computer system and how they interact with an operating system
- Explain what an operating system does and how it is used
- Describe and explain the fundamental components of a computer operating system
- Define, restate, discuss, and explain the policies for scheduling, deadlocks, memory management, synchronization, system calls, and file systems
- Design and construct the following OS components: System calls, Schedulers, Memory management systems, Virtual Memory and Paging systems
- Illustrate, construct, compose and design solutions via C/C++ programs, and through NACHOS.
- Measure, evaluate, and compare OS components through instrumentation for performance analysis
- Describe the differences between a 32-bit and 64-bit operating system; and
- Describe and extrapolate the interactions among the various components of computing systems
- Explain the different types of operating systems and the major systems in use today
- To understand the services provided by and the design of an operating system
- To understand the structure and organization of the file system
- To understand what a process is and how processes are synchronized and scheduled
- To understand different approaches to memory management
- Students should be able to use system calls for managing processes, memory and the file system
- Students should understand the data structures and algorithms used to implement an OS.
COURSE STRUCTURE AND AGENDA
Operating System Fundamentals
Describe the purpose and characteristics of an operating system; discuss the main functions of an operating system; explain key differences between operating systems.
Navigating The System
We will cover the basics of Windows and Linux operating systems (OS). We will learn about how directories and files work in Windows and Linux OS. You will also learn practical ways to manipulate files and directories in the Windows graphical user interface (GUI), Windows command line interface (CLI), and Linux shell. By the end of this module, you will interact with files and directories and perform basic text manipulation in Windows and Linux OS.
Users And Permissions
We’ll learn about configuring users and permissions in Windows and Linux OS. As an IT Support Specialist, it’s important to know how to grant the appropriate permissions to users and groups for both Windows and Linux OS. By the end of this module, you will know how to add, modify, and remove users for a computer and for specific files and folders by using the Windows GUI, Windows CLI, and Linux shell.
Package And Software Management
We’ll learn about package and software management in Windows and Linux OS. It’s important to know how package installs work and how devices and drivers are managed within these operating systems. We will also learn about different packaging and file compression methods. By the end of this module, you will know how to create, update, and remove software by using the Windows GUI, Windows CLI and Linux shell.
We’ll learn about how filesystems work for Windows and Linux OS. We’ll learn about filesystem types and why they’re different for certain OS. We’ll learn about disk partitioning and virtual memory and why these are so important for an IT Support Specialist’s role. We’ll also cover ways mount and unmount filesystems, read disk usage, and repair filesystems. By the end of this module, you will partition and format a disk drive yourself in both Windows and Linux.
We’ll explore process management. As an IT Support Specialist, it is important to use system tools to read and understand process statuses of machines. We will cover ways to start and terminate a process in Windows and Linux. We will also apply troubleshooting tools to solve problems with processes and resources. By the end of this module, you will use Windows and Linux commands to do practical process maintenance.
Operating Systems In Practice
We will cover some of the practical aspects of operating systems that you’ll use all the time in IT Support. We will cover remote access and how to troubleshoot a computer from afar. We’ll explore virtualization tools to manage and remove virtual instances, use logs for system monitoring, and show you a few different techniques for OS deployment. By the end of this module, you will apply all the skills from this course to debug some issues within Windows and Linux OS.
Processes, Threads & Concurrency In Operating Systems
Explain the importance of multitasking in computing systems; define processes and threads and explain the difference between them; understand how operating systems manage scheduling; discuss the concepts of interrupts and atomic processes and explain why both are important in computing systems; recognize problems that occur because of concurrency and explain basic strategies that deal with them; tell how concurrent processes/threads could cooperate to solve a problem.
Basic Memory Management
Explain the role of an operating system in memory management; define virtual memory and explain how it’s managed by the operating system; describe cache memory and explain its impact on performance; discuss garbage collection and its purpose.
Input/Output & Storage Management
Recognize the functions of peripheral devices and differentiate among several types of them; discuss the bus and explain its role in the computing system; describe well-known and used bus and port standards; identify major storage devices; explain the concept of RAID and describe its different levels.
File Management In Operating Systems
Evaluate the role of an operating system in file management; explain how files are stored on hard discs; tell how operating systems manage permissions of different users on files; describe the differences between several file systems.
Networking In Operating Systems
Explain basic concepts related to networking; describe the OSI model and explain each layer of it; discuss packet switching in computer networks; assess the basic concepts of TCP/IP; describe sockets and explain when they’re used.
Computer Security Risks & Policies
Define the concept of computer security and explain basic threats and risks; give examples of computer security policies; explain the roles of operating systems in security and protection.
Recognize the components of virtual machines; recognize various virtual machine types/technologies; explain how to implement virtualization.
OPERATING SYSTEM LAB
Introduction to operating systems concepts, process management, memory management, file systems, virtualization, and distributed operating systems. The laboratory exercises will include familiarization with UNIX system calls for process management and inter-process communication; Experiments on process scheduling and other operating system tasks through simulation/implementation. Finally, the students would require to apply the operating system concepts by experimenting on either xv6/minix operating systems.
The take home laboratory assignments will be mainly implementation-oriented which have to be coded in C and will be based on the topics discussed in theoretical lectures. The lab sessions will be based on exploring the concepts discussed in class by implementing them on the xv6 operating system.
- Working with Linux – UNIX/Shell Scripting/Bash Scripting
- Basic concepts in OS – through Linux tools for Process, Memory, and I/O Management
- Introducing xv6 (Booting xv6)
- Tracing and Creating System Calls in xv6
- Process Management
- CPU Scheduling
- Working With Threads
- Inter Process Communication
- Process Management and Scheduling in xv6 – Group Assignment (Max. 3 per group)
- Process Synchronization
- Memory Management – Exploring Memory image/Using the Val grind Tool/Address Translation/Relocation & README Relocation/ Segmentation & README Segmentation/Paging Linear Translate
- Memory Management in xv6 – Group Assignment (Max. 3 per group)
Technical Requirements and Software
- Browser and connection speed: An up-to-date version of Chrome, Firefox, or Edge is strongly recommended. 2+ Mbps is recommended; the minimum requirement is 0.768 Mbps download speed
- Operating system (64-bit OS for compatibility with 64-bit VMs)
- Personal Computer: Windows XP or higher with latest updates installed
- Mac: OS X 10.6 or higher with latest updates installed
- Linux: any recent distribution that has the supported browsers installed
- Virtual Machine: You will be provided a virtual machine (VM) useful for performing class assignments and projects. For the projects, the supplied resources are identical to those used to test your submissions. Details for downloading and installing the VM can be found in a pinned Piazza post.