1 / 25

Processes

6. Processes. Announcements. Extension til Friday 11 am for HW #1 Previous lectures online Program Assignment #1 online later today, due 2 weeks from today Homework Set #2 online later today, due a week from today Read chapter 6. What is a Process?. Program P1.

aderes
Download Presentation

Processes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 Processes Operating Systems: A Modern Perspective, Chapter 6

  2. Announcements • Extension til Friday 11 am for HW #1 • Previous lectures online • Program Assignment #1 online later today, due 2 weeks from today • Homework Set #2 online later today, due a week from today • Read chapter 6 Operating Systems: A Modern Perspective, Chapter 6

  3. What is a Process? Program P1 • A software program consist of a sequence of code instructions and data • for now, let a simple app = a program • CPU executes the instructions line by line in fetch-execute cycle from RAM • code instructions operate on data • A program is a passive entity • A process is a program actively executing from main memory Code Data Operating Systems: A Modern Perspective, Chapter 6

  4. Process OS Loader Main Memory Disk Fetch Code and Data CPU Execution P1 binary P2 binary Program P1 binary Program Counter (PC) Code Code Code Registers ALU Data Data Data Write Data Loading and Executing a Program Operating Systems: A Modern Perspective, Chapter 6

  5. Process Fetch Code and Data CPU Execution Program Counter (PC) Code Registers ALU Data Write Data What is a Process? Main Memory • A process is a program actively executing from main memory • has a Program Counter (PC) and execution state associated with it • CPU registers keep state • OS keeps process state in memory • it’s alive! • has an address space associated with it • a limited set of (virtual) addresses that can be accessed by the executing code Program P1 binary Operating Systems: A Modern Perspective, Chapter 6

  6. Process Fetch Code and Data CPU Execution Program Counter (PC) Code Registers ALU Data Write Data What is a Process? Main Memory • 2 processes may execute the same program code, but they are considered separate execution sequences Program P1 binary Operating Systems: A Modern Perspective, Chapter 6

  7. global variables dynamically allocated variables Code functions local variables Data How is a Process Structured in Memory? Main Memory float f4=3.0; main() { char* ptr; ptr = malloc(); foo1(); } foo1() { int a1; .... } Process P1 Operating Systems: A Modern Perspective, Chapter 6

  8. global variables dynamically allocated variables Code functions local variables How is a Process Structured in Memory? Main Memory Process P1 float f4=3.0; main() { char* ptr; ptr = malloc(); foo1(); } foo1() { int a1; .... } Data Heap Stack Operating Systems: A Modern Perspective, Chapter 6

  9. How is a Process Structured in Memory? Run-time memory max address User stack • Run-time memory image • Essentially code, data, stack, and heap • Code and data loaded from executable file • Stack grows downward, heap grows upward Unallocated Heap Read/write .data, .bss Read-only .init, .text, .rodata address 0 Operating Systems: A Modern Perspective, Chapter 6

  10. Why Allocate Local Variables on a Stack? • Strawman approach: pre-allocate all local variables a priori before a process starts executing, just like global variables • What’s wrong with this strawman? • if a function is never called, then you’ve wasted space allocating its local variables • don’t know a priori how many instances of a local variable to allocate if a function calls itself, i.e. recursion Operating Systems: A Modern Perspective, Chapter 6

  11. Why Allocate Local Variables on a Stack? • So allocate local variables only on an as-needed basis • A stack provides a simple way to allocate local variables as needed • When a function is called, allocate its local variables on top of the stack - push them on the stack • when a function completes, deallocate these local variables - pop them off the stack Operating Systems: A Modern Perspective, Chapter 6

  12. Why Allocate Dynamic Variables on a Heap in the Process’s Address Space? • Strawman II: could ask the OS to allocate dynamic variables anywhere in memory • very complex keeping tracking of all the different locations in memory • Keeping the dynamic variables in one area (the process’s heap) associated with the process’s address space simplifies memory management Operating Systems: A Modern Perspective, Chapter 6

  13. Code A Process Executes in its Own Address Space Main Memory Process P1 • OS tries to provide the illusion or abstraction that the process executes in its own address space, on its own CPU Data Heap Stack Operating Systems: A Modern Perspective, Chapter 6

  14. Pi CPU Pj CPU Pk CPU … Pi Executable Memory Pj Executable Memory Pk Executable Memory Pi Address Space Pk Address Space Pj Address Space Implementing the Process Abstraction OS interface OSAddress Space CPU ALU Machine Executable Memory Control Unit … Operating Systems: A Modern Perspective, Chapter 6

  15. CreateThread() CreateProcess() CloseHandle() WaitForSingleObject() Device Mgr Process Mgr Memory Mgr File Mgr Windows OS Process Management: External View Application Process fork() wait() exec() Device Mgr Process Mgr Memory Mgr File Mgr UNIX Hardware Operating Systems: A Modern Perspective, Chapter 6

  16. Process Manager Responsibilities • Define & implement the essential characteristics of a process and thread • Algorithms to define the behavior • Data structures to preserve the state of the execution • Define what “things” threads in the process can reference – the address space (most of the “things” are memory locations) • Manage the resources used by the processes/threads • Tools to create/destroy/manipulate processes & threads • Tools to time-multiplex the CPU – Scheduling the (Chapter 7) • Tools to allow threads to synchronization the operation with one another (Chapters 8-9) • Mechanisms to handle deadlock (Chapter 10) • Mechanisms to handle protection (Chapter 14) Operating Systems: A Modern Perspective, Chapter 6

  17. Resource Manager Resource Manager Scheduler Resource Manager Process Manager Overview Program Process Abstract Computing Environment Deadlock Process Description File Manager Protection Synchronization Device Manager Memory Manager Devices Memory CPU Other H/W Operating Systems: A Modern Perspective, Chapter 6

  18. Code OS Process Management Main Memory Process P1 • OS keeps a Process Control Block (PCB) for each process: • Process state: new, running, waiting, ready, terminated • Program counter • CPU registers • CPU-scheduling information, e.g. priority • memory management info: value of base and limit registers, page tables, segment tables • I/O info: open files, etc. Data Heap Stack Operating Systems: A Modern Perspective, Chapter 6

  19. Process P1 Code Code Data Heap Stack Multiple Processes Main Memory Process P2 • Each process is in memory • Only one process at a time executes on the CPU • OS provides the mechanisms to switch between processes • this is called a context switch Data Heap Stack Operating Systems: A Modern Perspective, Chapter 6

  20. 1 Initialization 7 8 Interrupt 2 3 4 9 5 6 Context Switching Executable Memory • Each time a process is switched out, its context must be saved, e.g. in the PCB • Each time a process is switched in, its context is restored • This usually requires copying of registers Process Manager Interrupt Handler P1 P2 Pn Operating Systems: A Modern Perspective, Chapter 6

  21. Context Switches • A context switch can occur because of • a system call • an I/O interrupt, e.g. disk has finished reading • a timer interrupt • this is how you implement multitasking • Set a timer in the CPU for periodic interrupt, say every 1 ms • On an interrupt, go to the timer interrupt handler, e.g. the scheduler, and switch to another process in the ready queue • Context switch time is pure overhead • it is the price you pay for multiprogramming • typically a few milliseconds Operating Systems: A Modern Perspective, Chapter 6

  22. Multiple Processes: State Diagram Request Done Running Request Schedule Start Allocate Ready Blocked Operating Systems: A Modern Perspective, Chapter 6

  23. Communicating Between Processes • Inter-Process Communication or IPC • would like two processes to share information between them • shared file • split a single application into multiple processes to speed up execution by allowing overlapped I/O • split an application into multiple processes for modularity of coding • if address spaces are completely isolated from one another, then how do we share data? Operating Systems: A Modern Perspective, Chapter 6

  24. Communicating Between Processes • Two types of IPC • shared memory - OS provides mechanisms that allow creation of a shared memory buffer between processes • shmget() creates a shared memory segment, using a name (key ID) • shmctl() to modify control information and permissions related to a shared memory segment • shmat() to attach a shared memory segment to a process’s address space • allows fast and high volume reading/writing of buffer in memory • applies to processes on the same machine • message passing - OS provides constructs that allow communication via buffers • typically implemented via system calls, and is hence slower than shared memory • sending process has a buffer to send/receive messages, as does the receiving process • used to pass small messages • extends to communicating between processes on different machines Operating Systems: A Modern Perspective, Chapter 6

  25. Communicating Between Processes • Shared access to the same memory introduces complexity • need to synchronize access • Producer-Consumer example • if two producers write at the same time to shared memory, then they can overwrite each other’s data • if a producer writes while a consumer is reading, then the consumer may read inconsistent data Operating Systems: A Modern Perspective, Chapter 6

More Related