teaching operating systems with programming and freeware lecture 1: introduction, ipc and lab1 a...

Post on 21-Dec-2015

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Teaching Operating Systems With Programming and FreewareLecture 1: Introduction, IPC and Lab1

A workshop by

Dr. Junaid Ahmed ZubairiVisiting Associate Professor

CIT, Agriculture University, Rawalpindi

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Workshop Overview

Operating Systems Course Outline

Topics Suited for Programming Assignments

Process Model and IPC(Lab1)

Concurrency Issues (Lab2)

Processor Scheduling (Lab3)

Disk Scheduling and RAID

Programming Project

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Workshop References

Operating Systems Internals and Design Principles by William Stallings, 4th Edition Prentice Hall 2001Modern Operating Systems by Andrew Tanenbaum Linux Programmer’s Guide by S. Goldt, S. Meer, S. Burkett and M. Welsh March 1995

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Course Outline

A typical undergraduate operating systems course would include:Process and thread modelsConcurrency and deadlocksUni and multiprocessor schedulingRealtime systemsMemory managementDisk scheduling

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

The Need for Programming

Operating systems are software programsVarious algorithms and mechanisms are implemented in operating systems to manage the computerThe students will get a better understanding of the main concepts if they are given programming assignmentsSome institutions require the students to develop a full working operating system

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Topics Suited for Programming Assignments

Following topics are considered suitable for programming assignments

Process and thread models

Concurrency issues, semaphores

Deadlocks and resolution

Processor scheduling

Disk scheduling

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Requirements of anOperating System

Interleave the execution of several processes to maximize processor utilization while providing reasonable response time

Allocate resources to processes

Support interprocess communication and user creation of processes

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Process

Also called a task

Execution of an individual program

Can be traced

The diagram shows a currently active process. What will be the next process to execute?

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Two-State Process Model

Process may be in one of two statesRunningNot-running

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Not-Running Process in a Queue

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Process Creation

Submission of a batch job

User logs on

Created to provide a service such as printing

Process creates another process

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Process Termination

Batch job issues Halt instruction

User logs off

Quit an application

Error and fault conditions

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Processes

Not-running ready to execute

Blockedwaiting for I/O

Dispatcher cannot just select the process that has been in the queue the longest because it may be blocked

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

A Five-State Model

Running

Ready

Blocked

New

Exit

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Using Two Queues

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Suspended Processes

Processor is faster than I/O so all processes could be waiting for I/OSwap these processes to disk to free up more memoryBlocked state becomes suspend state when swapped to diskTwo new states Blocked, suspend Ready, suspend

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

One Suspend State

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Two Suspend States

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Reasons for Process Suspension

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Group Worksheet

Please complete the group worksheet 1 and hand it over in 15 minutes. A maximum of 3 members are allowed per group

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Process Creation

Assign a unique process identifierAllocate space for the processInitialize process control blockSet up appropriate linkagesEx: add new process to linked list used for

scheduling queue

Create of expand other data structuresEx: maintain an accounting file

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Execution of the Operating System

Non-process Kernel execute kernel outside of any process operating system code is executed as a separate

entity that operates in privileged mode

Execution Within User Processes operating system software within context of a user

process process executes in privileged mode when

executing operating system code

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX SVR4 Process Management

Most of the operating system executes within the environment of a user process

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX Process States

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Programming Assignment 1 Lab 1

In order to understand the processes in a better way, it is recommended that the participants become familiar with UNIX/Linux user interface and then write a program that uses fork command to start several processes. We will use a red hat linux server. Please login to workshop group accounts and change your passwords.

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX/Linux User Interface

UNIX/Linux user interface is simple and easy to use

Mostly the user logs in to the default “bash” shell

Use “ls –al” to list all directories and files

Use “ls –F” to see files and directories separately

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX/Linux User Interface

Use “cat filename” to see contents of a file

Use “more filename” to see a file longer than a page

Use “w”, “who”, and “finger” to see who else is logged on

Try “chfn”

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX Utility Programs

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Processes in UNIX

Process creation in UNIX.

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

POSIX Shell

A highly simplified shell

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

The Editor

“pico” is the best text mode editor available under LinuxPico allows you to start entering text after you reach the text insertion point using arrowsPico has some commands that can be given with control-key combinations, including the command to save and exit

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Practice Problem 1 Lab1

Using pico, type the source code given into your Linux accounts and save and exit

Using “gcc”, compile and run the program

(Example: gcc myforks.c –o myforks)

Comment on the output of the program

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Concurrent Process Creation Example

#include <stdlib.h>#include <stdio.h>int sum;main() {int i;

