cs 153 lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · kishore kumar pusukuri cs 153 lab2....

47
CS 153 Lab2 Kishore Kumar Pusukuri Kishore Kumar Pusukuri CS 153 Lab2

Upload: others

Post on 24-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

CS 153 Lab2

Kishore Kumar Pusukuri

Kishore Kumar Pusukuri CS 153 Lab2

Page 2: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Outline

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Kishore Kumar Pusukuri CS 153 Lab2

Page 3: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Kishore Kumar Pusukuri CS 153 Lab2

Page 4: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Program and Process

I A program is an executable file, and a process is an instanceof the program in execution.

I Many processes can execute simultaneously on LINUX system.

I The main active entities in a Linux system are the processes.

Kishore Kumar Pusukuri CS 153 Lab2

Page 5: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Process is an active entity

Kishore Kumar Pusukuri CS 153 Lab2

Page 6: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Special Processes

I Every process has a unique process ID, a nonnegative integer.

I The process ID 0 is a scheduler process and is often known asthe swapper. No program on disk corresponds to this - it ispart of the kernel and is known as system process

¯. This is the

only one process not created via fork().

I The process ID 1 is the init process and is invoked by thekernel at the end of the bootstrap process.

I The process ID 2 is the pagedaemon. This process isresponsible for supporting the paging of virtual memorysystem. Like swapper, this is a system/kernel process.

Kishore Kumar Pusukuri CS 153 Lab2

Page 7: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

init process

I The program file for this process was /sbin/init.

I This process is responsible for bringing up a Linux/Unixsystem after the kernel has been boot strapped.

I init usually reads the system-dependent initialization files (the/etc/rc* files) and brings the system to a certain state (suchas multiuser).

I The init process never dies.

I It is a normal user process (not like swapper and pagedaemon)but run with supervisor/root privileges

¯.

I Later we will see how init becomes the parent process of anyorphaned child process.

Kishore Kumar Pusukuri CS 153 Lab2

Page 8: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Daemons

I On a large system there may be hundreds or even thousandsof processes running.

I Even when the user absent, several processes, called“daemons”, are running. These are started by a shell scriptwhen the system is booted.

I A typical daemon is the cron daemon. It wakes up at specifiedtime and checks if there is any work to do. If do it does thework. Then it goes back to sleep until it is time for the nextcheck.

I The daemon is needed because it is possible in Linux toschedule activities minutes, hours, days, or even months in thefuture.

Kishore Kumar Pusukuri CS 153 Lab2

Page 9: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Process context

The context of a process consists of its (user) address space andthe contents of hardware registers and kernel data structures thatrelate to the process.

I The program counter (PC) specifies the address of the nextinstruction the CPU will execute.

I The processor status register (PS) specifies the hardwarestatus of the machine.

I Stack pointer.

I General purpose registers contain data generated by theprocess during its execution.

Kishore Kumar Pusukuri CS 153 Lab2

Page 10: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Process address space

Kishore Kumar Pusukuri CS 153 Lab2

Page 11: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Process life-cycle

The process that invokes fork is called parent process, and thenewly created process is called child process.

Kishore Kumar Pusukuri CS 153 Lab2

Page 12: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont...

The kernel does the following sequence of operations for fork.

I It allocates a slot in the process table for the new process.

I It assigns an unique ID number to the child process.

I It makes a logical copy of the context of the parent process.

I It returns child process ID to the parent process, and 0 to thechild process.

I Some operations with files. We will study later.

Kishore Kumar Pusukuri CS 153 Lab2

Page 13: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

#include <sys/types.h>#include <unistd.h>

pid_t fork(void);

Returns: 0 in child,Process ID of a child in parent,-1 on error.

In addition to the process ID, there are other identifiersfor every process. The following functions return theseidentifiers.pid_t getpid(void); process ID of calling process.pid_t getppid(void); parent process ID of calling process.Note: None of these has an error return.

Kishore Kumar Pusukuri CS 153 Lab2

Page 14: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

fork1.c

Study the program fork1.c to understand how fork works.

Kishore Kumar Pusukuri CS 153 Lab2

Page 15: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 16: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 17: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 18: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 19: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 20: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 21: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 22: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 23: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 24: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 25: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

