Chapter 2: Using the Operating System. The Airplane Pilot’s Abstract Machine.

Slides:



Advertisements
Similar presentations
Chapter 3 Process Description and Control
Advertisements

Slide 2-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 2 Using the Operating System 2.
CSC 501 Lecture 2: Processes. Von Neumann Model Both program and data reside in memory Execution stages in CPU: Fetch instruction Decode instruction Execute.
1 Processes Professor Jennifer Rexford
1 Processes and Pipes COS 217 Professor Jennifer Rexford.
Processes CSCI 444/544 Operating Systems Fall 2008.
Using the OS. Basic Abstractions Idea Program Result Idea Program Result Program Result … …
Page 1 Processes and Threads Chapter Processes 2.2 Threads 2.3 Interprocess communication 2.4 Classical IPC problems 2.5 Scheduling.
1 CS 333 Introduction to Operating Systems Class 2 – OS-Related Hardware & Software The Process Concept Jonathan Walpole Computer Science Portland State.
Review: Operating System Manages all system resources ALU Memory I/O Files Objectives: Security Efficiency Convenience.
Process Management. External View of the OS Hardware fork() CreateProcess() CreateThread() close() CloseHandle() sleep() semctl() signal() SetWaitableTimer()
Advanced OS Chapter 3p2 Sections 3.4 / 3.5. Interrupts These enable software to respond to signals from hardware. The set of instructions to be executed.
CS-502 Fall 2006Processes in Unix, Linux, & Windows 1 Processes in Unix, Linux, and Windows CS502 Operating Systems.
Unix & Windows Processes 1 CS502 Spring 2006 Unix/Windows Processes.
Chapter 6 Implementing Processes, Threads, and Resources.
Operating System Organization
Slide 6-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 6.
Processes in Unix, Linux, and Windows CS-502 Fall Processes in Unix, Linux, and Windows CS502 Operating Systems (Slides include materials from Operating.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3 Operating System Organization.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3.
Process. Process Concept Process – a program in execution Textbook uses the terms job and process almost interchangeably A process includes: – program.
Slide 6-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 6.
Chapter 3 Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
Chapter 3.1:Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
Introduction (Processes and Files)
Process Management. Processes Process Concept Process Scheduling Operations on Processes Interprocess Communication Examples of IPC Systems Communication.
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.
Threads, Thread management & Resource Management.
Processes and Threads CS550 Operating Systems. Processes and Threads These exist only at execution time They have fast state changes -> in memory and.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 3: Operating-System Structures System Components Operating System Services.
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.
Threads.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3.
Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2.
System calls for Process management
 For an application programmer, the operating system interface is most important  The functions provided by the OS  Abstract resources that are available.
Chapter 2 Processes and Threads Introduction 2.2 Processes A Process is the execution of a Program More specifically… – A process is a program.
Concurrency & Context Switching Process Control Block What's in it and why? How is it used? Who sees it? 5 State Process Model State Labels. Causes of.
CS4315A. Berrached:CMS:UHD1 Process Management Chapter 6.
1 Computer Systems II Introduction to Processes. 2 First Two Major Computer System Evolution Steps Led to the idea of multiprogramming (multiple concurrent.
1 Lecture 6 Introduction to Process Management COP 3353 Introduction to UNIX.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Processes and Threads.
Threads, Thread management & Resource Management.
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.
STRUCTURE OPERATING SYSTEMS. I. PROCESS MANAGEMENT Process a program in execution More than one process can be associated with a single program Each is.
Genesis: From Raw Hardware to Processes Andy Wang Operating Systems COP 4610 / CGS 5765.
2 Processor(s)Main MemoryDevices Process, Thread & Resource Manager Memory Manager Device Manager File Manager.
What is a Process ? A program in execution.
System calls for Process management Process creation, termination, waiting.
Slide 2-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 2.
MULTIMEDIA TECHNOLOGY SMM 3001 OPERATING SYSTEM. how operating systems software manage the computer how operating systems software manage the computer.
CSCI/CMPE 4334 Operating Systems Review: Exam 1 1.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Advanced Operating Systems CS6025 Spring 2016 Processes and Threads (Chapter 2)
Introduction to Operating Systems Concepts
Operating Systems: A Modern Perspective, Chapter 6
Chapter 3: Processes.
Chapter 4: Threads.
Using the Operating System
Lecture Topics: 11/1 General Operating System Concepts Processes
Modern PC operating systems
Operating Systems: A Modern Perspective, Chapter 3
Chapter 3: Processes.
Implementing Processes, Threads, and Resources
Processes in Unix and Windows
CSE 153 Design of Operating Systems Winter 2019
Implementing Processes, Threads, and Resources
Lecture 6 Introduction to Process Management
Presentation transcript:

Chapter 2: Using the Operating System

The Airplane Pilot’s Abstract Machine

Basic Abstractions Program Result Program Result Program Result … … Idea

Basic Abstractions(2) Program Result Abstract Machine Abstract Machine Program Result Program Result Abstract Machine Physical Machine … … Idea

Abstract Machine Entities Process: A sequential program in execution Resource: Any abstract resource that a process can request, and which may can cause the process to be blocked if the resource is unavailable. File: A special case of a resource. A linearly-addressed sequence of bytes. “A byte stream.”

Algorithms, Programs, and Processes Data Files Other Resources Algorithm Idea Source Program Source Program Binary Program Execution Engine Process Stack Status

Classic Process OS implements {abstract machine} – one per task Multiprogramming enables N programs to be space-muxed in executable memory, and time- muxed across the physical machine processor. Result: Have an environment in which there can be multiple programs in execution concurrently*, each as a processes * Concurrently: Programs appear to execute simultaneously

Process Abstraction Hardware Data Process Stack Processor Executable Memory Program Operating System

Processes Sharing a Program Shared Program Text P1P1 P2P2 P3P3 P1P1 P2P2 P3P3 Files

Multithreaded Accountant Purchase Orders Invoice (a) Separate Processes Purchase Orders Invoice First Accountant Second Accountant Accountant & Clone (b) Double Threaded Process

Modern Process & Thread Divide classic process: –Process is an infrastructure in which execution takes place – address space + resources –Thread is a program in execution within a process context – each thread has its own stack Data Process Stack Program Operating System Thread Stack …

A Process with Multiple Threads Data Files Other Resources Binary Program Process Stack Status Stack Status Stack Status Thread (Execution Engine)

More on Processes Abstraction of processor resource –Programmer sees an abstract machine environment with spectrum of resources and a set of resource addresses (most of the addresses are memory addresses) –User perspective is that its program is the only one in execution –OS perspective is that it runs one program with its resources for a while, then switches to a different process (context switching) OS maintains –A process descriptor data structure to implement the process abstraction Identity, owner, things it owns/accesses, etc. Tangible element of a process –Resource descriptors for each resource

Address Space Process must be able to reference every resource in its abstract machine Assign each unit of resource an address –Most addresses are for memory locations –Abstract device registers –Mechanisms to manipulate resources Addresses used by one process are inaccessible to other processes Say that each process has its own address space

Shared Address Space Classic processes sharing program  shared address space support Thread model simplifies the problem –All threads in a process implicitly use that process’s address space, but no “unrelated threads” have access to the address space –Now trivial for threads to share a program and data If you want sharing, encode your work as threads in a process If you do not want sharing, place threads in separate processes

Process & Address Space Address Space Code Resources Abstract Machine Environment Stack Data Resources

Creating a Process Here is the classic model for creating processes: FORK(label): Create another process in the same address space beginning execution at instruction label QUIT(): Terminate the process. JOIN(count): disableInterrupts(); count--; if(count > 0) QUIT(); enableInterrupts();

Example procA() { while(TRUE) { ; update(x); ; retrieve(y); } procB() { while(TRUE) { retrieve(x); ; update(y); ; } Process A Process B x y

UNIX Processes UNIX Kernel Data Segment Files Other Resources Text Segment Stack Segment Status Process

UNIX Processes Each process has its own address space –Subdivided into text, data, & stack segment –a.out file describes the address space OS kernel creates descriptor to manage process Process identifier (PID): User handle for the process (descriptor) Try “ ps ” and “ ps -aux ” (read man page)

Creating/Destroying Processes UNIX fork() creates a process –Creates a new address space –Copies text, data, & stack into new adress space –Provides child with access to open files UNIX wait() allows a parent to wait for a child to terminate

Creating a UNIX Process int pidValue;... pidValue = fork(); /* Creates a child process */ if(pidValue == 0) { /* pidValue is 0 for child, nonzero for parent */ /* The child executes this code concurrently with parent */ childsPlay(…); /* A procedure linked into a.out */ exit(0); } /* The parent executes this code concurrently with child */ parentsWork(..); wait(…);...

Child Executes a Different Program int pid;... /* Set up the argv array for the child */... /* Create the child */ if((pid = fork()) == 0) { /* The child executes its own absolute program */ execve(childProgram.out, argv, 0); /* Only return from an execve call if it fails */ printf(“Error in the exec … terminating the child …”); exit(0); }... wait(…); /* Parent waits for child to terminate */...

Example: Parent #include #define NULL 0 int main (void) { if (fork() == 0){ /* This is the child process */ execve("child",NULL,NULL); exit(0); /* Should never get here, terminate */ } /* Parent code here */ printf("Process[%d]: Parent in execution...\n", getpid()); sleep(2); if(wait(NULL) > 0) /* Child terminating */ printf("Process[%d]: Parent detects terminating child \n", getpid()); printf("Process[%d]: Parent terminating...\n", getpid()); }

Example: Child int main (void) { /* The child process's new program This program replaces the parent's program */ printf("Process[%d]: child in execution...\n", getpid()); sleep(1); printf("Process[%d]: child terminating...\n", getpid()); } ***sys_wait in another word file

Threads -- The NT Model Data Files Other Resources Binary Program Process Stack Status Stack Status Stack Status Thread (Execution Engine)

Resources Anything that a process requests from an OS –Available  allocated –Not available  process is blocked Examples –Files –Primary memory address space (“virtual memory”) –Actual primary memory (“physical memory”) –Devices (e.g., window, mouse, kbd, serial port, …) –Network port –… many others …

Files Data must be read into (and out of) the machine – I/O devices Storage devices provide persistent copy Need an abstraction to make I/O simple – the file A file is a linearly-addressed sequence of bytes –From/to an input device –Including a storage device

The File Abstraction Hardware Data Process Stack Processor Executable Memory Program Operating System Storage Device File Descriptor File Descriptor

UNIX Files open Specifies file name to be used close Release file descriptor read Input a block of information write Output a block of information lseek Position file for read/write ioctl Device-specific operations UNIX and NT try to make every resource (except CPU and RAM) look like a file Then can use a common interface:

UNIX File Example #include int main() { int inFile, outFile; char *inFileName = “in_test”; char *outFileName = “out_test”; int len; char c; inFile = open(inFileName, O_RDONLY); outFile = open(outFileName, O_WRONLY); /* Loop through the input file */ while ((len = read(inFile, &c, 1)) > 0) write(outFile, &c, 1); /* Close files and quite */ close(inFile); close(outFile); }

Shell Command Line Interpreter OS Interactive User Shell Program Application & System Software OS System Call Interface

The Shell Strategy Shell Process Process to execute command Process to execute command % grep first f3 f3 read keyboard fork a process read file

Bootstrapping Computer starts, begins executing a bootstrap program -- initial process Loads OS from the disk (or other device) Initial process runs OS, creates other processes

Bootstrap Program This appendix describes the Bootstrap Program, also known as the ROM Monitor. The Bootstrap Program can help you isolate or rule out hardware problems encountered when installing your router. A summary of the bootstrap diagnostic tests and command options is provided.

The ROM program varies in length, but basically performs the following: Diagnostics, usually called Power On Self Test (POST) Location, loading, and execution of a larger bootstrap program from the bootable drive Loading and execution of the kernel by the bootstrap program

The ROM bootstrap program does the following, though not necessarily in this order: Performs POST, including testing memory, keyboard, and console. Polls all addresses where a device can reside, and either runs diagnostics in the ROM or asks the device to run a self-diagnostic and report the results. Finds the device that is bootable, usually the first drive.

Determines whether that device has a program in its own ROM that needs to be loaded in order to control the device, then loads it. Jumps to the now-loaded device control program that lets you load the disk bootstrap program, and loads it. The program resides in the boot block or boot sector of a disk. That sector has become a favorite target area for virus writers, because it's very hard to boot a computer without loading and executing the boot sector. Jumps to the beginning of the now-loaded disk bootstrap program and executes it.

The origin of “Bootstrapping” Booting is a shortened version of bootstrapping, which comes from the expression "to lift yourself up by your own bootstraps." Oddly enough, that would be impossible, but the expression means "to help yourself."

A typical Unix boot sequence is: Power-on ROM boot starts and runs POST ROM boot loads and executes the boot sector or boot block (commonly called primary boot) Boot block executes by loading and executing the secondary boot program, which does a local or network boot Unix kernel is loaded from a local disk drive or over the network, then executed

Initializing a UNIX Machine Serial Port A Serial Port B Serial Port C Serial Port Z login getty /etc/passwd

Objects A recent trend is to replace processes by objects Objects are autonomous Objects communicate with one another using messages Popular computing paradigm Too early to say how important it will be...

Interrupt CLI STI

Be careful about CLI and STI Unix-like systems have used the functions cli and sti to disable and enable interrupts for many years. In modern Linux systems, however, using them directly is discouraged. It is increasingly impossible for any routine to know whether interrupts are enabled when it is called; thus, simply enabling interrupts with sti before return is a bad practice. Your function may be returning to a function that expects interrupts to be still disabled.

Thus, if you must disable interrupts, it is better to use the following calls: unsigned long flags; save_flags(flags); cli(); /* This code runs with interrupts disabled */ restore_flags(flags);

Enabling and Disabling Interrupts We have already seen the sti and cli functions, which can enable and disable all interrupts. Sometimes, however, it's useful for a driver to enable and disable interrupt reporting for its own IRQ line only. The kernel offers three functions for this purpose, all declared in : void disable_irq(int irq); void disable_irq_nosync(int irq); void enable_irq(int irq);