CS 161: Operating Systems (2020)
This is an in-depth course in operating systems design and implementation, focusing on multicore operating systems kernels. Operating systems are some of the most complex software artifacts that exist. Kernels abstract the features provided by computer hardware, making those features safer and more convenient to use. This means that OS designers have to understand how hardware works (at least at the level of specifications) and how software works. OS programmers also must become comfortable with navigating in, and contributing to, code bases too large to wholly understand. Most of us can pick up this important skill.
The course uses Chickadee , an operating system based on CS 61 WeensyOS . Chickadee takes advantage of newer hardware, language, and OS design features than many teaching operating systems.
Lecture: Monday/Wednesday, 3–4:15pm, Pierce 301 Section: Biweekly mandatory sections ( see schedule )
Class participation is mandatory.
Problem sets . There will be five:
- Warmup and virtual memory .
- More memory and scheduling .
- VFS and pipes .
- File systems .
- Threads and a final project .
These labs will use the Chickadee framework. For some labs, you will also need to engage with (meaning, read code from) other operating systems, such as Linux. Each student has a total of 4 late days, with a maximum of 2 late days being applicable to any single assignment.
Students may partner up. However, each student will turn in individual labs . Don’t stress out; see “Policies.”
Papers . In some sections we will discuss OS research papers. You’ll need to read the papers before class and engage in paper discussion on Piazza.
Exams . There will be an in-class midterm and an in-class final.
Grading schema . A student’s final numerical grade will be calculated using this formula:
Problem set 1 : 8%
Problem set 2 : 15%
Problem set 3 : 15%
Problem set 4 : 15%
Problem set 5 : 22%
Midterm 1 : 8%
Midterm 2 : 12%
Participation : 5%
Final letter grades will be assigned using numerical grade bands that span at least 10 points. For example, if your final numerical grade is between 100 and 90, you are guaranteed to get an A or an A-; if your final numerical grade is between 89.9999 and 80, then you are guaranteed to get some kind of B. Grading bands may be more lenient than 10 points, depending on the overall performance of all students. For example, depending on the overall performance of all students, the grades of A and A- might be mapped to the range [100, 87).
CS 161 labs may be completed in groups, but we expect every student to turn in a separate code repository—even if partners’ code is very similar. Here’s what that means and why we’re doing it.
Partner/group work is an important part of CS 161. Students benefit from talking through their code with partners. There’s less stress and loneliness and easier debugging.
But partner dynamics can hurt too. We want every student to understand the work of every problem set. In partner classes, though, sometimes students shirk work, or trade off (“you do pset 4 and I’ll do pset 5”), which isn’t fair to others and reliably causes problems later. CS 161 has even broken up some relationships! And partner issues force us to put more grading weight on exams.
We seek a happy medium. We want to allow partners but avoid the pathologies of group turnin. So, we ask every student to turn in separate code for each lab. Partners may create this code together, but the code partners turn in must not be wholly identical . A good way to ensure this would be for partners to discuss ideas and code and help each other debug, but type their code individually.
All coursework other than labs must be completed individually.
Collaboration is encouraged on all aspects of the course except exams. You are welcome to communicate with your classmates about strategies for solutions and about specific bugs, and you are welcome to use Internet resources for general information. However:
- You must not ask questions on Stack Overflow, paper.camp, or any similar site. (Of course, if you search for some C++ problem, Stack Overflow answers may come up—just don’t ask questions yourself.)
- You must not use solutions from past (or future) years.
- Cite help. If a classmate, other collaborator, or online resource helps you, acknowledge it in your assignment. (You do not need to cite help from course staff or resources directly linked from this site.)
Do not post your solutions in a public place.
![](http://rss3.fun/777/templates/cheerup/res/banner1.gif)
Textbooks and resources
There are no mandatory texts for CS 161, but we can recommend some helpful texts if you like that sort of thing. They can be rented for Kindle.
- Operating Systems In Depth: Design and Programming , by Thomas W. Doeppner. This was a required text in prior years.
- Understanding the Linux Kernel , by Daniel P. Bovet. Though this describes a somewhat-old version of Linux, it’s well written and clear.
There are also extensive online resources on kernel design, architecture, and operating systems development.
- Linux kernel documentation
And also many online resources (of varying quality and age) on C++. Here are some good ones.
- C++ Super-FAQ
- cppreference.com
Course staff
Lecturer: James Mickens : [email protected] Office hours: Tuesdays, 3pm–4:30pm, Maxwell Dworkin 335 TFs: Tina Lu: [email protected] Office hours: Thursdays, 7pm–9pm, Leverett dining hall Noah Singer: [email protected] Office hours: Sundays, 1pm–3pm, Pfoho dining hall Vincent Viego: [email protected] Office hours: Fridays, 2pm–4pm, Maxwell Dworkin first-floor lounge
![computer operating system assignment computer operating system assignment](https://cseweb.ucsd.edu/img/final-thumb.jpg)
CSE 120: Principles of Computer Operating Systems
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau Version 1.00 (Available online!) |
Course Objectives
Course schedule.
Date | Lecture | Readings | Optional | Homework | Project |
---|---|---|---|---|---|
9/23 | , | | |||
9/28 | --> | ||||
9/30 | , | --> | |||
10/5 | , | | --> | ||
10/7 | , | | |||
10/12 | |||||
10/14 | , | --> --> | |||
10/19 | -->, | | |||
10/21 | |||||
10/22 | |||||
10/26 | Midterm Exam | --> | |||
10/28 | , , | | --> | ||
11/2 | ( ) | , , | --> | ||
11/4 | ( ) | , | |||
11/9 | ( ) | , | |||
11/11 | Veteran's Day. No Class. | ||||
11/16 | ( ) | , | --> | ||
11/18 | ( ) | , , | --> | ||
11/19 | |||||
11/23 | ( ) | --> | |||
12/2 | ( ) | -->--> | --> | ||
12/3 | ( ) | ||||
12/7 | ( ) | | |||
12/9 | Final Exam | 3pm - 6pm |
Course Organization
Discussion sections.
Browse Course Material
Course info.
- Prof. Frans Kaashoek
Departments
- Electrical Engineering and Computer Science
As Taught In
- Operating Systems
- Software Design and Engineering
Learning Resource Types
Operating system engineering, operating system engineering, assignment 1.
This file contains the information regarding Operating System Engineering, Assignment 1.
![computer operating system assignment facebook](https://ocw.mit.edu/static_shared/images/Facebook.f4c9d732fd0e8bae1e01.png)
You are leaving MIT OpenCourseWare
Online Master of Science in Computer Science (OMSCS)
College of computing, cs 6200: introduction to operating systems, instructional team.
![computer operating system assignment Ada Gavrilovska](https://omscs.gatech.edu/sites/default/files/2023-12/Ada%20Gavrilovska.jpg)
Ada Gavrilovska
Creator, instructor.
![computer operating system assignment Jarrod Parkes](https://omscs.gatech.edu/sites/default/files/2023-12/Jarrod%20Parkes.jpg)
Jarrod Parkes
Course developer.
![computer operating system assignment Buzz](https://omscs.gatech.edu/sites/default/files/2023-12/Buzz.jpg)
Ioan Istrate
![computer operating system assignment VJ Parthiban](https://omscs.gatech.edu/sites/default/files/2023-12/VJ%20Parthiban.png)
VJ Parthiban
Introduction to Operating Systems is a graduate-level introductory course in operating systems. This course teaches basic operating system abstractions, mechanisms, and their implementations. The core of the course focuses on OS support for concurrency (threads) and synchronization, resource management (CPU, memory, I/O), and distributed services. The practical component of the course teaches multithread programming, inter-process communication, and distributed interactions via RPC.
Sample Syllabi
Spring 2023 syllabus (PDF) Summer 2022 syllabus (PDF) Fall 2021 syllabus (PDF)
Note: sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.
Course Content
To access the public version of this course's content, click here , then log into your Ed Lessons account. If you have not already created an Ed Lessons account, enter your name and email address, then click the activation link sent to your email, then revisit that link.
Before Taking This Class...
Suggested background knowledge.
To undertake this course, you should have taken an undergraduate level course on, or be otherwise familiar with, basic hardware and software aspects of computer systems organization. You should also be familiar with the following:
- C and C++ programming experience
- Ubuntu 20.04 LTS (or similar Linux experience, such as working from the command line)
- Using Vagrant (with VirtualBox or an alternative). We also provide a Dockerfile for those with experience in using Docker.
- Using Makefiles
- Using GDB or an IDE with a debugger
- Using GCC or an IDE with gcc support
Please review the CS 6200 Readiness Survey to determine your readiness to take this course.
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.
- PC: Windows XP or higher with latest updates installed
- Note on M1 Macs: M1 Macs known limitations cause utilities like ptrace and address sanitizer (recommended for projects) to be terminated abruptly. Students are encouraged to use alternate platforms or utilities for projects.
- 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.
Academic Integrity
All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code . This course may impose additional academic integrity stipulations; consult the official course documentation for more information.
![computer operating system assignment GCFGlobal Logo](https://media.gcflearnfree.org/global/gcfglobal-color.png)
- Get started with computers
- Learn Microsoft Office
- Apply for a job
- Improve my work skills
- Design nice-looking docs
- Getting Started
- Smartphones & Tablets
- Typing Tutorial
- Online Learning
- Basic Internet Skills
- Online Safety
- Social Media
- Zoom Basics
- Google Docs
- Google Sheets
- Career Planning
- Resume Writing
- Cover Letters
- Job Search and Networking
- Business Communication
- Entrepreneurship 101
- Careers without College
- Job Hunt for Today
- 3D Printing
- Freelancing 101
- Personal Finance
- Sharing Economy
- Decision-Making
- Graphic Design
- Photography
- Image Editing
- Learning WordPress
- Language Learning
- Critical Thinking
- For Educators
- Translations
- Staff Picks
- English expand_more expand_less
Computer Basics - Understanding Operating Systems
Computer basics -, understanding operating systems, computer basics understanding operating systems.
![computer operating system assignment GCFLearnFree Logo](https://media.gcflearnfree.org/mobile/GCF_whitelogo.png)
Computer Basics: Understanding Operating Systems
Lesson 8: understanding operating systems.
/en/computerbasics/mobile-devices/content/
What is an operating system?
An operating system is the most important software that runs on a computer. It manages the computer's memory and processes , as well as all of its software and hardware . It also allows you to communicate with the computer without knowing how to speak the computer's language. Without an operating system, a computer is useless .
Watch the video below to learn more about operating systems.
Looking for the old version of this video? You can still view it here .
![](http://rss3.fun/777/templates/cheerup/res/banner1.gif)
The operating system's job
Your computer's operating system ( OS ) manages all of the software and hardware on the computer. Most of the time, there are several different computer programs running at the same time, and they all need to access your computer's central processing unit (CPU) , memory , and storage . The operating system coordinates all of this to make sure each program gets what it needs.
Types of operating systems
Operating systems usually come pre-loaded on any computer you buy. Most people use the operating system that comes with their computer, but it's possible to upgrade or even change operating systems. The three most common operating systems for personal computers are Microsoft Windows , macOS , and Linux .
Modern operating systems use a graphical user interface , or GUI (pronounced gooey ). A GUI lets you use your mouse to click icons , buttons , and menus , and everything is clearly displayed on the screen using a combination of graphics and text .
![showing a graphical user interface example showing a graphical user interface example](https://media.gcflearnfree.org/content/55e069691496fdb039ceeecb_01_17_2014/understanding_os_gui_cropped_01404.jpg)
Each operating system's GUI has a different look and feel, so if you switch to a different operating system it may seem unfamiliar at first. However, modern operating systems are designed to be easy to use , and most of the basic principles are the same.
Microsoft Windows
Microsoft created the Windows operating system in the mid-1980s. There have been many different versions of Windows, but the most recent ones are Windows 10 (released in 2015), Windows 8 (2012), Windows 7 (2009), and Windows Vista (2007). Windows comes pre-loaded on most new PCs, which helps to make it the most popular operating system in the world.
![viewing a windows operating system viewing a windows operating system](https://media.gcflearnfree.org/content/55e069691496fdb039ceeecb_01_17_2014/understanding_os_windows_01279.jpg)
Check out our tutorials on Windows Basics and specific Windows versions for more information.
macOS (previously called OS X ) is a line of operating systems created by Apple. It comes preloaded on all Macintosh computers, or Macs. Some of the specific versions include Mojave (released in 2018), High Sierra (2017), and Sierra (2016).
According to StatCounter Global Stats , macOS users account for less than 10% of global operating systems—much lower than the percentage of Windows users (more than 80% ). One reason for this is that Apple computers tend to be more expensive. However, many people do prefer the look and feel of macOS over Windows.
![viewing a mac operating system viewing a mac operating system](https://media.gcflearnfree.org/content/55e069691496fdb039ceeecb_01_17_2014/understanding_os_mac_01404.jpg)
Check out our macOS Basics tutorial for more information.
Linux (pronounced LINN-ux ) is a family of open-source operating systems, which means they can be modified and distributed by anyone around the world. This is different from proprietary software like Windows, which can only be modified by the company that owns it. The advantages of Linux are that it is free , and there are many different distributions —or versions—you can choose from.
According to StatCounter Global Stats , Linux users account for less than 2% of global operating systems. However, most servers run Linux because it's relatively easy to customize.
To learn more about different distributions of Linux, visit the Ubuntu , Linux Mint , and Fedora websites, or refer to our Linux Resources . For a more comprehensive list, you can visit MakeUseOf's list of The Best Linux Distributions .
Operating systems for mobile devices
The operating systems we've been talking about so far were designed to run on desktop and laptop computers. Mobile devices such as phones , tablet computers , and MP3 players are different from desktop and laptop computers, so they run operating systems that are designed specifically for mobile devices. Examples of mobile operating systems include Apple iOS and Google Android . In the screenshot below, you can see iOS running on an iPad.
![viewing operating systems for mobile devices viewing operating systems for mobile devices](https://media.gcflearnfree.org/content/55e069691496fdb039ceeecb_01_17_2014/understanding_os_mobile_01682.jpg)
Operating systems for mobile devices generally aren't as fully featured as those made for desktop and laptop computers, and they aren't able to run all of the same software. However, you can still do a lot of things with them, like watch movies, browse the Web, manage your calendar, and play games.
To learn more about mobile operating systems, check out our Mobile Devices tutorials.
![computer operating system assignment previous](https://media.gcflearnfree.org/assets/icons/textplus/bottom-nav-left-arrows.png)
/en/computerbasics/understanding-applications/content/
![computer operating system assignment swayam-logo](https://storage.googleapis.com/swayam2-node/assets/img/swayam_images/swayam_logo.png)
IMAGES
VIDEO
COMMENTS
This section provides materials for Week 1: Operating Systems Part I . Materials include lecture outlines, slides, and readings as well as recitation and assignment activities.
Programming Assignments Implement parts of Pintos operating system Built for x86 hardware, you will use hardware emulator One setup homework (lab 0) due Wednesday Four implementation projects: Threads Multiprogramming
This class introduces the basic facilities provided by modern operating systems. The course divides into three major sections. The first part of the course discusses concurrency: how to manage multiple tasks that execute at the same time and share resources. Topics in this section include processes and threads, context switching ...
OS is a key part of a computer system. It makes our life better (or worse) It is "magic" to realize what we want. It gives us "power" (reduce fear factor) Learn how computer systems really work, who does what, how. Learn key CS concepts: abstraction, layering, virtualization, indirection. Learn about concurrency.
What is an Operating System? An operang system ("OS") is s computer. oaware that allows people to run programs on a • Examples: iOS, Android, Windows, macOS, Linux You may think mostly of the user interface of the operang system, but an operang system does so much more!
History of Operating Systems. Phase 1: Hardware expensive, humans cheap. User at console: single-user systems. Batching systems. Multi-programming systems. Phase 2: Hardware cheap, humans expensive. Timesharing: Users use cheap terminals and share CPU. Timesharing (1970-) Timer interrupt used to multiplex CPU between jobs.
Lectures on Operating Systems. This page serves as a reference for teaching/learning operating systems (OS). The material consists of video lectures, annotated slides used in the videos, practice problems with solutions, programming lab assignments, and additional reading material for reference. The content is broadly divided into the following ...
Overview This is an in-depth course in operating systems design and implementation, focusing on multicore operating systems kernels. Operating systems are some of the most complex software artifacts that exist. Kernels abstract the features provided by computer hardware, making those features safer and more convenient to use.
This section contains the in-class assignments for the course, including any associated files.
Teach you to deal with larger so ware systems Programming assignments much larger than many courses Warning: Many people will consider course very hard In past, majority of people report 15 hours/week Prepare you to take graduate OS classes (CS240, 240[a-z])
What is an Operating System? operating system. /ˈäpəˌrādiNG ˌsistəm/. noun. software that manages a computer's resources for users and their applications [1] provides applications with perfomant, safe and flexible access to hardware and software services.
This course covers the principles of operating systems. It emphasizes the basic concepts of OS kernel organization and structure, processes and threads, concurrency and synchronization, memory management, file systems, and communication. It is also a project course, providing essential experience in programming with concurrency, implementing ...
An operating system is software that manages computer hardware. The hardware must provide appropriate mechanisms to ensure the correct operation of the computer system and to prevent user programs from interfering with the proper operation of the system. A more common definition is that the operating system is the one program running at all times on the computer (usually called the kernel ...
This file contains the information regarding Operating System Engineering, Assignment 1.
Ring for Operating Systems1 The world of Systems and more speci cally Operating Systems is the subject of this course. As part the rst lecture we will setup context for this sub-area in Computer Science and Engineering, understand its need, requirements and services, discuss a few key building blocks in the design of a modern operating system and end with a set of examples of the above.
Introduction to Operating Systems is a graduate-level introductory course in operating systems. This course teaches basic operating system abstractions, mechanisms, and their implementations. The core of the course focuses on OS support for concurrency (threads) and synchronization, resource management (CPU, memory, I/O), and distributed services.
Hence today most common operating systems blur the distinction between kernel and microkernel. e.g. linux is a "kernel", but has kernel modules and certain servers.
An operating system is the most important software that runs on a computer. It manages the computer's memory and processes, as well as all of its software and hardware. It also allows you to communicate with the computer without knowing how to speak the computer's language. Without an operating system, a computer is useless.
This course forms part of a series of courses that offers a good starting point for a career in cybersecurity. It will help you gain knowledge and skills related to Computers and Operating Systems, Enterprise Systems, and Security, including Business Systems Applications. This course gets you one step closer to the Microsoft Cybersecurity ...
Operating System is a computer software that manages the hardware components. It acts as an intermediary between the users and the hardware. It is responsible for managing the system resources and providing a smooth working environment for the users. The management includes the following - process management, processor management, memory ...
An operating system acts as an interface between the software and different parts of the computer or the computer hardware. The operating system is designed in such a way that it can manage the overall resources and operations of the computer. Operating System is a fully integrated set of specialized programs that handle all the operations of ...
Explore top courses and programs in Operating System. Enhance your skills with expert-led lessons from industry leaders. Start your learning journey today!
This beginner friendly course provides the core hardware and operating system knowledge needed by anyone new to IT and computer hardware who wants to start a new career in technology, including IT Support, Networking, Cybersecurity, and Software Development. You will first be introduced to computing fundamentals, the four functions of computing ...