3-Processes.Pdf

3-Processes.Pdf

Process Management • Process management deals with several issues: – what are the units of execution Processes & Threads – how are those units of execution represented in the OS – how is work scheduled in the CPU – what are possible execution states, and how does the system move from one to another Managing Concurrency in Computer Systems 1 2 The Process What’s in a Process? • Basic idea is the process: • A process consists of at least: – process is the unit of execution – the code for the running program – it’s the unit of scheduling – the data for the running program – it’s the dynamic (active) execution context (as opposed to a pro gram, – an execution stack tracing the state of procedure calls made which is static) – the Program Counter, indicating the next instruction • A process is sometimes called a job or a task or a sequential – a set of general -purpose registers with current values process. – a set of operating system resources (open files, connections to other • A sequential process is a program in execution; it defines the programs, etc.) sequential, instruction-at-a-time execution of a program. • The process contains all the state for a program in execution. 3 4 1 Process State Process State Changing • There may be several processes running the same program (e.g., an editor), but each is a distinct process with its own Terminated representation. New Ready Running • Each process has an execution state that indicates what it is currently doing, e.g.,: – ready: waiting to be assigned to the CPU Waiting – running: executing instructions on the CPU – waiting: waiting for an event, e.g., I/O completion • As a program executes, it moves from state to state Processes move from state to state as a result of actions they perform (e.g., system calls), OS actions (rescheduling), and external actions (interrupts) 5 6 Process Data Structures PCB • At any time, there are many processes in the system, each in its particular state. The PCB contains the process state • The OS must have data structures representing each process: this entire state of the process number data structure is called the PCB: process program counter – Process Control Block • The PCB contains all of the info about a process. stack pointer • The PCB is where the OS keeps all of a process’ hardware general -purpose registers execution state (PC, SP, registers) when the process is not running. memory management info username of owner queue pointers for state queues scheduling info (priority, etc.) accounting info 7 8 2 PCBs and Hardware State State Queues • When a process is running its Program Counter, stack pointer, • The OS maintains a collection of queues that represent the state of registers, etc., are loaded on the CPU (I.e., the processor hardware all processes in the system. registers contain the current values) • There is typically one queue for each state, e.g., ready, waiting for • When the OS stops running a process, it saves the current values I/O, etc. of those registers into the PCB for that process. • Each PCB is queued onto a state queue according to its current • When the OS is ready to start executing a new process, it loads the state. hardware registers from the values stored in that process’ PCB. • As a process changes state, its PCB is unlinked from one queue and linked • The process of switching the CPU from one process to another is onto another. called a context switch. Timesharing systems may do 100s or 1000s of context switches a second! 9 10 State Queues PCBs and State Queues PCB A PCB B PCB C Ready Queue Header • PCBs are data structures, dynamically allocated in OS memory. head ptr • When a process is created, a PCB is allocated to it, initialized, and tail ptr placed on the correct queue. • As the process computes, its PCB moves from queue to queue. Wait Queue Header • When the process is terminated, its PCB is deallocated. head ptr tail ptr PCB X PCB M There may be many wait queues, one for each type of wait (specific device, timer, message,…). 11 12 3 Cooperating Processes Processes and Threads • Processes can be independent or they can be cooperating to • A full process includes numerous things: accomplish a single job. – an address space (defining all the code and data pages) • Cooperating processes can be used: – OS resources and accounting information – to gain speedup by overlapping activities or performing work in – a “thread of control”, which defines where the process is parallel currently executing (basically, the PC and registers) – to better structure an application as a small set of cooperating processes • Creating a new process is costly, because of all of the – to share information between jobs structures (e.g., page tables) that must be allocated • Sometimes processes are structured as a pipeline where each • Communicating between processes is costly, because produces work for the next stage that consumes it, and so on. most communication goes through the OS 13 14 Parallel Programs “Lightweight” Processes • Suppose I want to build a parallel program to execute on a • What’s similar in these processes? multiprocessor, or a web server to handle multiple simultaneous – They all share the same code and data (address space) web requests. I need to: – they all share the same privileges – create several processes that can execute in parallel – they share almost everything in the process – cause each to map to the same address space (because they’re part of • What don’t they share? the same computation) – Each has its own PC, registers, and stack pointer – give each its starting address and initial parameters • Idea: why don’t we separate the idea of process (address space, – the OS will then schedule these processes, in parallel, on the various accounting, etc.) from that of the minimal “thread of control” (PC, processors SP, registers)? • Notice that there’s a lot of cost in creating these processes and possibly coordinating them. There’s also a lot of duplication, because they all share the same address space, protection, etc…… 15 16 4 How different OSs support threads Threads and Processes • Some newer operating systems (Mach, Chorus, NT) therefore = address space support two entities: – the process, which defines the address space and general process = thread attributes – the thread, which defines a sequential execution stream within a process • A thread is bound to a single process. For each process, however, example: MS/DOS example: Unix there may be many threads. • Threads are the unit of scheduling; processes are containers in which threads execute. example: Xerox Pilot example: Mach, OSF, Chorus, NT 17 18 Separation of Threads and Processes Kernel Threads • Separating threads and processes makes it easier to support multi- • Kernel threads still suffer from performance problems. threaded applications • Operations on kernel threads are slow because: • Concurrency (multi-threading) is useful for: – a thread operation still requires a kernel call – improving program structure – kernel threads may be overly general, in order to support needs of – handling concurrent events (e.g., web requests) different users, languages, etc. – building parallel programs – the kernel doesn’t trust the user, so there must be lots of checking on • So, multi-threading is useful even on a uniprocessor. kernel calls • But, threads, even when supported separately from processes in the kernel, are too slow. 19 20 5 User-Level Threads (Old) Example of thread performance • To make threads really fast, they should be implemented at the Ultrix Topaz FastThreads user level Fork 11320 1208 39 • A user-level thread is managed entirely by the run-time system (user-level code that is linked with your program). Signal/Wait 1846 229 52 • Each thread is represented simply by a PC, registers, stack and a little control block, managed in the user’s address space. (performance on a 3 MIPS processor, in microseconds) • Creating a new thread, switching between threads, and synchronizing between threads can all be done without kernel involvement. • Ultrix: 1 thread per address space • Topaz: multiple threads per address space • FastThreads: multiple user threads per address space 21 22 Example U-L Thread Interface t = thread_fork(initial context) create a new thread of control thread_stop() stop the calling thread, sometimes called thread_block thread_start(t) start the named thread thread_yield() voluntarily give up the processor thread_exit() terminate the calling thread, sometimes called thread_destroy. 23 6.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us