sum=0;fork();for (i=1; i<=5; i++) {printf(“the value of i is %d\n”,i);fflush(stdout);sum+=i;}printf(“the sum is %d\n”, sum);exit(0);}

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Explanation

When the program reaches the line with statement fork(), the system duplicates the process and allows both the original and duplicate processes to execute forward

The original process is called “parent” and the duplicate process is called “child”

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Parent-Child Identification

It is easy to identify the parent and the child. The value returned by fork() is examined. If it is zero, it is the child else it is the parent

Consider the same program with the identification of parent and child

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Parent-Child Identification#include <stdlib.h>#include <stdio.h>int sum;main() {int i;

sum=0;if (fork()) printf("This is parent\n");else printf("This is child\n");for (i=1; i<=5; i++) {printf(“the value of i is %d\n”,i);fflush(stdout);sum+=i;}printf(“the sum is %d\n”, sum);exit(0);}

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Programming Assignment 2 Lab 1

Rewrite the program so that the parent and the child do different activities and display different messages on the screen. For example, parent could run a loop to display all odd integers from 1 to 100 and the child could display all even integers from 1 to 100.

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Interprocess Communication Using Pipes

Processes communicate among themselves using messages, sockets and pipes

In this workshop, we will learn how to use UNIX pipes for interprocess communications

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Pipes

Two processes connected by a pipe

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

UNIX Pipes

The most common example is the use of pipes in shell commands. For example: “ls –al | grep cc | wc –l”

In this line, three commands are connected together using pipes.

Let us analyze this line and all commands one by one

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Pipes

“ls –al” command lists all the contents of the current directory“grep cc” searches for and outputs the lines in the result of the previous command that contain the search pattern cc“wc –l” counts the number of lines that have the search pattern ccThus pipes connect output of one command to the input of the next command

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Unnamed Pipes

The pipe that we used in shell command is the unnamed pipeWe can also create unnamed pipes in our C programs with:#include <unistd.h>int pipe(int fd[2]);Returns 2 file descriptors in the fd array.fd[0] is for readfd[1] is for writeReturns 0 on successful creation of pipe, 1 otherwise.

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Reading and Writing

When reading from a pipe, the unused end of the pipe (write end) is closed. if write end of the is still open and there is no data, read() will sleep until input become available. Please compile and execute the source code given using gcc (execute with ./filename)

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Example of Unnamed Pipe

#include <stdio.h>#define READ 0/* The index of the “read” end of the pipe */#define WRITE 1 /* The index of the “write” end of the pipe */char * phrase = “Stuff this in your pipe and smoke it”;main (){ int fd[2], bytesRead;char message [100]; /* Parent process’s message buffer */pipe ( fd ); /*Create an unnamed pipe*/if ( fork () == 0 ) /* Child is the Writer */{

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Example Code Continued

close (fd[READ]); /* Close unused end*/write (fd[WRITE], phrase, strlen ( phrase) +1); close (fd[WRITE]); /* Close used end*/} else /* Parent is the Reader */{ close (fd[WRITE]); /* Close unused end*/ bytesRead = read ( fd[READ], message, 100);printf ( “Read %d bytes: %s\n”, bytesRead, message);close ( fd[READ]); /* Close used end */} }

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

IPC Using Named Pipes

Named pipes are created as special files. They are also called FIFO (First-in First-out)Named pipes can be created from the shell with (for example)“mknod myfifo p”This command results in the creation of a named pipe called myfifo with a file type p (try it out)

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Named Pipes

Named pipes can be created within programs by using a command:mknod ( “mypipe”, SIFIFO, 0 );Once a named pipe is created, processes can open(), read() and write() them just like any other file.There is a difference however from normal files

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Named Pipes

opens for reading will block until a process opens it for writing.opens for writing will block until a process opens it for reading.Thus the IPC can be achieved in a smooth way using named pipesCompile and run next two programs to get a feel for how the named pipes operate. It is assumed that a named pipe “mypipe” already exists

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Named Pipe Example: Writer

#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>char * phrase = “Stuff this in your pipe and smoke it”;int main (){ int fd1; fd1 = open ( “mypipe”, O_WRONLY ); write (fd1, phrase, strlen ( phrase)+1 ); close (fd1);}

Operating Systems Workshop CIT, Arid Agriculture University Aug 2002

Named Pipe Reader

Reader#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main (){ int fd1;char buf [100]; fd1 = open ( “mypipe”, O_RDONLY ); read ( fd1, buf, 100 ); printf ( “%s\n”, buf ); close (fd1);}

top related