Professor G. Sandoval
Concurrency: threads, locks, deadlocks, race conditions.
Copyright By PowCoder代写 加微信 powcoder
Resource Management
Perf Analysis and Contention Resolution: queuing, CPU
Scheduling, prioritization
Interfaces and Hiding Complexity: sockets, file systems,
address spaces.
Dealing with Big Software
Understand operating system design and implementation
Confidence with C and Assembly language. Confidence with Github
We will use CampusWire for questions You will be invited shortly
Homework will consist of programming projects and questions from class
Each project will be done individually
Homework assignments must be submitted at the latest
when they are due.
You may submit multiple times as long as it’s before the
We have an automatic grader that will give you feedback
on realtime.
Based on both Homeworks and Lectures Study Guide
Zoom: nyu.zoom.us/my/Sandoval
Student hours:
▪ Will post times on CampusWire
▪ Email if you are coming so I make sure to be there.
If these times don’t work for you, email me
and we can set up a time to meet.
I am also pretty responsive on email during
core hours M-F(9 – 5)
Use CampusWire
TA student hours will be posted on Piazza
Throughout the semester we will be studying the source code of a UNIX-like operating system, xv6
The authors of xv6 have written a short (100 page) book about its implementation, which accompanies the source code. You *SHOULD* read it.
This has been posted on NYU Classes in the Resources section
Operating Systems: Three Easy Pieces
Free online at http://pages.cs.wisc.ed u/~remzi/OSTEP/
To complement lectures We will be using Modern Operating Systems, by . Tanenbaum
Ebook/PDF and international editions of the book are also fine.
A PDF Copy has been posted on NYU Classes
The homework will require you to write code in C
If you have worked with C++; C is in most respects a subset of C++
However, you may find that you need to understand the language in greater depth than you have before
We will review C during class and a recitation
If you have never programmed or never coded
in C you will have trouble with this class and you might FAIL.
Many of the programming assignments will involve modifying the xv6 OS to add new features or change how it works
You will need to use a UNIX-like operating system (Linux or OS X) to build and run the xv6 OS
We will run the xv6 operating system inside a PC emulator called QEMU, which will also need to be installed
▪ The command line
▪ The gcc compiler
▪ The gdb/VsCode debugger ▪ QEMU, a PC emulator
▪ Git and github
We have a virtual machine in the cloud to make the setup easier.
We will give you the instructions
Due 2 weeks after release
▪ Get you comfortable with the command line ▪ Get you comfortable with C
▪ Give you an idea of the difficulty of the class
30% Homework (Programming Projects) 30% Midterm (Take home)
30%Final (takehome)
10% Participation (Poll Anywhere)
Fridays will post times on campuswire
Review now and it’s in NYU Classes
The Jacquard Loom.
Invented by in
Used punched cards to describe patterns to weave
We’ll see such cards again…
Jacquard Loom could even be used to weave portraits
This one took 24,000 punch cards to specify
A picture is worth 1,000 words, or 24,000 punch cards
The Analytical Engine: designed by . (1837)
Intended to be able to carry out arbitrary computations
Never completed (lack of funding)
Contained:
▪ Arithmetic unit
▪ Conditional Branching ▪ Loops
First “Turing Complete”
(1815-1852) worked with Babbage to create programs for the Analytical Engine
Created an algorithm to compute Bernoulli numbers on the machine
First Programmer and also the first programmer to stay up all night working on code!
Electromechanical relay computer built in Germany by
Technically Turing-complete (proved in 1998), but typically just carried out specific calculations
Photo by Wikipedia User Jahoe
Designed by Tommy Flowers at Bletchley Park (England) for use in decrypting German radio teleprinter messages (not Enigma)
One of the programmers was
Used for atomic bomb computations in Manhattan Project
Program “loops” by physically connecting the end of the program tape to the start, forming a loop
One of it’s first programmers was
Photo by Wikipedia User Topory
Built at U Penn; used for artillery and hydrogen bomb computations
Photo by Wikipedia User TexasDex
One of the earliest to store code and data in the same memory
Origin of the term “von ”
Early machines were programmed directly in machine language (or even direct wiring!)
▪ No C, Java, Python, etc.
▪ Not even any assembly language
Each program is actually a plugboard wired up to configure the machine
This picture is from a company called Sparkler Filters, which still uses its IBM 402 from 1948
Operating systems turn ugly hardware into beautiful abstractions.
Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013
Top down view
▪ Provide abstractions to application programs
Bottom up view
▪ Manage pieces of complex system
Alternative view
▪ Provide orderly, controlled allocation of resources
The first generation (1945–55) vacuum tubes
The second generation (1955–65) transistors and batch
The third generation (1965–1980) ICs and
multiprogramming
The fourth generation (1980–present) personal computers
The fifth generation (1990–present) mobile computers
Vacuum tubes functioned as high-speed electronic switches
Access times for these machines are around 100 milliseconds (1/10 of a second)
Transistors allowed computers to be reliable enough for commercialization
Mainframes
Only government & Universities
Computing time was typically metered
Being able to fully use the CPU for the time you
were allotted was very important!
Transistor-based machines were also much faster
Access times around 100μs – that’s micro seconds
This is a speedup of ~1000x!
An individual job took a set of punch cards
Cards were loaded onto magnetic tape (using a fast
reader), carried over to the actual computer, and then
the output tape was brought over to a printer
The key idea of batch processing is to collect multiple
jobs which can be loaded onto the tape and then processed all at once
Integrated Circuits that contain many transistors
Consolidated both the cheap and expensive machines
IBM system/360 first one to use Integrated Circuits
Multiprogramming
Timesharing
Started here MULTICS -> UNIX (FreeBSD,
Linux, iOS, Android)
Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved.
Large Scale Integration Circuits (Chips) containing 1000s of transistor in a sq centimeter
IBM 8080
Microsoft DOS, Windows Apple
Nokia N9000/Symbian Windows Phone
Blackberry
iPhone/ iOS
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com