Operating Systems Lecture 06 System Calls (Exec, Open, Read, Write)

Operating Systems Lecture 06 System Calls (Exec, Open, Read, Write)

Operating Systems Lecture 06 System Calls (Exec, Open, Read, Write) Inter-process Communication in Unix/Linux (PIPE), Use of PIPE on command line March 04, 2013 exec() • Typically the exec system call is used after a fork system call by one of the two processes to replace the process’ memory space with a new executable program. • The new process image is constructed from an ordinary, executable file. exec() • There can be no return from a successful exec because the calling process image is overlaid by the new process image Synopsis of exec() #include <unistd.h> int execlp (const char *file, const char *arg0, ..., const char *argn, (char *)0); Sample Code—fork and exec #include <stdio.h> void main() { int pid, status; pid = fork(); if(pid == -1) { printf(“fork failed\n”); exit(1); } Sample Code—fork and exec if(pid == 0) { /* Child */ if (execlp(“/bin/ls”, “ls”, NULL)< 0) { printf(“exec failed\n”); exit(1); } } else { /* Parent */ wait(&status); printf(“Well done kid!\n”); exit(0); } } Semantics of fork parent parent parent P P P fork P P ls ls exec child child child Cooperating Processes • Independent process cannot affect or be affected by the execution of another process. • Cooperating process can affect or be affected by the execution of another process Cooperating Processes • Advantages of process cooperation • Information sharing • Computation speed-up • Modularity • Convenience 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 Bounded-Buffer Problem Empty Pool ProducerProducer ConsumerConsumer Full Pool Interprocess Communication (IPC) • Mechanism for processes to communicate and to synchronize their actions. • Message system – processes communicate with each other without resorting to shared variables. Interprocess Communication (IPC) • IPC facility provides two operations: • Send (message) – message size fixed or variable • Receive (message) Interprocess Communication (IPC) • If P and Q wish to communicate, they need to: • establish a communication link between them • exchange messages via send/receive Interprocess Communication (IPC) • Implementation of communication link • physical (e.g., shared memory, hardware bus) • logical (e.g., logical properties) Implementation Questions • How are links established? • Can a link be associated with more than two processes? • How many links can be there between every pair of communicating processes? Implementation Questions • What is the capacity of a link? • Is the size of a message that the link can accommodate fixed or variable? • Is a link unidirectional or bi-directional? 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 Direct Communication • Properties of communication link • Links are established automatically. • A link is associated with exactly one pair of communicating processes. • Between each pair there exists exactly one link. • The link may be unidirectional, but is usually bi- directional. Indirect Communication • Messages are directed and received from mailboxes (also referred to as ports). • Each mailbox has a unique id. • Processes can communicate only if they share a mailbox. Indirect Communication … • 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. • Link may be unidirectional or bi-directional. Indirect Communication … • Operations • create a new mailbox • send and receive messages through mailbox • destroy a mailbox • Primitives are defined as: send (A, message) receive (A, message) Indirect Communication … Mailbox sharing • P1, P2, and P3 share mailbox A. • P1, sends; P2 and P3 receive. • Who gets the message? Indirect Communication … Solutions • Allow a link to be associated with at most two processes. • Allow only one process at a time to execute a receive operation. • Allow the system to select arbitrarily the receiver. Sender is notified who the receiver was. Synchronization • Message passing may be either blocking or non- blocking. •Blockingis considered synchronous •Non-blockingis considered asynchronous •sendand receive primitives may be either blocking or non-blocking. Buffering • Queue of messages attached to the link; implemented in one of three ways. Zero capacity – No messages Sender must wait for receiver Bounded capacity – n messages Sender must wait if link full. Unbounded capacity – infinite length Sender never waits. File Descriptors in UNIX/Linux • An integer returned by open() system call • Used as an index in the per process file descriptor table (PPFDT) • Used in read, write, and close calls File Descriptors in UNIX/Linux • Size of PPFDT is equal to the number of files that a process can open simultaneously (OPEN_MAX in Linux—see <linux/limits.h> • Used as an index in the per process file descriptor table (PPFDT) • Used in read, write, and close calls UNIX/Linux IPC Tools • Pipe: For communication between related processes on a system P1 P2 Pipe UNIX/Linux System UNIX/Linux IPC Tools • Named pipe (FIFO): For communication between related or unrelated processes on a system P1 P2 FIFO UNIX/Linux System UNIX/Linux IPC Tools • Socket: For communication between related or unrelated processes on the same or different systems P1 P2 Network Connection Socket Socket Computer Computer 1 2 UNIX/Linux Pipe • Important system calls open, read, write, close, pipe • open: Open or create a file • read: Read from a pipe • write: Write data to a pipe • close: Close/destroy a pipe • pipe: Create a pipe for IPC open System Call #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open (const char *path, int oflag, /* mode_t mode */ ...); • ‘oflag’ specifies purpose of opening the file and ‘mode’ specifies permission on the file if it is to be created. open System Call • Returns a file descriptor on success and –1 on failure • Can specify that read and write will be blocking or non-blocking • ‘oflag’ value is constructed by ORing various flags: O_RDONLY, O_WRONLY, O_RDWR, O_NDELAY (or O_NONBLOCK), O_APPEND, O_CREAT, etc. open System Call • Call fails • Non-existent file • Operation specified is not allowed due to file permissions • Search not allowed on a component of pathname • User’s disk quota on the file system has been exhausted open System Call • Call fails • No write permission on the directory in which the file is being created • Signal was caught during open • Process has reached the limit of maximum open files • System limit reached on maximum number of simultaneous open files read System Call #include <sys/types.h> #include <sys/uio.h> #include <unistd.h> ssize_t read(int fildes, void *buf, size_t nbyte); • Returns number of bytes read or -1 • Call fails and errno set accordingly • Invalid ‘fildes’, ‘buf’, or ‘nbyte’ • Signal caught during read write System Call #include <sys/types.h> #include <unistd.h> ssize_t write (int fildes, const void *buf, size_t nbyte); • Returns the number of bytes written or -1 write System Call • Call fails • Invalid argument • File size limit for process or for system would exceed • Disk is full File Descriptors in UNIX/Linux • An integer returned by open() system call • Used as an index in the per process file descriptor table (PPFDT) • Used in read, write, and close calls File Descriptors in UNIX/Linux • Size of PPFDT is equal to the number of files that a process can open simultaneously (OPEN_MAX in Linux—see <linux/limits.h> File Descriptor to File Contents Per Process File File Descriptor Table File Inode Descriptor Table Table 0 1 File’s 2 contents 3 … 4 … … … … OPEN_MAX — 1 Questions..??.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    43 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us