Chapter 6 Limited Direct Execution Chien-Chung Shen CIS/UD

Slides:



Advertisements
Similar presentations
More on Processes Chapter 3. Process image _the physical representation of a process in the OS _an address space consisting of code, data and stack segments.
Advertisements

The Kernel Abstraction. Challenge: Protection How do we execute code with restricted privileges? – Either because the code is buggy or if it might be.
Chapter 6 Limited Direct Execution
CMPT 300: Operating Systems I Dr. Mohamed Hefeeda
CSC 501 Lecture 2: Processes. Von Neumann Model Both program and data reside in memory Execution stages in CPU: Fetch instruction Decode instruction Execute.
Architectural Support for OS March 29, 2000 Instructor: Gary Kimura Slides courtesy of Hank Levy.
Figure 2.8 Compiler phases Compiling. Figure 2.9 Object module Linking.
1 School of Computing Science Simon Fraser University CMPT 300: Operating Systems I Dr. Mohamed Hefeeda.
OS Fall ’ 02 Introduction Operating Systems Fall 2002.
Home: Phones OFF Please Unix Kernel Parminder Singh Kang Home:
OS Spring’03 Introduction Operating Systems Spring 2003.
1 Last Class: Introduction Operating system = interface between user & architecture Importance of OS OS history: Change is only constant User-level Applications.
Operating Systems 1 K. Salah Module 1.2: Fundamental Concepts Interrupts System Calls.
1 Process Description and Control Chapter 3 = Why process? = What is a process? = How to represent processes? = How to control processes?
Process Description and Control A process is sometimes called a task, it is a program in execution.
OS Spring’04 Introduction Operating Systems Spring 2004.
1 OS & Computer Architecture Modern OS Functionality (brief review) Architecture Basics Hardware Support for OS Features.
Chapter 2 The OS, the Computer, and User Programs Copyright © 2008.
I/O Tanenbaum, ch. 5 p. 329 – 427 Silberschatz, ch. 13 p
1 CSC 2405: Computer Systems II Spring 2012 Dr. Tom Way.
CSE 451: Operating Systems Autumn 2013 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Introduction to Embedded Systems
System Calls 1.
Protection and the Kernel: Mode, Space, and Context.
OPERATING SYSTEM OVERVIEW. Contents Basic hardware elements.
CSC 501 Lecture 2: Processes. Process Process is a running program a program in execution an “instantiation” of a program Program is a bunch of instructions.
Architecture Support for OS CSCI 444/544 Operating Systems Fall 2008.
Recall: Three I/O Methods Synchronous: Wait for I/O operation to complete. Asynchronous: Post I/O request and switch to other work. DMA (Direct Memory.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto OS-Related Hardware.
1 CS/COE0447 Computer Organization & Assembly Language Chapter 5 part 4 Exceptions.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
The Stack This is a special data structure: –The first item to be placed into the stack will be the last item taken out. Two basic operations: –Push: Places.
Chapter 2 Introduction to OS Chien-Chung Shen CIS, UD
Interrupt driven I/O. MIPS RISC Exception Mechanism The processor operates in The processor operates in user mode user mode kernel mode kernel mode Access.
1 CSE451 Architectural Supports for Operating Systems Autumn 2002 Gary Kimura Lecture #2 October 2, 2002.
Lecture Topics: 10/29 Architectural support for operating systems –timers –kernel mode –system calls –protected instructions.
We will focus on operating system concepts What does it do? How is it implemented? Apply to Windows, Linux, Unix, Solaris, Mac OS X. Will discuss differences.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Operating Systems 1 K. Salah Module 1.2: Fundamental Concepts Interrupts System Calls.
1 Computer Systems II Introduction to Processes. 2 First Two Major Computer System Evolution Steps Led to the idea of multiprogramming (multiple concurrent.
Operating Systems CSE 411 CPU Management Sept Lecture 10 Instructor: Bhuvan Urgaonkar.
Concurrency, Processes, and System calls Benefits and issues of concurrency The basic concept of process System calls.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
Chapter 2 Process Management. 2 Objectives After finish this chapter, you will understand: the concept of a process. the process life cycle. process states.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
Interrupts and Exception Handling. Execution We are quite aware of the Fetch, Execute process of the control unit of the CPU –Fetch and instruction as.
1.1 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 1: Introduction What Operating Systems Do √ Computer-System Organization.
Virtualizing the CPU: Processes 1. How to provide the illusion of many CPUs? CPU virtualizing – The OS can promote the illusion that many virtual CPUs.
Introduction to Operating Systems Concepts
Introduction to Operating Systems
Limited Direct Execution
Operating Systems CMPSC 473
Anton Burtsev February, 2017
Protection of System Resources
Scheduler activations
Mechanism: Limited Direct Execution
Day 08 Processes.
Day 09 Processes.
CS 3305 System Calls Lecture 7.
CSE 451: Operating Systems Spring 2012 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Architectural Support for OS
Chapter 10 And, Finally... The Stack
System Calls David Ferry CSCI 3500 – Operating Systems
CSE 451: Operating Systems Autumn 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 596 Allen Center 1.
CSE 451: Operating Systems Autumn 2001 Lecture 2 Architectural Support for Operating Systems Brian Bershad 310 Sieg Hall 1.
CSE 451: Operating Systems Winter 2007 Module 2 Architectural Support for Operating Systems Brian Bershad 562 Allen Center 1.
CSE 451: Operating Systems Winter 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 412 Sieg Hall 1.
Architectural Support for OS
Presentation transcript:

Chapter 6 Limited Direct Execution Chien-Chung Shen CIS/UD

Virtualization Mechanism Virtualize (physical) CPU via “time” sharing Two challenges –performance – with minimum overhead –control – retain control of CPU Challenge: how to efficiently virtualize CPU with control  attaining performance while maintaining control Need hardware support –mode bit Technique: Limited Direct Execution

Direction Execution without Limits OS Program create an entry in process list allocate memory for process load program into memory set up stack with argc / argv clear registers execute “call main() ” run main() execute return from main() free memory of process remove from process list Question: what happens when the program runs forever?

Limited Direct Execution “Direct Execution” – run programs directly on CPU Two issues #1 if we just run a program, how can OS make sure the program doesn’t do anything that we don’t want it to do, while still running it efficiently? #2 when we are running a process, how does OS stop it from running and switch to another process (i.e., how does OS implement time sharing)? Without limits on running programs, the OS would not be in control of anything

How to Perform Restricted Operations? A user process must be able to perform I/O and some other restricted operations, but without giving the process complete control over the system How can OS and hardware work together to do so?

#1 Restricted Operations Advantage of direct execution: –fast - program runs natively on hardware CPU and thus executes as quickly as one would expect What if the process wishes to perform “restricted” operations (e.g., I/O request or accessing more resources)? How to perform restricted operation on behalf of user process? –OS and H/W work together  protected control transfer

Protected Control Transfer Hardware assists OS by providing different modes of execution –mode bit to dedicate processor mode user mode - applications do not have full access to hardware resources (e.g., cannot issue I/O requests) kernel mode – OS can do anything and has access to the full resources of the machine Issue: what should a user process do when it wishes to perform privileged operation, such as open a file or read from a file? perform system calls

System Calls special instructions to “trap” into the kernel and “return-from-trap” back to user-mode programs instructions that allow OS to tell the hardware where the trap table resides in memory trap : simultaneously jumps into kernel, sets mode bit to K, and switch to kernel stack (per process) system call # From Operating Systems in Depth, by Thomas Doeppner

System Call count = read(fd, buffer, nbytes); system call # [U  K] (pop) From Modern Operating Systems, 4 th edition, by Tanenbaum and Bos

System Calls Allow kernel to carefully expose certain key pieces of functionalities (access files, create process, IPC, etc.) to user programs trap instruction –jump into kernel and raise privilege level to kernel mode –push PC/SP onto per-process kernel stack return-from-trap instruction –pop PC/SP off stack –return to calling program and reduce privilege level to user mode Setup trap table (interrupt vector) at boot time –tell hardware what code to run when exceptional events occur, e.g., hard-disk or keyboard interrupt, or system call

Limited Direct Execution time process creation

#2 Switching between Processes When one process is running on CPU, OS is not running  if OS is not running, how can it do anything at all? How can OS regain control of CPU so it can switch from one process to another? 1.cooperative approach - process gives up CPU periodically when making system calls (e.g., yield ) or does something illegal (illegal memory access) – what about infinite loop? 2.non-cooperative approach: OS takes control – need hardware support – timer interrupt – when interrupt raised, interrupt handler in OS runs, and OS regain control

Timer Interrupt At boot time, –OS inform hardware of which code to run when (timer) interrupts occur –OS starts the timer When interrupt occurs, hardware save the context (machine state) of the currently running process such that a subsequent return-from-trap instruction could resume its execution

Saving and Restoring Context OS regains control of CPU cooperatively via system call or forcefully via timer interrupt Scheduler decides which process to run next Context switching –save context – execute assembly code to save PC, general registers, kernel stack pointer of “currently-running” process onto its kernel stack –restore context – restore registers, PC, and switch to the kernel stack for the soon-to- be-running process

Switching Stack Kernel enters “switch code” in the context of the interrupted process and returns in the context of the soon-to-be-executing process Two types of register saves/restores –when timer interrupt occurs, user registers of running process are implicitly saved by hardware into kernel stack of that process –when OS decides to switch from A to B, kernel registers are explicitly saved by software (i.e., the OS) into memory in the process structure of the process moves the system from running as if it just trapped into the kernel from A to as if it just trapped into the kernel from B

Limited Direct Execution with Timer Interrupt time Two types of register save and restore when timer interrupt occurs – user registers of running process are implicitly saved by hardware into kernel stack of the process when OS decides to switch process – kernel registers are explicitly saved by OS software into PCB of process

Concurrency What happens when timer interrupt occurs during system call? What happens when interrupt occurs during the handling of an earlier interrupt? Two possible solutions –disabling interrupts during interrupt processing –locking to protect concurrent access to internal kernel data structures

Why System Calls Look Like Procedure Calls? You may wonder why a call to a system call, such as open() or read(), looks exactly like a typical procedure call in C; that is, if it looks just like a procedure call, how does the system know it’s a system call, and do all the right stuff? The simple reason: it is a procedure call, but hidden in- side that procedure call is the famous trap instruction. More specifically, when you call open() (for example), you are executing a procedure call into the C library. Therein, whether for open() or any of the other system calls provided, the library uses an agreed-upon calling convention with the kernel to put the arguments to open in well-known locations (e.g., on the stack, or in specific registers), puts the system-call number into a well-known location as well (again, onto the stack or a register), and then executes the aforementioned trap instruction. The code in the library after the trap unpacks return values and returns control to the program that issued the system call. Thus, the parts of the C library that make system calls are hand-coded in assembly, as they need to carefully follow convention in order to process arguments and return values correctly, as well as execute the hardware-specific trap instruction. And now you know why you personally don’t have to write assembly code to trap into an OS; somebody has already written that assembly for you.