cosc 3407: operating systems lecture 1: introduction kalpdrum passi

30
Today Course overview What is an operating system --- and what isn’t it? Principles of operating system design Why study operating systems?

Upload: melvyn-curtis

Post on 26-Dec-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Today Course overview What is an operating system --- and what isn’t

it? Principles of operating system design Why study operating systems?

Page 2: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Course overview Website:

http://www.cs.laurentian.ca/kpassi/cosc3407.html

Instructor:» Kalpdrum Passi ([email protected])

Key dates:– Lectures: MonWed 10:00-11:30 in FA 358– Midterm: Monday, February 24, 2014

Page 3: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Course Overview (Continued) Material:

– Lecture notes – On website. – Textbook – Silberschatz, Galvin, and Gagne,

Operating System Concepts (Ninth Edition) Prerequisites:

– Data Structures – (COSC 2007)– Machine Structures – (COSC 2406)

Grading Policy– Project: 30%– Midterm Exam 30%– Quiz’s/Assignments 10%– Final Exam: 30%

Give me a sign you learned the material.

Page 4: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Word of warning I have a firm belief in you learn by doing.

– Learn OS concepts by coding them! Key Course Features

– Most of the work comes from intense coding.– If the first piece of your project doesn’t work, the

rest won’t work either.– This project is used at many other Universities, so

it’s well known that it’s “doable.”– You will learn a lot! You will have to work hard!

Page 5: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Project Use Nachos instructional system

– Includes code for a simple but complete operating system and a machine simulator used to run “real” programs

– Your task is to extend various components of Nachos Goals

– Learn how to read someone else’s code– Learn the internals of an operating system– Improve programming skills

Structure– Teams of 4 – start looking for partners– 2 parts: synchronization & threads, and

multiprogramming

Page 6: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

What is an operating system?

Definition: An operating system implements a virtual machine that is (hopefully) easier and safer to program and use than the raw hardware.

application (user)

Operating system

hardware

Virtual Machine Interface

Physical Machine Interface

Page 7: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Abstract View of System Components

Page 8: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Operating System Definitions In some sense, OS is just a software engineering

problem: how do you convert what the hardware gives you into something that the application programmers want?

For any OS area (file systems, virtual memory, networking, CPU scheduling), you begin by asking two questions:– What’s the hardware interface? (the physical

reality)– What’s the application interface? (the nicer

abstraction) Of course, should also ask why the interfaces look

the way they do, and whether it might be better to push more responsibilities into applications or into hardware, or vice versa. (examples, RISC architectures, VBasic libraries, etc.)

Page 9: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Virtual Machines Virtual machine model provides software emulation of an

abstract machine Also used to allow programs for one hardware & OS

platform to run on another one (e.g., Windows programs on a Macintosh), perhaps even running several VMs concurrently.

Useful for OS research and development (much easier to debug)

Protection and portability (e.g., Java VM) The project in this course is to build some of the portable

components of an OS on top of Nachos, which provides a simulation environment.

That is, it simulates the hardware and machine-dependent layer (interrupts, I/O, etc.) and the execution of user programs running on top of it.

Note that Nachos runs on many different hardware/OS platforms.

Page 10: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Operating systems have two general functions1. Coordinator & traffic cop: allow multiple

applications/users to work together in efficient and fair ways (examples: concurrency, memory protection, file systems, networking). – This is Resource Allocation and Control. – Goals are fair management of shared resources,

protection, and efficiency.

2. Standard services: provide standard facilities that everyone needs (examples: standard libraries, windowing systems). 1. View OS as a facilitator. 2. Goal is to make application programming easier,

faster, and less error-prone.

Page 11: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

So, what is in an OS and what isn’t? Of course, there is no universal agreement on this but: Most likely:

– Memory management– i/o management– CPU scheduling– communications? (Does Email belong in OS?)– multitasking/multiprogramming

What about?:– File System– Multimedia support– User Interface (window manager)– Internet Browser? .

Bonus question: is this just of interest to academics? If not then why might it be important?

Page 12: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Operating System Definition (Cont.) No universally accepted definition “Everything a vendor ships when you order an

operating system” is good approximation– But varies wildly

“The one program running at all times on the computer” is the kernel. – Everything else is either a system program (ships

with the operating system) or an application program

Page 13: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

What if you didn’t have an operating system? source code -> compiler -> object code ->

hardware How do you get object code onto the hardware? How do you print out the answer? Before OS’s, used to have to toggle in program in

binary, and then read out answers from LED’s!

Altair 8080

Page 14: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Simple OS: What if only one application at a time? Examples:

– very early computers, – early PC’s, – embedded controllers (elevators, cars, Nintendos,

...), PDAs, intelligent light switches,…

Then OS is just a library of standard services. – Examples: standard device drivers, interrupt

handlers, math libraries, etc.

Page 15: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

MS-DOS Layer Structure

Page 16: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

More complex OS: what if you want to share the machine among multiple applications? Full Coordination and Protection

– Manage interactions between different applications and different users,

