Top Banner
1 © David Morgan 2003-18 Processes in Processes in linux linux David Morgan © David Morgan 2003-18 What What’ s a s a “ process? process?” A dynamically executing instance of a program.
13

Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

Feb 07, 2018

Download

Documents

dodiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

1

© David Morgan 2003-18

Processes in Processes in linuxlinux

David Morgan

© David Morgan 2003-18

WhatWhat’’s a s a ““process?process?””

A dynamically executing instance of a program.

Page 2: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

2

© David Morgan 2003-18

Constituents of a Constituents of a ““processprocess””

� its code

� data

� various attributes OS needs to manage it

© David Morgan 2003-18

OS keeps track of all processesOS keeps track of all processes

� Process table/array/list

� Elements are process descriptors (aka control blocks)

� Descriptors reference code & data

Page 3: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

3

© David Morgan 2003-18

Process state as data structureProcess state as data structure

“We can think of a process as consisting of three components:

An executable program

The associated data needed… (variables, work space, buffers, etc)

The execution context of the program

This last element is essential. The execution context, or process

state, includes all of the information that the operating system

needs to manage the process and that the processor needs to

execute the process properly…. Thus, the process is realized as a

data structure [called the process control block or process

descriptor].”

Operating Systems, Internals and Design Principles, William

Stallings

© David Morgan 2003-18

processes

(4 processes)

process’s code

process’s data

kernel space (OS)

user

space

process descriptor

table/array

(4 descriptors)

various per-process

structures/buffers

Process table tracks the processesProcess table tracks the processes

Page 4: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

4

© David Morgan 2003-18

identifiers , state , resources

process descriptor table

a descriptor, for a single process; contains or points to that process’s attributes

• my process id number

• user account associated with me

• id number of my parent process

• id numbers of my children

• my state

• readiness to run

• run priority

• CPU’s state

•flags

• register values

• files I hold open

• memory locations I occupy

Process descriptor tracks a processProcess descriptor tracks a process

© David Morgan 2003-18

PerPer--process data structuresprocess data structures

� Process “image”

– all constituents collectively

� code

� data

� attributes

� Process descriptor (aka control block)

– attribute-holding data structure

Page 5: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

5

© David Morgan 2003-18

kernel space (OS)

user

space

Process Process ““imageimage””: all memory : all memory

components togethercomponents together

© David Morgan 2003-18

Process descriptor in Process descriptor in linuxlinux

Understanding the

Linux Kernel,

Bovet & Cesati

Page 6: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

6

© David Morgan 2003-18

Process descriptorProcess descriptor’’s roles role

“The process control block [or process descriptor] is the most

important data structure in an operating system. Each process

control block contains all of the information about a process that

is needed by the operating system. The blocks are read and/or

modified by virtually every module in the operating system,

including those involved with scheduling, resource allocation,

interrupt processing, and performance monitoring and analysis.

One can say that the set of process control blocks defines the

state of the operating system.”

Operating Systems, Internals and Design Principles, William

Stallings

© David Morgan 2003-18

Single process in Single process in unixunix,,

consolidated viewconsolidated view

� code

� data

� current directory

� argument list

– tokens from command line

� environment (variable) list

– name=value pairs

� responses to signals

� list of open files

� user “as whom” process operates

Some important componentscode

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

Page 7: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

7

© David Morgan 2003-18

code

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

lsls --l l foofoo barbar came from

/bin/ls

0 = ls 1 = -l 2 = foo

UID=500 LINES=25 PATH=…

/bin/ls3

stderr2

stdout1

stdin0

/home/david

3 = bar

ignore3

handler pointer2

default1

process ID #1234

david

© David Morgan 2003-18

Process creation in Process creation in unixunix

----how can one process spawn another?how can one process spawn another?

� performed by fork( ) system call

� creates new process by copying old

� both copies then proceed running

– old copy resumes (after “fork( )”)

– so does new

� new copy is not functionally different

Page 8: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

8

© David Morgan 2003-18

Code

.

fork( )

.

.

.

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

New process creation New process creation -- fork( )fork( )

process ID #1001

process ID #1002

same dir!

same args!

same vars!

same sigs!

same files!

same user!

even…

same code!!

Code

.

fork( )

.

.

.

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

© David Morgan 2003-18

fork fork -- two, where there was onetwo, where there was one

single run

but double (identical) output

because 2 (identical) processes(the one we ran, the one it ran)

single print

function

Page 9: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

9

© David Morgan 2003-18

Process differentiation in Process differentiation in unixunix

� identical? not what we had in mind!

� more useful if child does different stuff

� can we give it different behavior?

© David Morgan 2003-18

double output (but non-identical)

6749 is parent, 6750 is child

fork fork -- same code, different outputsame code, different output

process id #

(respective)

Page 10: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

10

© David Morgan 2003-18

fork fork -- how to selfhow to self--identify?identify?

fork tells me

if 0, I must be the child copy

if not, I must be the parent copy

© David Morgan 2003-18

Now provide different behaviorNow provide different behavior

� in the form of source code or

� in the form of an existing binary executable

Page 11: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

11

© David Morgan 2003-18

Provide new behaviorProvide new behavior

from source codefrom source code

conditional, on whether parent or child

© David Morgan 2003-18

Process differentiation in Process differentiation in unixunix

� performed by exec( ) system call

� guts code and replaces it

� copy now does/is something “else”

� complete strategy is “selfcopy-and-alter”not just “create”

Page 12: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

12

© David Morgan 2003-18

Code

.

fork( )

completely

different

code

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

Code

.

fork( )

exec( executable file)

.

.

environment(variables)

file descriptors

signal table

arguments

current dir

data

user

Making it different Making it different -- exec( )exec( )

process ID #1002 - one momentprocess ID #1002 - one moment later`

poof!code transplant

also

inittializes

this stuff

© David Morgan 2003-18

Provide new behavior Provide new behavior from binary codefrom binary code

ls -l /etc/httpd/conf(the real thing)

Page 13: Processes in linux - Santa Monica College- Facultyhomepage.smc.edu/morgan_david/linux/a12-processes.pdf · 1 © David Morgan 2003-13 Processes in linux David Morgan © David Morgan

13

© David Morgan 2003-18

Some system function callsSome system function calls

� fork - creates a child process that differs from the parent process only in

its PID and PPID

� exec - replaces the current process image with a new process image

� wait - suspends execution of the current process until its child has exited

� exit - causes normal program termination and a return value sent to the

parent

© David Morgan 2003-18

For exampleFor example……

� Shell is running

� You type “ls” and Enter

� Shell is parent, spawns ls as child