Operating Systems, laboratory exercises. List 2.
|
|
- Oscar Martin
- 6 years ago
- Views:
Transcription
1 Operating Systems, laboratory exercises. List 2. Subject: Creating processes and threads with UNIX/Linux API functions. 1. Creating a process with UNIX API function. To create a new process from running process (in a way similar to launching shell script from running shell script) UNIX programmer can use C-language function fork() available in UNIX/Linux Application Programmer s Interface defined by POSIX standard. Typical implementation of the creating a new process with this function looks like this: #include <sys/types.h> /* Important header file with some types */ #include <unistd.h> pid_t justpid, mypid, myparentpid; /* pid_t is defined in types.h */ /* Fork new process: */ justpid = fork(); /* New process is created at this moment */ if ( justpid < 0 ) /* If return from fork() is negative error */ /* Error occurred - no child process. */ fprintf( stderr, "Fork failed." ); /* Error message to stderr */ return 1; if ( justpid == 0 ) /* Child process */ /* To get PID of this process */ myparentpid = getppid(); /* To get the PID of parent process PPID */ /* Rest of the code which runs as child process. */ else /* Parent process - the value returned by fork() is child's PID */ myparentpid = getppid(); /* Rest of the code which runs as parent process. */ The newly created child process as a binary image in memory is created as a clone of his parent. That means it inherits the copies of all variables created in parent (justpid, mypid, myparentpid in example given above) with their values at the moment of invoking fork() function. The same is true as far as the functions implemented in parent program (main() function in this case) is concerned. To compile a simple C-language program (like the one shown above) programmers can invoke gcc utility from command line: >gcc source_file.c o executable_file 1
2 To exchange the binary code of the child process with something else than code of the main (parent) program, programmer can use the function from the exec() family, which loads given binary file as the image of the child: justpid = fork(); if ( justpid == 0 ) /* Child process */ /* Loading new code (program) for child process and starting it */ execlp( "./ex_2-2b", "ex_2-2b", NULL ); else /* Parent process */ Different strategies can be applied when several related processes are working together. For example: they can run independently and each of them does its own work, or parent can wait for its child processes doing nothing, then making use of results given by child processes. This second strategy is implemented with wait() function used in parent process. The appropriate code in simplest variant can look as follows: justpid = fork(); if ( justpid == 0 ) /* Child process */ printf( "[CHILD]: Child %d started.\n", getpid() ); else /* Parent process waits for the end of child process: */ wait ( NULL ); printf( "[PARENT]: Child %d finished.\n", justpid ); Some interesting observations can be performed with following example program: #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> pid_t justpid, mypid, myparentpid; int exitstatus; /* fork new process */ justpid = fork(); if ( justpid < 0 ) /* Error occurred - no child process. */ fprintf( stderr, "Fork failed." ); return 1; if ( justpid == 0 ) /* Child process. */ 2
3 myparentpid = getppid(); printf( "[CHILD]: PID = %d PPID = %d\n", mypid, myparentpid ); /* Blind loop - signal like SIGINT is needed to exit from process. */ while ( 1 ) /* Empty loop - child process "works" */ ; else /* Parent process - the value returned by fork() is child's PID. */ myparentpid = getppid(); printf( "[PARENT]: PID = %d PPID = %d Child's PID = %d\n", \ mypid, myparentpid, justpid ); /* Wait for particular child process end. */ waitpid( justpid, &exitstatus, 0 ); if( WIFEXITED(exitStatus) ) printf( "[PARENT]: Child process with PID = %d exited \ with status %d\n", justpid, WEXITSTATUS(exitStatus) ); if( WIFSIGNALED(exitStatus) ) printf( "[PARENT]: Child process with PID = %d terminated \ by signal %d\n", justpid, WTERMSIG(exitStatus) ); /* Then we can do something more (reminder section). */ while ( 1 ) /* Empty loop - parent process "works" */ ; 2. Creating a lightweight process (thread) with UNIX API functions. To create a thread according to POSIX standard programmer can use C-language function pthread_create() available in pthread library of UNIX Application Programmer s Interface. This time preparation and appropriate initialization of environment needed to keep thread alive under its parent process control is necessary. So the functions pthread_attr_init()and pthread_attr_setscope() should be invoked before. Typical implementation of the creating two new threads looks like this: #include <sys/types.h> #include <pthread.h> void *threadcode1() /* The code which should be run as thread #1 */ void *threadcode2() /* The code which should be run as thread #2 */ pthread_t threadid1, threadid2; pthread_attr_t threadattr1, threadattr2; 3
4 /* Preparation the environment for both threads: */ pthread_attr_init( &threadattr1 ); pthread_attr_setscope( &threadattr1, PTHREAD_SCOPE_PROCESS ); pthread_attr_init( &threadattr2 ); pthread_attr_setscope( &threadattr2, PTHREAD_SCOPE_PROCESS ); /* Creation of the threads: */ pthread_create( &threadid1, &threadattr1, threadcode1, NULL ); pthread_create( &threadid2, &threadattr2, threadcode2, NULL ); /* Rest of the main process program */ To compile the program and link the pthread library programmer should invoke gcc utility from command line this way: >gcc source_file.c o executable_file lpthread Please notice that there s no space between l switch and name of the linked library. The pthread_attr_setscope() function is important, because it sets the strategy of time sharing between the threads and main process. When setting PTHREAD_SCOPE_PROCESS predefined value programmer decides, that thread rivals for CPU time from the pool given by operating system to its main, parent process. The value PTHREAD_SCOPE_SYSTEM forces the thread to rival with all the processes running in operating system (sometimes it can be a better strategy). Without setting this attribute the thread will not be given the CPU time unless the parent process will give it up by himself (waiting for I/O operation for example). 3. Simple inter-process communication with signals. To send a signal from the application programmer can use the kill() function, which works like the kill shell command sends the signal of given number to process identified by its PID. Programmer can also use signal() function to attach the functions (handlers) for given signals which will be working instead of default ones, except signal 9 (SIGKILL) which cannot be re-programmed and always kills the process immediately. Typical implementation looks like this: #include <sys/types.h> #include <signal.h> #include <unistd.h> unsigned long i = 0; /* Public variable, accessible for all functions */ /* Custom SIGINT (Ctrl+C) signal handler */ void myint( int signo ) if( signo == SIGINT ) printf( "Process %d killed after %ld iterations.\n", getpid(), i ); exit( 0 ); signal( SIGINT, myint ); /* Setting a new handler for SIGINT */ 4
5 printf( "Process %d started.\n", getpid() ); /* Blind loop - SIGINT signal aborts */ while ( 1 ) i++; /* No output by printf() etc. CPU oriented process */ Try to run the program like given above (model of a CPU-oriented process) in foreground and kill him using Ctrl+C to send SIGINT signal, then run it in background and use the kill SIGINT <PID> command after checking the PID value. In fact terminating process needs some support from the parent of terminated process to avoid indicating it as zombie. So proper implementation of signal handler should look more or less like this: #include <sys/types.h> #include <sys/wait.h> #include <errno.h> #include <signal.h> #include <unistd.h> /* Custom signal handler */ void mysignal( int signo ) if( signo == SIGTERM ) printf( "Process %d killed by SIGTERM.\n", getpid() ); exit( 0 ); /* exit() termitanes the process */ if( signo == SIGINT ) printf( "Process %d killed by SIGINT.\n", getpid() ); exit( 0 ); /* SIGCHLD needs some support for terminated process */ if( signo == SIGCHLD ) int saved_errno; saved_errno = errno; while ( waitpid( (pid_t)-1, 0, WNOHANG ) > 0 ) errno = saved_errno; printf( "Process %d received SIGCHLD.\n", getpid() ); pid_t justpid, mypid, myparentpid; /* Setting custom handler for SIGTERM, SIGINT and SIGCHLD */ signal( SIGTERM, mysignal ); signal( SIGINT, mysignal ); signal( SIGCHLD, mysignal ); justpid = fork(); /* New process is created at this moment */ if( justpid < 0 ) fprintf( stderr, "Fork failed.\n" ); return( 1 ); 5
6 if ( justpid == 0 ) /* Child process */ myparentpid = getppid(); printf( "Child works with PID %d\n", mypid ); do while( 1 ); else /* Parent process */ myparentpid = getppid(); signal( SIGINT, mysignal ); printf( "Parent works with PID %d\n", mypid ); do while( 1 ); 6
7 Exercise 1. Read the manual (man) about the fork(), getpid(), getppid() UNIX/Linux API functions. Then write a program which creates one child process, and then both parent and child are running in blind loops displaying their PIDs and PPIDs. This way you will have the models of typical I/O-oriented processes. Perform some observations, how the CPU time is shared between these two processes and how they are reacting for Ctrl+C (SIGINT) or default SIGTERM signal (sent from command line by kill shell command when running in background can be some fun). The output screen may look like this: [PARENT]: PID 2374, PPID 2360 [PARENT]: PID 2374, PPID 2360 [CHILD]: PID 2375, PPID 2374 [PARENT]: PID 2374, PPID 2360 [CHILD]: PID 2375, PPID 2374 [CHILD]: PID 2375, PPID 2374 [PARENT]: PID 2374, PPID 2360 Exercise 2. Read the manual about the wait() and exec() families of functions. Then write a program which creates one child process, loads new binary code (compiled from other source) for the child, and then parent waits (without using CPU nor I/O) until child finishes his task (counting from 1 to 10 and displaying counter status for example). The output screen may look like this: [PARENT]: PID 2421, waits for child with PID 2422 [CHILD]: PID 2421, starts counting: [CHILD]: i = 1 [CHILD]: i = 2 [CHILD]: i = 10 [PARENT]: Child with PID 2422 finished and unloaded. Exercise 3. Read the manual about the kill() and signal() families of functions. Then write a program which creates one child process, then both parent and child are running in blind loops incrementing their own copies of counter declared as public (global) variable without displaying it (models of a CPU-oriented process) until SIGINT signal (Ctrl+C) kills them both. The custom handler for SIGINT signal should display the value of counter and exit from process. The output screen may look like this: [PARENT]: PID 8519, starts counting. [CHILD]: PID 8520, PPID 8519 starts counting. Process 8519 killed, i = Process 8520 killed, i = Perform several experiments with different periods of running time and try to make some conclusions about quality of time-sharing multitasking in your operating system: are the processes treated more or less equally by short time scheduler and dispatcher or not? 7
8 Exercise 4. Read the manual about the pthread_attr_init(), pthread_attr_setscope() and pthread_create() functions. Then write the program which creates two threads playing the game: first of them increments the common variable in the blind loop (global variables this time are not cloned, but accessible in one instance for main process and threads), the second thread decrements the same variable. Both of them should also count the numbers of their iterations, the same should do the main process (three different counters). All of them should be CPU-oriented (that means working without any output to terminal). The end of the game will be caused by SIGINT signal. The custom handler of SIGINT should display the final value of the common variable (which thread is the winner?) and numbers of iterations for threads and main process. The output screen may look like this: [MAIN]: PID = 8902, i = [MAIN]: main segment iterations: [MAIN]: incrthread iterations: [MAIN]: decrthread iterations: [ Perform several experiments with different periods of running time and try to make some conclusions whether the threads and main process are treated more or less equally. Try to use both PTHREAD_SCOPE_PROCESS and PTHREAD_SCOPE_SYSTEM settings. 8
Operating Systems. Lecture 05
Operating Systems Lecture 05 http://web.uettaxila.edu.pk/cms/sp2013/seosbs/ February 25, 2013 Process Scheduling, System Calls Execution (Fork,Wait,Exit,Exec), Inter- Process Communication Schedulers Long
More informationCSci 4061 Introduction to Operating Systems. Processes in C/Unix
CSci 4061 Introduction to Operating Systems Processes in C/Unix Process as Abstraction Talked about C programs a bit Program is a static entity Process is an abstraction of a running program provided by
More informationOperating systems and concurrency - B03
Operating systems and concurrency - B03 David Kendall Northumbria University David Kendall (Northumbria University) Operating systems and concurrency - B03 1 / 15 Introduction This lecture gives a more
More informationCSC 1600 Unix Processes. Goals of This Lecture
CSC 1600 Unix Processes q Processes Goals of This Lecture q Process vs. program q Context switching q Creating a new process q fork: process creates a new child process q wait: parent waits for child process
More informationCS240: Programming in C
CS240: Programming in C Lecture 17: Processes, Pipes, and Signals Cristina Nita-Rotaru Lecture 17/ Fall 2013 1 Processes in UNIX UNIX identifies processes via a unique Process ID Each process also knows
More informationLecture 4 Threads. (chapter 4)
Bilkent University Department of Computer Engineering CS342 Operating Systems Lecture 4 Threads (chapter 4) Dr. İbrahim Körpeoğlu http://www.cs.bilkent.edu.tr/~korpe 1 References The slides here are adapted/modified
More informationIntroduction to Processes
Computer Systems II Introduction to Processes 1 Review: Basic Computer Hardware CPU Instruction Register Control BUS read (disk) local buffer Disk Controller Memory Executable Disk 1 Review: Timing Problem
More informationOperating System Structure
Operating System Structure CSCI 4061 Introduction to Operating Systems Applications Instructor: Abhishek Chandra Operating System Hardware 2 Questions Operating System Structure How does the OS manage
More informationSE350: Operating Systems
SE350: Operating Systems Tutorial: The Programming Interface Main Points Creating and managing processes fork, exec, wait Example: implementing a shell Shell A shell is a job control system Allows programmer
More informationOperating Systems. Threads and Signals. Amir Ghavam Winter Winter Amir Ghavam
95.300 Operating Systems Threads and Signals Amir Ghavam Winter 2002 1 Traditional Process Child processes created from a parent process using fork Drawbacks Fork is expensive: Memory is copied from a
More informationCS240: Programming in C
CS240: Programming in C Lecture 16: Process and Signals Cristina Nita-Rotaru Lecture 16/ Fall 2013 1 Processes in UNIX UNIX identifies processes via a unique Process ID Each process also knows its parent
More informationOperating systems fundamentals - B06
Operating systems fundamentals - B06 David Kendall Northumbria University David Kendall (Northumbria University) Operating systems fundamentals - B06 1 / 12 Introduction Introduction to threads Reminder
More informationProcesses and Threads
TDDI04 Concurrent Programming, Operating Systems, and Real-time Operating Systems Processes and Threads [SGG7] Chapters 3 and 4 Copyright Notice: The lecture notes are mainly based on Silberschatz s, Galvin
More informationPrepared by Prof. Hui Jiang Process. Prof. Hui Jiang Dept of Electrical Engineering and Computer Science, York University
EECS3221.3 Operating System Fundamentals No.2 Process Prof. Hui Jiang Dept of Electrical Engineering and Computer Science, York University How OS manages CPU usage? How CPU is used? Users use CPU to run
More informationProcess. Prepared by Prof. Hui Jiang Dept. of EECS, York Univ. 1. Process in Memory (I) PROCESS. Process. How OS manages CPU usage? No.
EECS3221.3 Operating System Fundamentals No.2 Prof. Hui Jiang Dept of Electrical Engineering and Computer Science, York University How OS manages CPU usage? How CPU is used? Users use CPU to run programs
More informationMultitasking. Programmer s model of multitasking. fork() spawns new process. exit() terminates own process
Signals Prof. Jin-Soo Kim( jinsookim@skku.edu) TA JinHong Kim( jinhong.kim@csl.skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Multitasking Programmer s model of multitasking
More informationLesson 2. process id = 1000 text data i = 5 pid = 1200
Lesson 2 fork: create a new process. The new process (child process) is almost an exact copy of the calling process (parent process). In this method we create an hierarchy structure for the processes,
More information518 Lecture Notes Week 3
518 Lecture Notes Week 3 (Sept. 15, 2014) 1/8 518 Lecture Notes Week 3 1 Topics Process management Process creation with fork() Overlaying an existing process with exec Notes on Lab 3 2 Process management
More informationPROCESS CONTROL BLOCK TWO-STATE MODEL (CONT D)
MANAGEMENT OF APPLICATION EXECUTION PROCESS CONTROL BLOCK Resources (processor, I/O devices, etc.) are made available to multiple applications The processor in particular is switched among multiple applications
More informationProgramming Assignments will be.. All the PAs are continuous 3 major factors that you should consider
Signals Prof. Jin-Soo Kim( jinsookim@skku.edu) TA - Dong-Yun Lee (dylee@csl.skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu NOTICE Programming Assignments will be.. All
More informationCSC209 Fall Karen Reid 1
' & ) ) #$ "! How user programs interact with the Operating System. Somehow we need to convert a program into machine code (object code). A compiler passes over a whole program before translating it into
More informationThreads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits
CS307 What is a thread? Threads A thread is a basic unit of CPU utilization contains a thread ID, a program counter, a register set, and a stack shares with other threads belonging to the same process
More informationCS 350 : COMPUTER SYSTEM CONCEPTS SAMPLE TEST 2 (OPERATING SYSTEMS PART) Student s Name: MAXIMUM MARK: 100 Time allowed: 70 minutes
CS 350 : COMPUTER SYSTEM CONCEPTS SAMPLE TEST 2 (OPERATING SYSTEMS PART) Student s Name: MAXIMUM MARK: 100 Time allowed: 70 minutes Q1 (30 marks) NOTE: Unless otherwise stated, the questions are with reference
More informationCS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University
CS 333 Introduction to Operating Systems Class 3 Threads & Concurrency Jonathan Walpole Computer Science Portland State University 1 Process creation in UNIX All processes have a unique process id getpid(),
More informationProcesses. CS3026 Operating Systems Lecture 05
Processes CS3026 Operating Systems Lecture 05 Dispatcher Admit Ready Queue Dispatch Processor Release Timeout or Yield Event Occurs Blocked Queue Event Wait Implementation: Using one Ready and one Blocked
More informationSystem Programming. Process Control II
Content : by Dr. B. Boufama School of Computer Science University of Windsor Instructor: Dr. A. Habed adlane@cs.uwindsor.ca http://cs.uwindsor.ca/ adlane/60-256 Content Content 1 Terminating a process
More informationSignals. POSIX defines a variety of signal types, each for a particular
Signals A signal is a software interrupt delivered to a process. The operating system uses signals to report exceptional situations to an executing program. Some signals report errors such as references
More informationLesson 3. The func procedure allows a user to choose the action upon receipt of a signal.
Lesson 3 Signals: When a process terminates abnormally, it usually tries to send a signal indicating what went wrong. C programs can trap these for diagnostics. Software interrupts: Stop executing the
More informationCSCB09: Software Tools and Systems Programming. Bianca Schroeder IC 460
CSCB09: Software Tools and Systems Programming Bianca Schroeder bianca@cs.toronto.edu IC 460 The plan for today Processes How to create new processes Why would you want to have a program that creates new
More informationCS510 Operating System Foundations. Jonathan Walpole
CS510 Operating System Foundations Jonathan Walpole The Process Concept 2 The Process Concept Process a program in execution Program - description of how to perform an activity instructions and static
More informationProcesses. Overview. Processes. Process Creation. Process Creation fork() Processes. CPU scheduling. Pål Halvorsen 21/9-2005
INF060: Introduction to Operating Systems and Data Communication Operating Systems: Processes & CPU Pål Halvorsen /9-005 Overview Processes primitives for creation and termination states context switches
More informationProcesses. Processes (cont d)
Processes UNIX process creation image-file arg1 arg2 Shell command line example ls -l Equivalent to /bin/ls -l Why? How do you find out where the image file is? Background processes ls -l & Execute a process
More informationProcesses. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University
Processes Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu OS Internals User space shell ls trap shell ps Kernel space File System Management I/O
More informationCS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2018 Lecture 20
CS24: INTRODUCTION TO COMPUTING SYSTEMS Spring 2018 Lecture 20 LAST TIME: UNIX PROCESS MODEL Began covering the UNIX process model and API Information associated with each process: A PID (process ID) to
More informationCS 355 Operating Systems. Keeping Track of Processes. When are processes created? Process States 1/26/18. Processes, Unix Processes and System Calls
CS 355 Operating Systems Processes, Unix Processes and System Calls Process User types command like run foo at keyboard I/O device driver for keyboard and screen Command is parsed by command shell Executable
More informationCSE 410: Computer Systems Spring Processes. John Zahorjan Allen Center 534
CSE 410: Computer Systems Spring 2018 Processes John Zahorjan zahorjan@cs.washington.edu Allen Center 534 1. What is a process? Processes 2. What's the process namespace? 3. How are processes represented
More informationUNIX Processes. by Armin R. Mikler. 1: Introduction
UNIX Processes by Armin R. Mikler Overview The UNIX Process What is a Process Representing a process States of a process Creating and managing processes fork() wait() getpid() exit() etc. Files in UNIX
More informationWeek 2 Intro to the Shell with Fork, Exec, Wait. Sarah Diesburg Operating Systems CS 3430
Week 2 Intro to the Shell with Fork, Exec, Wait Sarah Diesburg Operating Systems CS 3430 1 Why is the Shell Important? Shells provide us with a way to interact with the core system Executes programs on
More informationOperating Systems Lab
Operating Systems Lab Islamic University Gaza Engineering Faculty Department of Computer Engineering Fall 2012 ECOM 4010: Operating Systems Lab Eng: Ahmed M. Ayash Lab # 3 Fork() in C and C++ programming
More informationEXPERIMENT NO : M/C Lenovo Think center M700 Ci3,6100,6th Gen. H81, 4GB RAM,500GB HDD
GROUP - C EXPERIMENT NO : 12 1. Title: Implement UNIX system calls like ps, fork, join, exec family, and wait for process management (use shell script/ Java/ C programming) 2. Objectives : - To understand
More informationCSci 4061 Introduction to Operating Systems. (Threads-POSIX)
CSci 4061 Introduction to Operating Systems (Threads-POSIX) How do I program them? General Thread Operations Create/Fork Allocate memory for stack, perform bookkeeping Parent thread creates child threads
More informationSystem Programming. Signals II
Content : by Dr. B. Boufama School of Computer Science University of Windsor Instructor: Dr. A. Habed adlane@cs.uwindsor.ca http://cs.uwindsor.ca/ adlane/60-256 Content Content 1 Suspending a process 2
More informationFall 2015 COMP Operating Systems. Lab #3
Fall 2015 COMP 3511 Operating Systems Lab #3 Outline n Operating System Debugging, Generation and System Boot n Review Questions n Process Control n UNIX fork() and Examples on fork() n exec family: execute
More informationOperating Systems & Concurrency: Process Concepts
Operating Systems & Concurrency: Process Concepts Michael Brockway October 6, 2011 Outline Processes - context, data area, states Process creation, termination unix examples Processes and threads Processes
More informationProcess management. What s in a process? What is a process? The OS s process namespace. A process s address space (idealized)
Process management CSE 451: Operating Systems Spring 2012 Module 4 Processes Ed Lazowska lazowska@cs.washington.edu Allen Center 570 This module begins a series of topics on processes, threads, and synchronization
More informationCSE 451: Operating Systems Winter Module 4 Processes. Mark Zbikowski Allen Center 476
CSE 451: Operating Systems Winter 2015 Module 4 Processes Mark Zbikowski mzbik@cs.washington.edu Allen Center 476 2013 Gribble, Lazowska, Levy, Zahorjan Process management This module begins a series of
More informationCSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Midterm Exam Questions (document version 1.1)
CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Midterm Exam Questions (document version 1.1) Overview The midterm exam will be in class on Monday, March 28, 2016 from 10:00-11:45AM
More informationSignals. Joseph Cordina
1 Signals Signals are software interrupts that give us a way to handle asynchronous events. Signals can be received by or sent to any existing process. It provides a flexible way to stop execution of a
More informationWorkshop on Inter Process Communication Solutions
Solutions 1 Background Threads can share information with each other quite easily (if they belong to the same process), since they share the same memory space. But processes have totally isolated memory
More informationSignals. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University
Signals Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Multitasking (1) Programmer s model of multitasking fork() spawns new process Called once,
More informationProcesses & Threads. Today. Next Time. ! Process concept! Process model! Implementing processes! Multiprocessing once again. ! More of the same J
Processes & Threads Today! Process concept! Process model! Implementing processes! Multiprocessing once again Next Time! More of the same J The process model! Most computers can do more than one thing
More informationWindows architecture. user. mode. Env. subsystems. Executive. Device drivers Kernel. kernel. mode HAL. Hardware. Process B. Process C.
Structure Unix architecture users Functions of the System tools (shell, editors, compilers, ) standard library System call Standard library (printf, fork, ) OS kernel: processes, memory management, file
More informationCSE 380 Computer Operating Systems. Instructor: Insup Lee. University of Pennsylvania Fall 2003
CSE 380 Computer Operating Systems Instructor: Insup Lee University of Pennsylvania Fall 2003 Lecture Note 2: Processes and Threads Lecture Note 2.1: Processes and System Calls 1 Process q Consider a simple
More informationSystem Calls and Signals: Communication with the OS. System Call. strace./hello. Kernel. Context Switch
System Calls and Signals: Communication with the OS Jonathan Misurda jmisurda@cs.pitt.edu System Call An operation (function) that an OS provides for running applications to use CS 1550 2077 strace./hello
More informationCITS2002 Systems Programming. Creating a new process using fork() 1 next CITS2002 CITS2002 schedule
1 next CITS2002 CITS2002 schedule Creating a new process using fork() fork() is very unusual because it returns different values in the (existing) parent process, and the (new) child process: the value
More informationCS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University
CS 333 Introduction to Operating Systems Class 3 Threads & Concurrency Jonathan Walpole Computer Science Portland State University 1 The Process Concept 2 The Process Concept Process a program in execution
More informationCS 31: Intro to Systems Processes. Kevin Webb Swarthmore College March 31, 2016
CS 31: Intro to Systems Processes Kevin Webb Swarthmore College March 31, 2016 Reading Quiz Anatomy of a Process Abstraction of a running program a dynamic program in execution OS keeps track of process
More informationProject 2: Shell with History1
Project 2: Shell with History1 See course webpage for due date. Submit deliverables to CourSys: https://courses.cs.sfu.ca/ Late penalty is 10% per calendar day (each 0 to 24 hour period past due). Maximum
More informationCS 33. Architecture and the OS. CS33 Intro to Computer Systems XIX 1 Copyright 2017 Thomas W. Doeppner. All rights reserved.
CS 33 Architecture and the OS CS33 Intro to Computer Systems XIX 1 Copyright 2017 Thomas W. Doeppner. All rights reserved. The Operating System My Program Mary s Program Bob s Program OS CS33 Intro to
More informationPOSIX threads CS 241. February 17, Copyright University of Illinois CS 241 Staff
POSIX threads CS 241 February 17, 2012 Copyright University of Illinois CS 241 Staff 1 Recall: Why threads over processes? Creating a new process can be expensive Time A call into the operating system
More informationPrinceton University Computer Science 217: Introduction to Programming Systems. Process Management
Princeton University Computer Science 217: Introduction to Programming Systems Process Management 1 Goals of this Lecture Help you learn about: Creating new processes Waiting for processes to terminate
More informationCSC209H Lecture 5. Dan Zingaro. February 4, 2015
CSC209H Lecture 5 Dan Zingaro February 4, 2015 Why Makefiles? (King 15.4) C programs can contain multiple.c files that can be separately compiled to object code Let s say that our program comprises addone.c,
More informationPiotr Mielecki Ph. D.
Piotr Mielecki Ph. D. http://mielecki.ristel.pl/ piotr.mielecki@pwr.edu.pl pmielecki@gmail.com Building blocks of client-server applications: Client, Server, Middleware. Simple client-server application:
More informationPROCESS MANAGEMENT. Operating Systems 2015 Spring by Euiseong Seo
PROCESS MANAGEMENT Operating Systems 2015 Spring by Euiseong Seo Today s Topics Process Concept Process Scheduling Operations on Processes Interprocess Communication Examples of IPC Systems Communication
More informationProcesses, Threads, SMP, and Microkernels
Processes, Threads, SMP, and Microkernels Slides are mainly taken from «Operating Systems: Internals and Design Principles, 6/E William Stallings (Chapter 4). Some materials and figures are obtained from
More informationToday: Process Management. The Big Picture So Far. What's in a Process? Example Process State in Memory
The Big Picture So Far Today: Process Management From the Architecture to the OS to the User: Architectural resources, OS management, and User Abstractions. A process as the unit of execution. Hardware
More informationProcesses. Today. Next Time. ! Process concept! Process model! Implementing processes! Multiprocessing once again. ! Scheduling processes
Processes Today! Process concept! Process model! Implementing processes! Multiprocessing once again Next Time! Scheduling processes The process model! Most computers can do more than one thing at a time
More informationCSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Final Exam Questions (document version 1.1) WITH SELECTED SOLUTIONS
CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Final Exam Questions (document version 1.1) WITH SELECTED SOLUTIONS Overview The final exam will be on Tuesday, May 17, 2016 from
More informationOperating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst
Operating Systems CMPSCI 377 Spring 2017 Mark Corner University of Massachusetts Amherst Clicker Question #1 Program == Process (A) True (B) False Answer on Next Slide The Big Picture So Far Hardware abstraction
More informationThe Big Picture So Far. Today: Process Management
The Big Picture So Far From the Architecture to the OS to the User: Architectural resources, OS management, and User Abstractions. Hardware abstraction Processor Memory I/O devices File System Distributed
More informationCS 33. Architecture and the OS. CS33 Intro to Computer Systems XIX 1 Copyright 2018 Thomas W. Doeppner. All rights reserved.
CS 33 Architecture and the OS CS33 Intro to Computer Systems XIX 1 Copyright 2018 Thomas W. Doeppner. All rights reserved. The Operating System My Program Mary s Program Bob s Program OS CS33 Intro to
More informationThis tutorial covers a foundational understanding of IPC. Each of the chapters contain related topics with simple and useful examples.
About the Tutorial Inter Process Communication (IPC) refers to a mechanism, where the operating systems allow various processes to communicate with each other. This involves synchronizing their actions
More informationDiscussion of Assignments 2. Line buffered vs. full buffered I/O. Some often encountered issues in the submissions.
3 4 Discussion of Assignment 1 Discussion of Assignments 1 and 2 Accompanying Tutorial to Operating Systems Course Alexander Holupirek, Stefan Klinger Database and Information Systems Group Department
More informationProcess a program in execution; process execution must progress in sequential fashion. Operating Systems
Process Concept An operating system executes a variety of programs: Batch system jobs Time-shared systems user programs or tasks 1 Textbook uses the terms job and process almost interchangeably Process
More informationMultiprocessors 2007/2008
Multiprocessors 2007/2008 Abstractions of parallel machines Johan Lukkien 1 Overview Problem context Abstraction Operating system support Language / middleware support 2 Parallel processing Scope: several
More informationUnix Processes 1 / 31
Unix Processes 1/31 A Unix Process Instance of a program in execution. OS loads the executable in main-memory (core) and starts execution by accessing the first command. Each process has a unique identifier,
More informationCSE 153 Design of Operating Systems Fall 2018
CSE 153 Design of Operating Systems Fall 2018 Lecture 4: Processes (2) Threads Process Creation: Unix In Unix, processes are created using fork() int fork() fork() Creates and initializes a new PCB Creates
More informationUnix-Linux 2. Unix is supposed to leave room in the process table for a superuser process that could be used to kill errant processes.
Unix-Linux 2 fork( ) system call is successful parent suspended child created fork( ) returns child pid to parent fork( ) returns zero value to child; zero is the pid of the swapper/scheduler process both
More informationIntroduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras
Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras Week 03 Lecture 12 Create, Execute, and Exit from a Process
More informationCreating Threads. Programming Details. COMP750 Distributed Systems
Creating Threads Programming Details COMP750 Distributed Systems Thread and Process Creation Processes can be created on Unix systems in C or C++ using the fork() function. Threads can be created in C
More informationEECE.4810/EECE.5730: Operating Systems Spring 2017 Homework 1 Solution Due 3:15 PM, Wednesday, 2/1/17
Spring 2017 Homework 1 Solution Due 3:15 PM, Wednesday, 2/1/17 1. (10 points) a. (3 points) Briefly describe the characteristics of zombie and orphan processes. Solution: A zombie process is a process
More informationPrinceton University. Computer Science 217: Introduction to Programming Systems. Process Management
Princeton University Computer Science 217: Introduction to Programming Systems Process Management 1 Goals of this Lecture Help you learn about: Creating new processes Waiting for processes to terminate
More informationProcess Management! Goals of this Lecture!
Process Management! 1 Goals of this Lecture! Help you learn about:" Creating new processes" Programmatically redirecting stdin, stdout, and stderr" (Appendix) communication between processes via pipes"
More informationCSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion:
CSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion: 10.2.2018-15.2.2018 Exercise 2-1: Reading Read sections 2.1 (except 2.1.7), 2.2.1 till 2.2.5. 1 Exercise 2-2 In Fig.1,
More informationPrinceton University Computer Science 217: Introduction to Programming Systems. Process Management
Princeton University Computer Science 217: Introduction to Programming Systems Process Management 1 Goals of this Lecture Help you learn about: Creating new processes Waiting for processes to terminate
More informationIntroduction to OS Processes in Unix, Linux, and Windows MOS 2.1 Mahmoud El-Gayyar
Introduction to OS Processes in Unix, Linux, and Windows MOS 2.1 Mahmoud El-Gayyar elgayyar@ci.suez.edu.eg Mahmoud El-Gayyar / Introduction to OS 1 Processes in Unix, Linux, and Windows Unix pre-empted
More informationPart II Processes and Threads Process Basics
Part II Processes and Threads Process Basics Fall 2017 Program testing can be used to show the presence of bugs, but never to show their absence 1 Edsger W. Dijkstra From Compilation to Execution A compiler
More informationKernel and processes
Kernel and processes Process management What Can a program create an instance of another? Wait for its completion? Stop/resume another program? Send asynchronous events? Where Everything on the kernel?
More information* What are the different states for a task in an OS?
* Kernel, Services, Libraries, Application: define the 4 terms, and their roles. The kernel is a computer program that manages input/output requests from software, and translates them into data processing
More informationCS 326: Operating Systems. Process Execution. Lecture 5
CS 326: Operating Systems Process Execution Lecture 5 Today s Schedule Process Creation Threads Limited Direct Execution Basic Scheduling 2/5/18 CS 326: Operating Systems 2 Today s Schedule Process Creation
More informationProcesses & Threads. (Chapter 3) CS 4410 Operating Systems. [R. Agarwal, L. Alvisi, A. Bracy, M. George, E. Sirer, R. Van Renesse]
Processes & Threads (Chapter 3) CS 4410 Operating Systems [R. Agarwal, L. Alvisi, A. Bracy, M. George, E. Sirer, R. Van Renesse] Processes! 2 What is a Program? Program is a file containing: executable
More informationINF1060: Introduction to Operating Systems and Data Communication. Pål Halvorsen. Wednesday, September 29, 2010
INF1060: Introduction to Operating Systems and Data Communication Pål Halvorsen Wednesday, September 29, 2010 Overview Processes primitives for creation and termination states context switches processes
More informationOperating Systemss and Multicore Programming (1DT089)
Operating Systemss and Multicore Programming (1DT089) Problem Set 1 - Tutorial January 2013 Uppsala University karl.marklund@it.uu.se pointers.c Programming with pointers The init() functions is similar
More informationCOSC243 Part 2: Operating Systems
COSC243 Part 2: Operating Systems Lecture 16: Threads and data sharing Zhiyi Huang Dept. of Computer Science, University of Otago Zhiyi Huang (Otago) COSC243 Lecture 16 1 / 24 Overview Last lecture: Hierarchical
More informationCPSC 341 OS & Networks. Processes. Dr. Yingwu Zhu
CPSC 341 OS & Networks Processes Dr. Yingwu Zhu Process Concept Process a program in execution What is not a process? -- program on a disk A process is an active object, but a program is just a file It
More informationCS370 Operating Systems
CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2017 Lecture a Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 FAQ? Notes: TA office hours on the web PA1
More informationProcesses. Johan Montelius KTH
Processes Johan Montelius KTH 2017 1 / 47 A process What is a process?... a computation a program i.e. a sequence of operations a set of data structures a set of registers means to interact with other
More informationComputer Science 330 Operating Systems Siena College Spring Lab 5: Unix Systems Programming Due: 4:00 PM, Wednesday, February 29, 2012
Computer Science 330 Operating Systems Siena College Spring 2012 Lab 5: Unix Systems Programming Due: 4:00 PM, Wednesday, February 29, 2012 Quote: UNIX system calls, reading about those can be about as
More informationCSci 4061 Introduction to Operating Systems. (Advanced Control Signals)
CSci 4061 Introduction to Operating Systems (Advanced Control Signals) What is a Signal? Signals are a form of asynchronous IPC Earlier: Non-blocking I/O and check if it has happened => polling Problem
More informationThe course that gives CMU its Zip! Concurrency I: Threads April 10, 2001
15-213 The course that gives CMU its Zip! Concurrency I: Threads April 10, 2001 Topics Thread concept Posix threads (Pthreads) interface Linux Pthreads implementation Concurrent execution Sharing data
More information