CS307 Operating Systems Processes

Similar documents
Processes. Process Concept. The Process. The Process (Cont.) Process Control Block (PCB) Process State

Chapter 3: Processes. Operating System Concepts Essentials 8 th Edition

Chapter 3: Processes. Chapter 3: Processes. Process in Memory. Process Concept. Process State. Diagram of Process State

Chapter 3: Processes

Chapter 3: Process-Concept. Operating System Concepts 8 th Edition,

Process Concept. Chapter 4: Processes. Diagram of Process State. Process State. Process Control Block (PCB) Process Control Block (PCB)

Chapter 4: Processes

COP 4610: Introduction to Operating Systems (Spring 2014) Chapter 3: Process. Zhi Wang Florida State University

Chapter 4: Processes. Process Concept

Part Two - Process Management. Chapter 3: Processes

Chapter 3: Processes. Operating System Concepts 8 th Edition,

Processes. Electrical and Computer Engineering Stephen Kim ECE/IUPUI RTOS & Apps 1

COP 4610: Introduction to Operating Systems (Spring 2016) Chapter 3: Process. Zhi Wang Florida State University

Chapter 3: Processes. Operating System Concepts Essentials 2 nd Edition

Chapter 3: Process Concept

Chapter 3: Process Concept

Processes. Operating System Concepts with Java. 4.1 Sana a University, Dr aimen

Diagram of Process State Process Control Block (PCB)

Chapter 3: Process Concept

Chapter 5: Processes & Process Concept. Objectives. Process Concept Process Scheduling Operations on Processes. Communication in Client-Server Systems

Chapter 3: Processes. Operating System Concepts 8 th Edition,

The Big Picture So Far. Chapter 4: Processes

Chapter 3: Processes. Operating System Concepts 8th Edition

Chapter 4: Processes. Process Concept

Chapter 4: Processes

The Big Picture So Far. Chapter 4: Processes

Chapter 3: Processes

Chapter 3: Processes. Operating System Concepts 9 th Edition

Process a program in execution; process execution must progress in sequential fashion. Operating Systems

Chapter 3: Processes. Operating System Concepts 8th Edition,

Lecture 2 Process Management

CHAPTER 3 - PROCESS CONCEPT

Chapter 3: Process Concept

Processes and More. CSCI 315 Operating Systems Design Department of Computer Science

Chapter 3: Processes. Operating System Concepts 8 th Edition,