– Multiplex and protect Hardware Resources» CPU, physical memory, I/O devices like disks and

printers, interrupts, etc.

Facilitator– Still provide libraries of standard services.

Would this complexity make sense if there were only one application that you cared about?

Page 17: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Example of OS coordination: protection Problem: How do different applications run on the

same machine at the same time, without stomping on each other?

Goals of protection:– Keep user programs from crashing OS– Keep user programs from crashing each other

(Some of the required) Mechanisms:– Address Translation– Dual Mode Operation

Simple Policy:– Programs are not allowed to read/write memory

of other Programs or of Operating System

Page 18: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Hardware support for protection Hardware provides two things to help isolate a

program’s effects to within just that program:– Address translation– Dual mode operation

Page 19: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Address translation Address space: literally, all the memory

addresses a program can touch. – All the state that a program can affect or be

affected by. Achieve protection by restricting what a program

can touch! Hardware translates every memory reference

from virtual addresses to physical addresses; software sets up and manages the mapping in the translation box.

Page 20: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Address translation (cont.)

Two views of memory:– View from the CPU – what program sees, virtual

memory– View from memory – physical memory

Translation box (also called a memory management unit) converts between the two views.

Page 21: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Address translation (cont.)

Page 22: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Address translation (cont.) Translation helps implement protection because

there is no way for a program to even talk about other program’s addresses; no way for it to touch operating system code or data.

Translation also helps with the issue of how to stuff multiple programs into memory.

Translation is implemented using some form of table lookup (we’ll discuss various options for implementing the translation box later).

Separate table for each user address space.

Page 23: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Dual mode operation Can an application modify its own translation tables?

– If it could, then it could get access to all of physical memory. – Has to be restricted somehow.

Dual-mode operation– When in the OS, can do anything (called “kernel mode”,

“supervisor mode”, or “protected mode”).– When in a user program, restricted to only touching that

program’s memory (user-mode). Implemented by setting a hardware-provided bit. Restricted operations can only be performed when the

“kernel-mode” bit is set. Only the operating system itself can set and clear this bit.

Page 24: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Dual mode operation HW requires CPU to be in kernel-mode to modify address

translation tables. Isolate each address space so its behavior can’t do any

harm, except to itself.

Remember: don’t need boundary between kernel and application if system is dedicated to a single application.

Page 25: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Dual mode operation So how do user programs do something privileged?

– e.g., how can you write to a disk if you can’t do I/O instructions?

User programs must call an OS procedure– OS defines a sequence of system calls– how does the user-mode to kernel-mode transition

happen?

Page 26: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Dual mode operation There must be a system call instruction, which:

– causes an exception (throws a software interrupt), which vectors to a kernel handler

– passes a parameter indicating which system call to invoke

– saves caller’s state (regs, mode bit) so they can be restored

– OS must verify caller’s parameters (e.g. pointers)– must be a way to return to user mode once done

Page 27: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

UNIX System Structure

User Mode

Kernel Mode

Hardware

Applications

Standard Libs

Page 28: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Operating Systems Principles Throughout the course, you’ll see four common themes

recurring over and over: OS as illusionist – make hardware limitations go away.

OS provides illusion of dedicated machine with infinite memory and infinite processors.

OS as government – protect users from each other and allocate resources efficiently and fairly.

OS as complex system – keeping things simple is key to getting it to work; but there is a constant tension between this and the desire to add more functionality and performance.

OS as history teacher – learn from past to predict the future in order to improve performance.

Meta principles – OS design trade-offs change

Page 29: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Why study operating systems? You need to understand enough to make informed decisions

about things like:– Buying and using a personal computer:

» Why do different PCs with the same CPU perform differently?» How do I choose between an AMD CPU and an Intel Itanium, Celeron,

or Pentium 4 CPU?» Should I get Windows 2000? Windows XP? Linux? What’s the

difference?» Should I upgrade my hardware? Should I upgrade my OS?» What’s going on with my PC, especially when I have to install

something?» Should I use disk compression? Is there a cost to using it?

– Business (and personal) decisions about thin-clients vs. PCs:» What are the issues involved?» What kinds of choices are being offered?

– Business decisions in general: how important are various capabilities (such as fault tolerance) and what should they cost?

– Security and viruses: what exposures do I have to worry about?– Why is the Web so slow sometimes and is there anything I can do

about it?

Page 30: COSC 3407: Operating Systems Lecture 1: Introduction Kalpdrum Passi

Why study operating systems? If you’re going to be a software engineer then you’ll need

to understand various things about the environment offered by the OS you’re running on:– What abstractions does the OS provide? E.g., the OS may (or

may not) provide illusions such as infinite CPU’s, infinite memory, single worldwide computing, etc.

– What system design trade-offs have been made? » E.g., what functionality has been put in hardware? » What trade-offs have been made between simplicity and

performance, putting functionality in hardware vs. software, etc?

Capstone: combines things from many other areas of computer science – languages, hardware, data structures, and algorithms; – In general, systems smarts, complex software development

(in groups), and intuition for general systems tradeoffs.