What are the differences between parent and child ?

Kishore Kumar Pusukuri CS 153 Lab2

Page 26: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Differences between parent and child

I The return value from fork().

I The process IDs are different.

I The two processes have different parent IDs.

I File locks set by parent are not inherited by the child.

I and .....some more differences

Kishore Kumar Pusukuri CS 153 Lab2

Page 27: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Can you tell me some uses of fork() ?Think about some applications you are using in daily life...

Kishore Kumar Pusukuri CS 153 Lab2

Page 28: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Where you are using fork ?

I Network servers ?

I Shell

Kishore Kumar Pusukuri CS 153 Lab2

Page 29: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

There are six exec functions, but we will often justrefer to ‘‘the exec function", which means we coulduse any of the six different functions.

#include <unistd.h>

int execl (const char *pathname, const char * arg0,... /* (char *) 0 */);

int execlp(const char *filename, const char *arg0,... /* (char *) 0 */);int execv (const char *pathname, char * const argv[]);execve(...), execle(..), execvp(....) ..

All six return: -1 on error, no return on success.

Kishore Kumar Pusukuri CS 153 Lab2

Page 30: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

exec()

I fork() is to create a new process (the child) that then causesanother program to be executed by calling one of execfunctions.

I When a process calls one of the exec functions, that process iscompletely replaced by the new program, and the newprogram starts executing at its main function.

I The process ID does not change across an exec because a newprocess is not created.

I exec merely replaces the current process (its text, data, heapand stack segments) with a brand new program.

Kishore Kumar Pusukuri CS 153 Lab2

Page 31: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

exec1.c and create.c

Study the programs exec1.c and create.c to understand how execworks.

Kishore Kumar Pusukuri CS 153 Lab2

Page 32: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 33: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 34: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 35: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 36: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 37: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

cont..

Kishore Kumar Pusukuri CS 153 Lab2

Page 38: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

How shell executes commands ?

Kishore Kumar Pusukuri CS 153 Lab2

Page 39: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

How to implement a simple shell

Kishore Kumar Pusukuri CS 153 Lab2

Page 40: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Interprocess communication

I Processes frequently need to communicate with otherprocesses.

I For example shell pipeline, the output of the first process mustbe passed to the second process, and so on down to the line.

I So, there is a need for communication between processes.I There are three issues here :

I How one process can pass information to another.I Making sure two or more processes do not get in each other’s

way ( Race condition problem ).I Proper sequencing when dependencies are present (Critical

Section problem or Critical Region problem).

Kishore Kumar Pusukuri CS 153 Lab2

Page 41: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

pipe

I Pipes are the oldest form of UNIX IPC and are provided by allUnix systems.They have two limitations :

I They are half-duplex. Data flows only in one direction.

I They can be used only between processes that have acommon ancestor.

I Normally a pipe is created by a process, that process callsfork, and the pipe is used between the parent and child.

Kishore Kumar Pusukuri CS 153 Lab2

Page 42: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

pipe function

Kishore Kumar Pusukuri CS 153 Lab2

Page 43: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Data in the pipe flows through the kernel

Two file descriptors are returned through the fields argument.fields[0] for reading and fields[1] is open for writing.

Kishore Kumar Pusukuri CS 153 Lab2

Page 44: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Creating IPC channel

A pipe in a single process is next to useless.Normally the process that calls pipe then calls fork, creating anIPC channel from the parent to the child or vice-versa.

Kishore Kumar Pusukuri CS 153 Lab2

Page 45: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Data flow from parent to child

Kishore Kumar Pusukuri CS 153 Lab2

Page 46: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Study the program pipe1.c

Kishore Kumar Pusukuri CS 153 Lab2

Page 47: CS 153 Lab2alumni.cs.ucr.edu/~kishore/cs153/lab2.pdf · Kishore Kumar Pusukuri CS 153 Lab2. Operating System Structure Program vs Process Creating a process : fork() Executing a program

Operating System StructureProgram vs ProcessCreating a process : fork()Executing a program with exec()How to implement a simple shell ?Interprocess communication (IPC) - pipe

Kishore Kumar Pusukuri CS 153 Lab2