0% found this document useful (0 votes)
41 views

Administrivia: .Stanford - Edu

This document provides administrative information for the CS140 Operating Systems course at Stanford University. It outlines course resources like the class webpage and textbook, as well as key dates and policies. The course will cover fundamental operating system concepts like threads, processes, concurrency, virtual memory, I/O, and file systems using examples from Unix-like systems. Students will complete programming assignments implementing parts of the Pintos operating system to learn about designing and building large software systems.

Uploaded by

cedassss
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Administrivia: .Stanford - Edu

This document provides administrative information for the CS140 Operating Systems course at Stanford University. It outlines course resources like the class webpage and textbook, as well as key dates and policies. The course will cover fundamental operating system concepts like threads, processes, concurrency, virtual memory, I/O, and file systems using examples from Unix-like systems. Students will complete programming assignments implementing parts of the Pintos operating system to learn about designing and building large software systems.

Uploaded by

cedassss
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Administrivia

Class web page: http://cs140.scs.stanford.edu/

CS140 Operating Systems


Instructors: David Mazi` res, Andrea Bittau (alt) e CAs: Juan Batiz-Benet, Matt Sparks, Kiyoshi Shikuma, Ali Yahya Stanford University

- All assignments, handouts, lecture notes on-line

Textbook: Operating System Concepts, 8th Edition, by Silberschatz, Galvin, and Gagne
- This is the ofcial textbook, but mostly for background - Class will not rely heavily on textbook - Old versions okay, or might get away without textbook

Goal is to make lecture slides the primary reference


- Almost everything I talk about will be on slides - PDF slides contain links to further reading about topics - Please download slides from class web page

1/33

2/33

Administrivia 2
Staff mailing list: [email protected]
- Please mail staff list rather than individuals for help

Lecture videos
Lectures will be televised for SCPD students
- Can also watch if you miss a lecture, or to review - But resist temptation to miss a bunch of lectures and watch them all at once

Newsgroup: su.class.cs140 main discussion forum Key dates:


- Lectures: TTh 4:15-5:30, Gates B03 - Section: Some Fridays, time/location TBD - Midterm: Tuesday, Feb 8, 4:155:30pm - Final: Wednesday, March 16, 12:15pm3:15pm

SCPD students welcome to attend lecture in person


- 4:15pm lecture time conveniently at end of day - Many parking spaces dont require permit after 4pm

Other notes for SCPD students:


- Please attend exams in person if possible - Feel free to use newsgroup to nd project partners

Exams open book, can bring copies of slides


- No electronic devices permitted

3/33

4/33

Course topics
Threads & Processes Concurrency & Synchronization Scheduling Virtual Memory I/O Disks, File systems, Network le systems Protection & Security Real-life operating systems Note: Lectures will often take Unix as an example
- Most current and future OSes heavily inuenced by Unix - Windows is exception; this quarter we will mostly ignore
5/33

Course goals
Introduce you to operating system concepts
- Hard to use a computer without interacting with OS - Understanding the OS makes you a more effective programmer

Cover important systems concepts in general


- Caching, concurrency, memory management, I/O, protection

Teach you to deal with larger software 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])


6/33

Programming Assignments
Implement parts of Pintos operating system
- Built for x86 hardware, you will use hardware emulator

Grading
No incompletes
- Talk to me ASAP if you run into real problems

One setup homework (lab 0) due Thursday Four implementation projects:


- Threads - Multiprogramming - Virtual memory - File system

50% of grade based on exams using this quantity: max (midterm > 0 ? nal : 0, (midterm + nal) /2) 50% of grade from projects
- For each project, 50% of score based on passing test cases - Remaining 50% based on design and style

Most peoples projects pass most test cases


- Please, please, please turn in working code, or no credit here

Lab 1 distributed at end of this week


- Attend section this Friday for project 1 overview

Means design and style matter a lot


- Large software systems not just about producing working code - Need to produce code other people can understand - Thats why we have group projects
7/33 8/33

Implement projects in groups of up to 3 people


- Pick your partners today - Lecture will end early so that you can do this

Style
Must turn in a design document along with code
- We supply you with templates for each projects design doc

Assignment requirements
Do not look at other peoples solutions to projects Can read but dont copy other OSes
- E.g., Linux, OpenBSD/FreeBSD, etc.

CAs will manually inspect code for correctness


- E.g., must actually implement the design - Must handle corner cases (e.g., handle malloc failure)

Cite any code that inspired your code


- As long as you cite what you used, its not cheating - Worst case we deduct points if it undermines the assignments

Will deduct points for error-prone code w/o errors


- Dont use global variables if automatic ones sufce - Dont use deceptive names for variables

Projects due on Thursdays at start of lecture


- Free extension to midnight if you attend lecture - Or if you are SCPD and watch lecture before midnight

Code must be easy to read


- Indent code, keep lines and (when possible) functions short - Use a uniform coding style (try to match existing code) - Put comments on structure members, globals, functions - Dont leave in reams of commented-out garbage code
9/33

Ask cs140-staff for extension if you run into trouble


- Be sure to tell us: How much have you done? How much is left? When can you nish by?
10/33

What is an operating system?


Layer between applications and hardware

Why study operating systems?


Operating systems are a maturing eld
- Most people use a handful of mature OSes - Hard to get people to switch operating systems - Hard to have impact with a new OS

High-performance servers are an OS issue


- Face many of the same issues as OSes

Makes hardware useful to the programmer [Usually] Provides abstractions for applications
- Manages and hides details of hardware - Accesses hardware through low/level interfaces unavailable to applications

Resource consumption is an OS issue


- Battery life, radio spectrum, etc.

Security is an OS issue
- Hard to achieve security without a solid foundation

[Often] Provides protection


- Prevents one process/user from clobbering another
11/33

New smart devices need new OSes Web browsers increasingly face OS issues
12/33

Primitive Operating Systems


Just a library of standard services [no protection]

Multitasking

Idea: Run more than one process at once


- When one process blocks (waiting for disk, network, user input, etc.) run another process - Standard interface above hardware-specic drivers, etc.

Problem: What can ill-behaved process do?


- Go into innite loop and never relinquish CPU - Scribble over other processes memory to make them fail

Simplifying assumptions
- System runs one program at a time - No bad users or programs (often bad assumption)

OS provides mechanisms to address these problems


- Preemption take CPU away from looping process - Memory protection protect processs memory from one another

Problem: Poor utilization


- . . . of hardware (e.g., CPU idle while waiting for disk) - . . . of human user (must wait for each program to nish)
13/33

14/33

Multitasking

Multi-user OSes

Idea: Run more than one process at once


- When one process blocks (waiting for disk, network, user input, etc.) run another process

Problem: What can ill-behaved process do?


- Go into innite loop and never relinquish CPU - Scribble over other processes memory to make them fail

Many OSes use protection to serve distrustful users Idea: With N users, system not N times slower
- Users demands for CPU, memory, etc. are bursty - Win by giving resources to users who actually need them

OS provides mechanisms to address these problems


- Preemption take CPU away from looping process - Memory protection protect processs memory from one another

What can go wrong?


- Users are gluttons, use too much CPU, etc. (need policies) - Total memory usage greater than in machine (must virtualize) - Super-linear slowdown with increasing demand (thrashing)
14/33 15/33

Multi-user OSes

Protection
Mechanisms that isolate bad programs and people Pre-emption:
- Give application a resource, take it away if needed elsewhere

Interposition: Many OSes use protection to serve distrustful users Idea: With N users, system not N times slower
- Users demands for CPU, memory, etc. are bursty - Win by giving resources to users who actually need them - Place OS between application and stuff - Track all pieces that application allowed to use (e.g., in table) - On every access, look in table to check that access legal

Privileged & unprivileged modes in CPUs :


- Applications unprivileged (user/unprivileged mode) - OS privileged (privileged/supervisor mode) - Protection operations can only be done in privileged mode

What can go wrong?


- Users are gluttons, use too much CPU, etc. (need policies) - Total memory usage greater than in machine (must virtualize) - Super-linear slowdown with increasing demand (thrashing)
15/33

16/33

Typical OS structure
P1
user kernel

System calls

P2

P3

P4

VM le IPC system sockets scheduler device TCP/IP device device


driver driver driver

network

console

disk

Most software runs as user-level processes (P[1-4]) OS kernel runs in privileged mode [shaded]
- Creates/deletes processes - Provides access to hardware
17/33

Applications can invoke kernel through system calls


- Special instruction transfers control to kernel - . . . which dispatches to one of few hundred syscall handlers
18/33

System calls (continued)


Goal: Do things app. cant do in unprivileged mode
- Like a library call, but into more privileged kernel code

System call example

Kernel supplies well-dened system call interface


- Applications set up syscall arguments and trap to kernel - Kernel performs operation and returns result

Higher-level functions built on syscall interface


- printf, scanf, gets, etc. all user-level code

Example: POSIX/UNIX interface


- open, close, read, write, ...

Standard library implemented in terms of syscalls


- printf in libc, has same privileges as application - calls write in kernel, which can send bits out serial port
19/33 20/33

UNIX le system calls


Applications open les (or devices) by name
- I/O happens through open les

Error returns
What if open fails? Returns -1 (invalid fd) Most system calls return -1 on failure
- Specic kind of error in global int errno

int open(char *path, int flags, /*mode*/...);


- flags: O RDONLY, O WRONLY, O RDWR - O CREAT: create the le if non-existent - O EXCL: (w. O CREAT) create if le exists already - O TRUNC: Truncate the le - O APPEND: Start writing from end of le - mode: nal argument with O CREAT

#include <sys/errno.h> for possible values


- 2 = ENOENT No such le or directory - 13 = EACCES Permission Denied

perror function prints human-readable message


- perror ("initfile"); initfile: No such file or directory

Returns le descriptorused for all I/O to le

21/33

22/33

Operations on le descriptors
int read (int fd, void *buf, int nbytes);
- Returns number of bytes read - Returns 0 bytes at end of le, or -1 on error

File descriptor numbers


File descriptors are inherited by processes
- When one process spawns another, same fds by default

Descriptors 0, 1, and 2 have special meaning


- 0 standard input (stdin in ANSI C) - 1 standard output (stdout, printf in ANSI C) - 2 standard error (stderr, perror in ANSI C) - Normally all three attached to terminal

int write (int fd, void *buf, int nbytes);


- Returns number of bytes written, -1 on error

off t lseek (int fd, off t pos, int whence);


- whence: 0 start, 1 current, 2 end Returns previous le offset, or -1 on error

Example: type.c
- Prints the contents of a le to stdout

int close (int fd);

23/33

24/33

type.c
void typefile (char *filename) { int fd, nread; char buf[1024]; fd = open (filename, O_RDONLY); if (fd == -1) { perror (filename); return; } while ((nread = read (fd, buf, sizeof (buf))) > 0) write (1, buf, nread); close (fd); }

Different system contexts


A system can typically be in one of several contexts User-level running an application Kernel process context
- Running kernel code on behalf of a particular process - E.g., performing system call - Also exception (mem. fault, numeric exception, etc.) - Or executing a kernel-only process (e.g., network le server)

Kernel code not associated w. a process


- Timer interrupt (hardclock) - Device interrupt - Softirqs, Tasklets (Linux-specic terms)

Context switch code changing address spaces


25/33 26/33

Transitions between contexts


User kernel process context: syscall, page fault User/process context interrupt handler: hardware Process context user/context switch: return Process context context switch: sleep Context switch user/process context

CPU preemption
Protection mechanism to prevent monopolizing CPU E.g., kernel programs timer to interrupt every 10 ms
- Must be in supervisor mode to write appropriate I/O registers - User code cannot re-program interval timer

Kernel sets interrupt to vector back to kernel


- Regains control whenever interval timer res - Gives CPU to another process if someone else needs it - Note: must be in supervisor mode to set interrupt entry points - No way for user code to hijack interrupt handler

Result: Cannot monopolize CPU with innite loop


- At worst get 1/N of CPU with N CPU-hungry processes

27/33

28/33

Protection is not security


How can you monopolize CPU?

Protection is not security


How can you monopolize CPU? Use multiple processes Until recently, could wedge many OSes with
int main() { while(1) fork(); } - Keeps creating more processes until system out of proc. slots

Other techniques: use all memory (chill program) Typically solved with technical/social combination
- Technical solution: Limit processes per user - Social: Reboot and yell at annoying users - Social: Pass laws (often debatable whether a good idea)

29/33

29/33

Address translation
Protect mem. of one program from actions of another Denitions
- Address space: all memory locations a program can name - Virtual address: addresses in process address space - Physical address: address of real memory - Translation: map virtual to physical addresses

More memory protection


CPU allows kernel-only virtual addresses
- Kernel typically part of all address spaces, e.g., to handle system call in same address space - But must ensure apps cant touch kernel memory

CPU lets OS disable virtual addresses


- Catch and halt buggy program that makes wild accesses - Make virtual memory seem bigger than physical (e.g., bring a page in from disk only when accessed)

Translation done on every load and store


- Modern CPUs do this in hardware for speed

CPU enforced read-only virtual addresses useful


- E.g., allows sharing of code pages between processes - Plus many other optimizations

Idea: If you cant name it, you cant touch it


- Ensure one processs translations dont include any other processs memory

CPU enforced execute disable of VAs


- Makes certain code injection attacks harder
30/33 31/33

Resource allocation & performance


Multitasking permits higher resource utilization Simple example:
- Process downloading large le mostly waits for network - You play a game while downloading the le - Higher CPU utilization than if just downloading

Useful properties to exploit


Skew
- 80% of time taken by 20% of code - 10% of memory absorbs 90% of references - Basis behind cache: place 10% in fast memory, 90% in slow, usually looks like one big fast memory

Past predicts future (a.k.a. temporal locality)


- Whats the best cache entry to replace? - If past = future, then least-recently-used entry

Complexity arises with cost of switching Example: Say disk 1,000 times slower than memory
- 1 GB memory in machine - 2 Processes want to run, each use 1 GB - Can switch processes by swapping them out to disk - Faster to run one at a time than keep context switching

Note conict between fairness & throughput


- Higher throughput (fewer cache misses, etc.) to keep running same process - But fairness says should periodically preempt CPU and give it to next process
32/33 33/33

type.c

Tue Jan 04 15:48:15 2011

#include <stdio.h> #include <unistd.h> #include <fcntl.h> void typefile (char *filename) { int fd, nread; char buf[1024]; fd = open (filename, O_RDONLY); if (fd == -1) { perror (filename); return; } while ((nread = read (fd, buf, sizeof (buf))) > 0) write (1, buf, nread); close (fd); } int main (int argc, char **argv) { int argno; for (argno = 1; argno < argc; argno++) typefile (argv[argno]); exit (0); }

You might also like