Process. Operating Systems (Fall/Winter 2018) Yajin Zhou ( Zhejiang University

OPERATING SYSTEMS. UNIT II Sections A, B & D. An operating system executes a variety of programs:

Chapter 3: Processes. Operating System Concepts 8th Edition, modified by Stewart Weiss

Chapter 3: Process Concept

Chapter 3 Processes. Process Concept. Process Concept. Process Concept (Cont.) Process Concept (Cont.) Process Concept (Cont.)

Module 4: Processes. Process Concept Process Scheduling Operation on Processes Cooperating Processes Interprocess Communication

Module 4: Processes. Process Concept Process Scheduling Operation on Processes Cooperating Processes Interprocess Communication

Chapter 4: Processes

Chapter 3: Processes. Operating System Concepts 9 th Edition

Chapter 4: Processes. Process Concept. Process State

Process Concept Process Scheduling Operations On Process Inter-Process Communication Communication in Client-Server Systems

Chapter 3: Processes

What Is A Process? Process States. Process Concept. Process Control Block (PCB) Process State Transition Diagram 9/6/2013. Process Fundamentals

Processes and Threads

Notice: This set of slides is based on the notes by Professor Perrone of Bucknell and the textbook authors Silberschatz, Galvin, and Gagne

Part V. Process Management. Sadeghi, Cubaleska RUB Course Operating System Security Memory Management and Protection

Process Concept. Minsoo Ryu. Real-Time Computing and Communications Lab. Hanyang University.

Process. Program Vs. process. During execution, the process may be in one of the following states

CS370 Operating Systems

Processes. CSE 2431: Introduction to Operating Systems Reading: Chap. 3, [OSC]

Chapter 3: Processes. Operating System Concepts 9 th Edit9on

Roadmap. Tevfik Ko!ar. CSC Operating Systems Spring Lecture - III Processes. Louisiana State University. Virtual Machines Processes

CHAPTER 2: PROCESS MANAGEMENT

Killing Zombies, Working, Sleeping, and Spawning Children

PROCESS MANAGEMENT. Operating Systems 2015 Spring by Euiseong Seo

Processes. Operating System Concepts 8 th Edition

Course: Operating Systems Instructor: M Umair. M Umair

Roadmap. Tevfik Ko!ar. CSC Operating Systems Fall Lecture - III Processes. Louisiana State University. Processes. September 1 st, 2009

Processes. Process Concept

Prepared by Prof. Hui Jiang Process. Prof. Hui Jiang Dept of Electrical Engineering and Computer Science, York University

Process. Prepared by Prof. Hui Jiang Dept. of EECS, York Univ. 1. Process in Memory (I) PROCESS. Process. How OS manages CPU usage? No.

CS420: Operating Systems. Interprocess Communication

CS370 Operating Systems

! The Process Control Block (PCB) " is included in the context,

Process Concept Process in Memory Process State new running waiting ready terminated Diagram of Process State

CPSC 341 OS & Networks. Processes. Dr. Yingwu Zhu

CSC 539: Operating Systems Structure and Design. Spring 2006

Piotr Mielecki Ph. D.

Chapter 3: Processes

Operating System Design

2. PROCESS. Operating System Concepts with Java 8th Edition Silberschatz, Galvin and Gagn

ICS Principles of Operating Systems

Operating Systems. Figure: Process States. 1 P a g e

Operating Systems. Lecture 05

Introduction to Client-Server Model

UNIT - II PROCESS MANAGEMENT

Operating Systems. Lecture 06. System Calls (Exec, Open, Read, Write) Inter-process Communication in Unix/Linux (PIPE), Use of PIPE on command line

Operating System Concepts Ch. 3: Processes

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

CSI Module 2: Processes

CSCE 313 Introduction to Computer Systems. Instructor: Dezhen Song

Processes. CS 475, Spring 2018 Concurrent & Distributed Systems

CSCE 313: Intro to Computer Systems

Processes. Process Scheduling, Process Synchronization, and Deadlock will be discussed further in Chapters 5, 6, and 7, respectively.

Inter-Process Communication. Disclaimer: some slides are adopted from the book authors slides with permission 1

Socket Programming. CSIS0234A Computer and Communication Networks. Socket Programming in C

CS321: Computer Networks Socket Programming

Processes COMPSCI 386

Outline. Interprocess Communication. Interprocess Communication. Communication Models: Message Passing and shared Memory.

Network Programming Worksheet 2. Simple TCP Clients and Servers on *nix with C.

Outlook. Process Concept Process Scheduling Operations on Processes. IPC Examples

Operating Systemss and Multicore Programming (1DT089)

Review. Preview. Closing a TCP Connection. Closing a TCP Connection. Port Numbers 11/27/2017. Packet Exchange for TCP Connection

Threads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits

Unix Network Programming Chapter 4. Elementary TCP Sockets 광운대학교컴퓨터과학과 정보통신연구실 석사과정안중현

Transcription:

CS307 Processes Fan Wu Department of Computer Science and Engineering Shanghai Jiao Tong University Spring 2018

Process Concept Process a program in execution An operating system executes a variety of programs: Batch system jobs Time-shared systems user programs or tasks All these activities are processes Textbook uses the terms job and process almost interchangeably 2

The Process Multiple parts The program code, also called text section Current activity including program counter, processor registers Stack containing temporary data Function parameters, return addresses, local variables Data section containing global variables Heap containing memory dynamically allocated during run time 3

The Process (Cont.) What is the difference between program and process? Program is passive entity, process is active Program becomes process when the executable file is loaded into memory Execution of program started via GUI mouse clicks, command line entry of its name, etc One program can be several processes Consider multiple users executing the same program 4

Process State As a process executes, it changes state new: The process is being created running: Instructions are being executed waiting: The process is waiting for some event to occur ready: The process is waiting to be assigned to a processor terminated: The process has finished execution 5

Process Control Block (PCB) Information associated with each process Process state Process number Program counter CPU registers CPU scheduling information Memory-management information Accounting information I/O status information 6

Process Representation in Linux 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 */ 7

PCBs in UNIX The PCB is the box labeled process structure, but the user structure maintains some of the information as well (only required when the process is resident). 8

PCBs in Windows NT Information is scattered in a variety of objects. Executive Process Block (EPROCESS) Kernel Process Block (KPROCESS) Process Environment Block (PEB) 9

CPU Switch From Process to Process 10

Process Scheduling Maximize CPU use, quickly switch processes onto CPU for time sharing Process scheduler selects among available processes for next execution on CPU Maintains scheduling queues of processes Job queue set of all processes in the system Ready queue set of all processes residing in main memory, ready and waiting to execute Device queues set of processes waiting for an I/O device Processes migrate among the various queues 11

Ready Queue And Various I/O Device Queues 12

Representation of Process Scheduling 13

Schedulers Long-term scheduler (or job scheduler) selects which processes should be brought into the ready queue Short-term scheduler (or CPU scheduler) selects which process should be executed next and allocates CPU Sometimes the only scheduler in a system 14

Schedulers (Cont.) Short-term scheduler is invoked very frequently (milliseconds) (must be fast) Long-term scheduler is invoked very infrequently (seconds, minutes) (may be slow) The long-term scheduler controls the degree of multiprogramming Processes can be described as either: I/O-bound process spends more time doing I/O than computations, many short CPU bursts CPU-bound process spends more time doing computations; few very long CPU bursts 15

Operations on Processes Process Creation Process Termination 17

Process Creation Parent process create children processes, which, in turn create other processes, forming a tree of processes Generally, process identified and managed via a process identifier (pid) 18

Process Creation (Cont.) Resource sharing Parent and children share all resources Children share subset of parent s resources Parent and child share no resources Initialization data Execution Parent and children execute concurrently Parent waits until children terminate Address space Child duplicate of parent Child has a program loaded into it 19

C Program Forking Separate Process UNIX examples fork system call creates new process exec system call used after a fork to replace the process memory space with a new program #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { int i = 1; pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); return 1; } else if (pid == 0) { /* child process */ printf( This execlp("/bin/ls", is child."); "ls", NULL); } else { /* parent process */ /* parent will wait for the child */ wait (NULL); printf ("Child Complete."); } return 0; } 20

Process Execution 21

Process Termination Process executes last statement and asks the operating system to delete it (exit) Output data from child to parent (via wait) Process resources are deallocated by operating system Parent may terminate execution of children processes (abort) Child has exceeded allocated resources Task assigned to child is no longer required If parent is exiting Some operating systems do not allow child to continue if its parent terminates All children terminated - cascading termination 22

Interprocess Communication Processes within a system may be independent or cooperating Cooperating process can affect or be affected by other processes, including sharing data Reasons for cooperating processes: Information sharing Computation speedup Modularity Convenience Cooperating processes need InterProcess Communication (IPC) Two models of IPC Shared memory Message passing 23

Communications Models Message Passing Shared Memory 24

Interprocess Communication Shared Memory A region of memory that is shared by cooperating processes is established. Processes can then exchange information by reading and writing data to the shared region. 25

Producer-Consumer Problem Paradigm for cooperating processes, producer process produces information that is consumed by a consumer process unbounded-buffer places no practical limit on the size of the buffer bounded-buffer assumes that there is a fixed buffer size Send to Buffer Receive from Buffer Producer Consumer 26

Bounded-Buffer Shared-Memory Solution Shared data #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[buffer_size]; int in = 0; int out = 0; 27

Bounded-Buffer Shared-Memory Solution while (true) { /* Produce an item */ } while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER_SIZE; while (true) { } Producer while (in == out) ; // do nothing // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER_SIZE; return item; Consumer 28

Bounded-Buffer Shared-Memory Solution Weakness: Busy waiting The solution allows only BUFFER_SIZE-1 elements at the same time Popquiz: Rewrite the previous processes to allow BUFFER_SIZE items in the buffer at the same time 29

Ordinary Pipes Ordinary Pipes allow communication in standard producerconsumer style Producer writes to one end (the write-end of the pipe) Consumer reads from the other end (the read-end of the pipe) Ordinary pipes are in fact unidirectional Require parent-child relationship between communicating processes 31

Ordinary Pipe Output WRITE Pipe READ Input Process A Process B 32

Using Pipe Part 1 First, create a pipe and check for errors int mypipe[2]; if (pipe(mypipe)) { fprintf (stderr, "Pipe failed.\n"); return -1; } Second, fork your threads mypipe[0] mypipe[1] read-end write-end Third, close the pipes you don't need in that thread reader should close(mypipe[1]); writer should close(mypipe[0]); 33

Using Pipe Part 2 Fourth, the writer should write the data to the pipe write(mypipe[1],&c,1); Fifth, the reader reads from the data from the pipe: while (read(mypipe[0],&c,1)>0) { //do something, loop will exit when WRITER closes pipe } Sixth, when writer is done with the pipe, close it close(mypipe[1]); //EOF is sent to reader Seventh, when reader receives EOF from closed pipe, close the pipe and exit your polling loop close(mypipe[0]); //all pipes should be closed now 34

Interprocess Communication Message Passing Mechanism for processes to communicate and to synchronize their actions Message system processes communicate with each other without resorting to shared variables IPC facility provides two operations: send(message) message size fixed or variable receive(message) If P and Q wish to communicate, they need to: establish a communication link between them exchange messages via send/receive 35

Direct Communication Processes must name each other explicitly: send (P, message) send a message to process P receive(q, message) receive a message from process Q Properties of communication link Links are established automatically; The processes need to know only each other s identity to communicate A link is associated with exactly one pair of communicating processes Between each pair there exists exactly one link 36

Indirect Communication Messages are directed to and received from mailboxes (also referred to as ports) Each mailbox has a unique id Processes can communicate only if they share a mailbox Primitives are defined as: send(a, message) send a message to mailbox A receive(a, message) receive a message from mailbox A Properties of communication link Link established only if processes share a common mailbox A link may be associated with many processes Each pair of processes may share several communication links 37

Sockets A socket is defined as an endpoint for communication Concatenation of IP address and port The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8 Communication consists between a pair of sockets 40

Socket Communication 41

Steps to Create Server Side 1. Create a socket with the socket() system call 2. Bind the socket to an address using the bind() system call. 3. Listen for connections with the listen() system call 4. Accept a connection with the accept() system call (This call typically blocks until a client connects with the server) 5. Send and receive data with read() and write() system calls 6. Close connection with close() system call socket() bind() listen() accept() read()/write() close() 42

Steps to Create Client Side 1. Create a socket with the socket() system call 2. Connect the socket to the address of the server using the connect() system call 3. Send and receive data with read() and write() system calls. socket() connect() read()/write() close() 4. Close the socket with close() system call 43

Interaction Between Client and Server socket() socket() bind() listen() accept() read()/write() close() Server connect() read()/write() close() Client 44

IP address: Internet Domain Socket 32 bits (IPv4) or 128 bits (IPv6) C/S work on same host: just use localhost Port 16 bit unsigned integer Lower numbers are reserved for standard services Transport layer protocol: TCP / UDP 45

Headers #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sstream> #include <unistd.h> #include <sys/types.h> Definitions of a number of data types used in system calls #include <sys/socket.h> Definitions of structures needed for sockets #include <netinet/in.h> Constants and structures needed for internet domain addresses 46

Creating Socket int sockfd sockfd = socket(af_inet, SOCK_STREAM, 0); if (sockfd < 0) { perror( ERROR opening socket ); exit(2); } AF_INET: address domain SOCK_STREAM: stream socket, characters are read in a continuous stream as if from a file or pipe 0: protocol. The operating system chooses the most appropriate protocol. It will choose TCP for stream sockets. 47

Binding Socket struct sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(inaddr_any); serv_addr.sin_port = htons(basic_server_port); bind(sockfd, (sockaddr*) &serv_addr, sizeof(serv_addr)); //error check INADDR_ANY: get IP address of the host automatically htonl, htons: data format conversion bind(): binds a socket to an address 48

Listening and Accepting Connection listen(sockfd, 5); listen(): allows the server to listen on the socket for connections, with a backlog queue of size 5. int client_sockfd; struct sockaddr_in client_addr; int len = sizeof(client_addr); client_sockfd = accept(sockfd, (sockaddr *) &client_addr, &len); //error check accept(): block process until a client connects to the server. It returns a new socket file descriptor, if the connection is created. 49

Reading and Writing char buf[1024]; int nread = read(client_sockfd, buf, 1024); read(): reads from the socket write(client_sockfd, buf, len); write(): writes to the socket close(client_sockfd); close(): closes the socket 50

Connecting A Client to A Server int sockfd; sockfd = socket(af_inet, SOCK_STREAM, 0); // error check struct sockaddr_in serv_addr; struct hostent *host; serv_addr.sin_family = AF_INET; host = gethostbyname(argv[1]); // error check memcpy(&serv_addr.sin_addr.s_addr, host->h_addr, host->h_length); serv_addr.sin_port = htons(basic_server_port); connect(sockfd, (sockaddr *) &serv_addr, sizeof(serv_addr)) // error check 51

Homework Reading Chapter 3 52