Download presentation
Presentation is loading. Please wait.
Published byAmber Ferguson Modified over 9 years ago
1
1 CMSC421: Principles of Operating Systems Nilanjan Banerjee Principles of Operating Systems Assistant Professor, University of Maryland Baltimore County nilanb@umbc.edu http://www.csee.umbc.edu/~nilanb/teaching/421/
2
2 Announcements Readings from Silberchatz [3rd chapter] Late Policy
3
3 Processes
4
4 Process Tree generation system process tree
5
5 But what is a process? n An operating system executes a variety of programs: l Batch system – jobs l Time-shared systems – user programs or tasks n Textbook uses the terms job and process almost interchangeably n Process – a program in execution; process execution must progress in sequential fashion n A process includes: l program counter l stack l data section
6
6 Process Memory looks like. virtual Address space why virtual?
7
7 How do we create new processes in userland (fork) Lets see a demo
8
8 What is really happening here
9
9 Fork() primer into virtual memory management Virtual addresses (page table) Physical addresses unallocated
10
10 Fork() Copy-on-write policy Parent process Physical addresses Child process
11
11 Fork() Copy-on-write policy Parent process Physical addresses Child process write to a page
12
12 communication child/parent process (Unnamed pipes) Pipe(fid); // where int fid[2] fid[0] is the read from the pipe and fid[1] is write to the pipe dup2(oldfid, newfid) //creates an alias to oldfid //very handy when you do not want to use file descriptors and use standard ones
13
13 Process States n As a process executes, it changes state l new: The process is being created l running: Instructions are being executed l waiting: The process is waiting for some event to occur l ready: The process is waiting to be assigned to a processor l terminated: The process has finished execution
14
14 Kernel data structure for processes (PCB) Information associated with each process n Process state (running, waiting, ready, terminated) n Program counter (instruction that is executing right now) n CPU registers (eax, ebx, etc) n CPU scheduling information (when would it scheduled) n Memory-management information (pages that are allocated, non- allocated, what do they correspond to) n Accounting information (several things like time created, time run, time waiting etc.) n I/O status information (file descriptors in addition to stdin, stdout, stderr, other files, pipe information, FIFO, shared memory, mmaped file) get a plethora of information in /proc/ /
15
15 Kernel data structure for processes (PCB) Represented by the C structure task_struct pid t pid; /* process identifier */ long state; /* state of the process */ unsigned int time slice /* scheduling information */ struct task struct *parent; /* this process’s parent */ struct list head children; /* this process’s children */ struct files struct *files; /* list of open files */ struct mm struct *mm; /* address space of this pro */
16
16 Process Context Switch n When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process via a context switch. n Context of a process represented in the PCB n Context-switch time is overhead; the system does no useful work while switching l The more complex the OS and the PCB -> longer the context switch n Time dependent on hardware support l Some hardware provides multiple sets of registers per CPU -> multiple contexts loaded at once
17
17 Process Context Switch
18
18 Process Scheduling
19
19 Process Queues
20
20 Lets take a kernel dive to study the process data structure and fork() system call Schedule child process duplicate task_struct
21
21 Next class Process management Inter-process communication (Named pipes, shared memory (shmget, mmap), message passing) Intro to threads
22
22 An in-class discussion (a bit-hack)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.