CS计算机代考程序代写 flex concurrency Lecture 4

Lecture 4
CS 111: Operating System Principles

Processes
1.0.2

Jon Eyolfson
April 6, 2021

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

cba

http://creativecommons.org/licenses/by-sa/4.0/

A Process is an Instance of a Running Program

A program (or application) is just a static definition, including:
• Instructions
• Data
• Memory allocations
• Symbols it uses

When you start executing a program, it turns into a process

1

Process is like a Combination of all the Virtual Resources

If we consider a “virtual CPU”, the OS needs to track all registers

It also contains all other resources it can access (memory and I/O)

Every execution runs the same code (part of the program)
An execution is running some specific code (part of the process)

2

A Process is More Flexible

A process contains both the program and information specific to its execution

It allows multiple executions of the same program

It even allows a process to run multiple copies of itself

3

A Process Control Block (PCB) Contains All Execution Information

Specifically, in Linux, this is the task_struct saw in Lab 0

It contains:
• Process state
• CPU registers
• Scheduling information
• Memory management information
• I/O status information
• Any other type of accounting information

4

Aside: Concurrency and Parallelism Aren’t the Same

Concurrency
Switching between two or more things (can you get interrupted)

Goal: make progress on multiple things

Parallelism
Running two or more things at the same time (are they independent)

Goal: run as fast as possible

5

A Real Life Situation of Concurrency and Parallelism

You’re sitting at a table for dinner, and you can:
• Eat
• Drink
• Talk
• Gesture

You’re so hungry that if you start eating you won’t stop until you finish

Which tasks can and can’t be done concurrently, and in parallel?

6

Choose Any Two Tasks in the Real Life Example

You can’t eat and talk (or drink) at the same time, and you can’t switch
Not parallel and not concurrent

You could eat and gesture at the same time, but you can’t switch
Parallel and not concurrent

You can’t drink and talk at the same time, and you could switch
Not parallel and concurrent

You can talk (or drink) and gesture at the same time, and you could switch
Parallel and concurrent

7

Uniprogramming is for Old Batch Processing Operating Systems

Uniprogramming: only one process running at a time
Two processes are not parallel and not concurrent, no matter what

Multiprogramming: allow multiple processes
Two processes can run in parallel or concurrently

Modern operating systems try to run everything in parallel and concurrently

8

Process State Diagram (You Could Rename Waiting to Ready)

Created Waiting

Running

Blocked

Terminated

9

The Scheduler Decides When To Switch

To create a process, the operating system has to at least load it into memory

When it’s waiting, the scheduler (coming later) decides when it’s running

We’re going to first focus on the mechanics of switching processes

10

The Core Scheduling Loop Changes Running Processes

1. Pause the currently running process
2. Save its state, so you can restore it later
3. Get the next process to run from the scheduler
4. Load the next process’ state and let that run

11

We Can Let Processes Themselves, or the Operating System Pause

Cooperative multitasking
The processes use a system call to tell the operating system to pause it

True multitasking
The operating system retains control and pauses processes

For true multitasking the operating system can:
• Give processes set time slices
• Wake up periodically using interrupts to do scheduling

12

Swapping Processes is called Context Switching

We’ve said that at minimum we’d have to save all of the current registers
We have to save all of the values, using the same CPU as we’re trying to save

There’s hardware support for saving state, however you may not want to save
everything

Context switching is pure overhead, we want it to be as fast as possible

Usually there’s a combination of hardware and software to save as little as possible

13

We Could Create Processes from Scratch

We load the program into memory and create the process control block

This is what Windows does

Could we decompose this into more flexible abstractions?

14

Instead of Creating a New Process, We Could Clone It

Pause the currently running process, and copy it’s PCB into a new one
This will reuse all of the information from the process, including variables!

Distinguish between the two processes with a parent and child relationship
They could both execute different parts of the program together

We could then allow either process to load a new program and setup a new PCB

15

On Unix, the Kernel Launches A Single User Process

After the kernel initializes, it creates a single process from a program

This process is called init, and it looks for it in /sbin/init
Responsible for executing every other process on the machine
Must always be active, if it exits the kernel thinks you’re shutting down

For Linux, init will probably be systemd but there’s other options

Aside: some operating systems create an “idle” process that the scheduler can run

16

A Typical Process Tree on the Virtual Machine

1: init

187: journald 536: systemd –user

597: gnome-shell

946: firefox

996: firefox 1089: firefox 1147: firefox

1071: gnome-terminal-server

1086: zsh

1240: htop

200: udevd

17

How You Can See Your Process Tree

Use htop
sudo pacman -S htop to install on the virtual machine

You can press F5 to switch between tree and list view

You may have to update all your packages first:
sudo pacman -Syu (Reboot if your kernel updates)

18

The Parent Process is Responsible for Its Child

The operating sets the exit status when a process terminates (by calling exit)
It can’t remove its PCB yet

The minimum acknowledgment the parent has to do is read the child’s exit status

There’s two situations:
1. The child exits first (zombie process)

2. The parent exits first (orphan process)

19

A Zombie Process Waits for Its Parent to Read Its Exit Status

The process is terminated, but it hasn’t been acknowledged

A process may have an error in it, where it never reads the child’s exit status

The operating can interrupt the parent process to tell it to acknowledge the child
This is a basic form of IPC called a signal (which may be ignored)

The operating system has to keep a zombie process until it’s acknowledged
If the parent ignores it, the zombie process needs to wait to be re-parented

20

An Orphan Process Needs a New Parent

The child process lost its parent process
The child still needs a process to acknowledge its exit

The operating system re-parents the child process to init
The init process is now responsible to acknowledge the child

21

The Operating System Creates and Runs Processes

The operating system has to:
• Loads a program, and create a process with context
• Maintain process control blocks, including state
• Switch between running processes using a context switch
• Unix kernels start an init process
• Unix processes have to maintain a parent and child relationship

22