Download presentation
Presentation is loading. Please wait.
1
Teaching Operating Systems With Programming and Freeware Lecture 1: Introduction, IPC and Lab1 A workshop by Dr. Junaid Ahmed Zubairi Visiting Associate Professor CIT, Agriculture University, Rawalpindi
2
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
3
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Workshop References Operating Systems Internals and Design Principles by William Stallings, 4 th Edition Prentice Hall 2001 Modern Operating Systems by Andrew Tanenbaum Linux Programmer’s Guide by S. Goldt, S. Meer, S. Burkett and M. Welsh March 1995
4
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Course Outline A typical undergraduate operating systems course would include: Process and thread models Concurrency and deadlocks Uni and multiprocessor scheduling Realtime systems Memory management Disk scheduling
5
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 The Need for Programming Operating systems are software programs Various algorithms and mechanisms are implemented in operating systems to manage the computer The students will get a better understanding of the main concepts if they are given programming assignments Some institutions require the students to develop a full working operating system
6
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
7
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Requirements of an Operating 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
8
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?
10
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Two-State Process Model Process may be in one of two states Running Not-running
11
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Not-Running Process in a Queue
12
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
13
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
14
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Processes Not-running ready to execute Blocked waiting for I/O Dispatcher cannot just select the process that has been in the queue the longest because it may be blocked
15
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 A Five-State Model Running Ready Blocked New Exit
17
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Using Two Queues
19
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/O Swap these processes to disk to free up more memory Blocked state becomes suspend state when swapped to disk Two new states Blocked, suspend Ready, suspend
20
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 One Suspend State
21
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Two Suspend States
22
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Reasons for Process Suspension
23
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
25
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Process Creation Assign a unique process identifier Allocate space for the process Initialize process control block Set up appropriate linkages Ex: add new process to linked list used for scheduling queue Create of expand other data structures Ex: maintain an accounting file
26
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
27
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
28
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 UNIX Process States
30
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.
31
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
32
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”
33
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 UNIX Utility Programs
34
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Processes in UNIX Process creation in UNIX.
35
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 POSIX Shell A highly simplified shell
36
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 The Editor “pico” is the best text mode editor available under Linux Pico allows you to start entering text after you reach the text insertion point using arrows Pico has some commands that can be given with control-key combinations, including the command to save and exit
37
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
38
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Concurrent Process Creation Example #include 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); }
39
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”
40
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
41
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Parent-Child Identification #include 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); }
42
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.
43
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
44
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Pipes Two processes connected by a pipe
45
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
46
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 cc Thus pipes connect output of one command to the input of the next command
47
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Unnamed Pipes The pipe that we used in shell command is the unnamed pipe We can also create unnamed pipes in our C programs with: #include int pipe(int fd[2]); Returns 2 file descriptors in the fd array. fd[0] is for read fd[1] is for write Returns 0 on successful creation of pipe, 1 otherwise.
48
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)
49
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Example of Unnamed Pipe #include #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 */ {
50
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 */ }
51
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)
52
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
53
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 pipes Compile 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
54
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Named Pipe Example: Writer #include 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); }
55
Operating Systems Workshop CIT, Arid Agriculture University Aug 2002 Named Pipe Reader Reader #include int main () { int fd1; char buf [100]; fd1 = open ( “mypipe”, O_RDONLY ); read ( fd1, buf, 100 ); printf ( “%s\n”, buf ); close (fd1); }
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.