processes execution and state
play

Processes, Execution, and State 3A. What is a Process? 3B. - PDF document

4/3/2016 Processes, Execution, and State 3A. What is a Process? 3B. Implementing Processes Operating Systems Principles 3C. Asynchronous Exceptions and Events Processes, Execution and State 3D. User-Mode Programs and Exceptions Mark


  1. 4/3/2016 Processes, Execution, and State 3A. What is a Process? 3B. Implementing Processes Operating Systems Principles 3C. Asynchronous Exceptions and Events Processes, Execution and State 3D. User-Mode Programs and Exceptions Mark Kampe (markk@cs.ucla.edu) Processes, Execution, and State 2 What is a Process? What is “state”? • the primary dictionary definition of “state” is • an executing instance of a program – “a mode or condition of being” – how is this different from a program? – an object may have a wide range of possible states • a virtual private computer • all persistent objects have “state” – what does a virtual computer look like? – distinguishing it from other objects – how is a process different from a virtual machine? – characterizing object's current condition • a process is an object • contents of state depends on object – characterized by its properties (state) – complex operations often mean complex state – characterized by its operations – we can save/restore the aggregate/total state – we can talk of a subset (e.g. scheduling state) Processes, Execution, and State 3 Processes, Execution, and State 4 Program vs Process Address Space Address Space: Code Segments • load module (output of linkage editor) ELF header section 1 header section 2 header section 3 header target ISA type : code type : data type : sym # load sections – all external references have been resolved load adr: 0xxx load adr: 0xxx length : ### # info sections length : ### length : ### – all modules combined into a few segments initialized symbol compiled data – includes multiple segments (text, data, BSS) table code values • code must be loaded into memory – a virtual code segment must be created 0x00000000 0x0100000 0x0110000 – code must be read in from the load module shared code private data shared lib1 shared lib2 – map segment into virtual address space • code segments are read/only and sharable shared lib3 private stack – many processes can use the same code segments 0x0120000 0xFFFFFFFF Processes, Execution, and State 5 Processes, Execution, and State 6 1

  2. 4/3/2016 Address Space: Data Segments Address Space: Stack Segment • size of stack depends on program activities • data too must be initialized in address space – grows larger as calls nest more deeply – process data segment must be created – amount of local storage allocated by each procedure – initial contents must be copied from load module – after calls return, their stack frames can be recycled – BSS: segments to be initialized to all zeroes • OS manages the process's stack segment – map segment into virtual address space – stack segment created at same time as data segment • data segments – some allocate fixed sized stack at program load time – some dynamically extend stack as program needs it – are read/write, and process private • Stack segments are read/write and process private – program can grow or shrink it (with sbrk syscall) Processes, Execution, and State 7 Processes, Execution, and State 8 Address Space: Shared Libraries Other Process State • static libraries are added to load module • registers – each load module has its own copy of each library – general registers – program must be re-linked to get new version – program counter, processor status – stack pointer, frame pointer • make each library a sharable code segment • processes own OS resources – one in-memory copy, shared by all processes – keep the library separate from the load modules – open files, current working directory, locks – operating system loads library along with program • processes have OS-related state • reduced memory use, faster program loads – Process ID, User ID, Group ID, scheduling priority • easier and better library upgrades – registered signal handlers, queued events, … Processes, Execution, and State 9 Processes, Execution, and State 10 Process Operations: fork Process Operations: wait • parent and child are identical: • await termination of a child process – data and stack segments are copied – collect exit status – all the same files are open • code sample: • code sample: int rc = waitpid(pid, &status, 0); int rc = fork(); if (rc == 0) { if (rc < 0) { fprintf(stderr, “process %d exited rc=%d\n”, pid, status); fprintf(stderr, “Fork failed\n”); } } else if (rc == 0) { fprintf(stderr, “Child\n”); } else fprintf(stderr, “Fork succeeded, child pid = %d\n”, rc); Processes, Execution, and State 11 Processes, Execution, and State 12 2

  3. 4/3/2016 Process Operations: exec Variations on Process Creation • load new program, pass parameters • tabula rasa – a blank slate – address space is completely recreated – a new process with minimal resources – all open files remain open – it must set up all resources for itself – available in many polymorphisms • run – fork + exec • code sample: – create new process to run a specified command char *myargs[3]; • a cloning fork is a more expensive operation myargs[0] = “wc”; – much data and resources to be copied myargs[1] = “myfile”; – convenient for setting up pipelines myargs[2] = NULL; – allows inheritance of exclusive use devices int rc = execvp(myargs[0], myargs); Processes, Execution, and State 13 Processes, Execution, and State 14 Representing a Process Resident and non-Resident State • all (not just OS) objects have descriptors Resident Process Table Non-resident Process State – the identity of the object – the current state of the object PID: 1 STS: in mem … – references to other associated objects • Process state is in multiple places PID: 2 STS: on disk – parameters and object references in a descriptor … – app execution state is on the stack, in registers PID: 3 – each Linux process has a supervisor-mode stack STS: swapout … • to retain the state of in-progress system calls • to save the state of an interrupt preempted process in memory on disk Processes, Execution, and State 15 Processes, Execution, and State 16 (resident process descriptor) (non-resident process state) • state that could be needed at any time • information needed only when process runs – can swap out to free memory for other processes • information needed to schedule process • execution state – run-state, priority, statistics – data needed to signal or awaken process – supervisor mode stack – including: saved register values, PC, PS • identification information • pointers to resources used when running – process ID, user ID, group ID, parent ID – current working directory, open file descriptors • communication and synchronization resources • pointers to text, data and stack segments – semaphores, pending signals, mail-boxes • pointer to non-resident state – used to reconstruct the address space Processes, Execution, and State 17 Processes, Execution, and State 18 3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend