Download presentation
Presentation is loading. Please wait.
Published byElmer Kennedy Modified over 7 years ago
1
Florida State UniversityCOP5570 – Advanced Unix Programming Today’s topics System V Interprocess communication (IPC) mechanisms –Message Queues –Semaphores –Shared Memory Summary of processes related concepts
2
Florida State UniversityCOP5570 – Advanced Unix Programming Why other IPC mechanisms File: slow Pipes/sockets FIFO semantics Signals: sending flags (small) Sometimes, we want something beyond FIFO FIFO with tags (message queue) File semantics using memory: the content is always there unless it is modified explicitly. (shared memory) Once concurrency is allowed in shared data, we will need a way to protect (lock) the data. (semaphore) Notice that all of these mechanisms are more or less difficult to accomplish. Why? It is by design!
3
Florida State University Message queues What are they? –Similar to the FIFO pipes, except that a tag (type) is matched when reading/writing. Allowing cutting in line (I am only interested in a particular type of message) Equivalent to merging of multiple FIFO pipes in one. COP5570 – Advanced Unix Programming
4
Florida State University Message queues Creating a message queue and getting a message queue id: –int msgget(key_t key, int msgflag); –Key can be any large number. But to avoiding using conflicting keys in different programs, use ftok() (the key master). key_t ftok(const char *path, int id); –Path point to a file that the process can stat –id: project ID, only the last 8 bits are used COP5570 – Advanced Unix Programming
5
Florida State UniversityCOP5570 – Advanced Unix Programming Message queue. –A linked list of messages stored within the kernel and identified by a message queue identifier. –Different processes can use the same key to post and retrieve messages Every message has a type field, and a nonnegative length, and the actual data bytes. Msgsnd puts a message at the end of the queue Msgrcv gets a message, may not follow FIFO order (can be based on type) Has resource limits: MSGMAX, MSGMNB, etc
6
Florida State UniversityCOP5570 – Advanced Unix Programming Message queue operations int msgget(key_t key, int flag) int msgctl(int msgid, int cmd, struct msgid_ds *buf) int msgsnd(int msgid, const void *ptr, size nbytes, int flag); int msgrcv(int msgid, void *ptr, size_t nbytes, long type, int flag); Used to have performance advantage over pipe: –no longer true for newer systems
7
Florida State UniversityCOP5570 – Advanced Unix Programming Shared Memory Common chunk of read/write memory among processes Proc. 1 Proc. 2 ptr Attach Proc. 3 Proc. 4Proc. 5 ptr Attach Create Shared Memory (unique key) 0 MAX
8
Florida State UniversityCOP5570 – Advanced Unix Programming Creating Shared Memory and getting shared memory id int shmget(key_t key, size_t size, int shmflg); Example: key_t key; int shmid; key = ftok(“ ", ‘A'); shmid = shmget(key, 1024, 0644 | IPC_CREAT); Here’s an example: shm_create.c.. The share memory is permanent once created. It must be explicitly removed!
9
Florida State UniversityCOP5570 – Advanced Unix Programming Attach and Detach Shared Memory void *shmat(int shmid, void *shmaddr, int shmflg); int shmdt(void *shmaddr); Example: key_t key; int shmid; char *data; key = ftok(" ", ‘A'); shmid = shmget(key, 1024, 0644); data = shmat(shmid, (void *)0, 0); shmdt(data); Here’s an shm_attach.c
10
Florida State UniversityCOP5570 – Advanced Unix Programming Deleting Shared Memory int shmctl(int shmid, int cmd, struct shmid_ds *buf); shmctl(shmid, IPC_RMID, NULL); Example: Shm_delete.c
11
Florida State UniversityCOP5570 – Advanced Unix Programming Command-line IPC control ipcs –Lists all IPC objects owned by the user ipcrm –Removes specific IPC object
12
Florida State UniversityCOP5570 – Advanced Unix Programming Semaphores Managing concurrent access to shared memory segment. Using Semaphores –Creation: semget( … ) –Incr/Decr/Test-and-set : semop(…) –Deletion: semctl(semid, 0, IPC_RMID, 0);
13
Florida State University Process environment –Command line arguments: argc, argv –environ and getenv() –getpid(), getuid(), getppid() –How does a program access the second (command line) argument? –How does a process access the variable you set in shell using commands such as “setenv TERM vt100”? –How does a process know its parent’s process id? How does a parent know its children’s process ids?
14
Florida State University Process management –fork, exit, wait, waitpid, execv –How can a parent process know whether its child has executed successfully? –How to determine whether execv runs a command successfully?
15
Florida State University File operations: –What are the related data structures for file operations? –open, close, read write, unlink, dup. –How to redirect the standard input/output/error?
16
Florida State University Inter-process communication: –File –Pipe –What kind of processes can communicate with pipes? –How to implement “ps | grep xyuan | more”? –Message queue –Shared memory –semaphore
17
Florida State University Inter-process communication: –Signal –What is the typical default action for a signal? –Blocking/unblocking a signal sigset manipulation –sigfillset, sigemptyset, sigaddset, sigdelset, sigismember the sigprocmask system call –Install signal handler (can ignore a signal or use default handler) signal sigaction –Sending signal: kill, alarm
18
Florida State University Terminal I/O –canonical mode –noncanonical mode tcgetattr, tcsetattr termios data structure
19
Florida State University Process group/session/control terminal –Related to job control Who gets to access the keyboard? Who to send signal generated from the keyboard. –Foreground and background processes –Joining a group or creating a group: setpgid –Making a group foreground or background tcgetpgrp/tcsetpgrp
20
Florida State University Realizing shell/make commands IO redirection Pipes Background execution “arrow” functions ‘cd’ command –Why is this command different from other commands? PATH environment variable. COP5570 – Advanced Unix Programming
Similar presentations
© 2023 SlidePlayer.com Inc.
All rights reserved.