Example IPC Systems and Libraries Hui Chen Department of Computer & Information Science CUNY Brooklyn College

Example IPC Systems and Libraries Hui Chen Department of Computer & Information Science CUNY Brooklyn College

CISC 3320 MW3 Example IPC Systems and Libraries Hui Chen Department of Computer & Information Science CUNY Brooklyn College 9/23/2019 CUNY | Brooklyn College 1 Acknowledgement • These slides are a revision of the slides by the authors of the textbook 9/23/2019 CUNY | Brooklyn College 2 Outline • Examples of IPC Systems • Shared memory (POSIX, Windows) • Mailboxes/Ports (POSIX message queue, Windows mailslot) • Pipes (POSIX, Windows; named and ordinary/anonymous) • Windows advanced local procedure call (Your reading) • Mach message passing (Your reading) • Communication in Client-Server Systems 9/23/2019 CUNY | Brooklyn College 3 POSIX Shared Memory • Create or open an existing shared memory segment • System call shm_open() • Process first creates shared memory segment, e.g., shm_fd = shm_open(name, O CREAT | O RDWR, 0666); • Also used to open an existing segment • Set the size of the segment, e.g., • ftruncate(shm_fd, 4096); • Map the shared memory segment to cooperating processes’ address space • Use mmap() to memory-map a file pointer to the shared memory object • Reading and writing to shared memory is done by using the pointer returned by mmap(). 9/23/2019 CUNY | Brooklyn College 4 Windows Shared Memory • Create a shared memory segment • API CreateFileMapping(INVALID_HANDLE_VALUE, ...) • Open an existing shared memory segment • API OpenFileMapping() • Map the shared memory segment to cooperating processes’ address space • Use MapViewOfFile() to memory-map a file pointer to the shared memory object • Reading and writing to shared memory is done by using the pointer returned by MapViewOfFile(). 9/23/2019 CUNY | Brooklyn College 5 Shared Memory • Example programs • POSIX (using Linux) • Windows 9/23/2019 CUNY | Brooklyn College 6 Questions? • POSIX shared memory • Windows shared memory • Essential system calls and APIs • Example programs • Don’t forget to do clean-up! 9/23/2019 CUNY | Brooklyn College 7 Mailbox/Port: POSIX Message Queue • Essential system calls • mq_open • mq_send • mq_receive • mq_close • mq_unlink 9/23/2019 CUNY | Brooklyn College 8 Mailbox/Port: Windows Mailslots • Create mailslot • CreateFile • Mailslot name must be a “mailslot”, e.g., • \\.\mailslot\mymailslot • Write to mailslot • WriteFile • Read from mailslot • ReadFile 9/23/2019 CUNY | Brooklyn College 9 Mailboxes • Example programs • POSIX (using Linux) • Windows 9/23/2019 CUNY | Brooklyn College 10 Questions • POSIX message queue • Windows mailslot • Essential system calls and APIs • Example programs • Don’t forget to do clean-up! 9/23/2019 CUNY | Brooklyn College 11 Pipes • Acts as a conduit allowing two processes to communicate • The communication pattern follows message passing • But, pipes may be implemented using shared memory 9/23/2019 CUNY | Brooklyn College 12 Pipes: Design Issues • Issues: • Is communication unidirectional or bidirectional? • In the case of two-way communication, is it half or full- duplex? • Must there exist a relationship (i.e., parent-child) between the communicating processes? • Can the pipes be used over a network? • Ordinary pipes – cannot be accessed from outside the process that created it. Typically, a parent process creates a pipe and uses it to communicate with a child process that it created. • Named pipes – can be accessed without a parent- child relationship 9/23/2019 CUNY | Brooklyn College 13 Ordinary Pipes • Ordinary Pipes allow communication in standard producer-consumer style: unidirectional • Producer writes to one end (the write-end of the pipe) • Consumer reads from the other end (the read- end of the pipe) • Ordinary pipes are therefore unidirectional • Require parent-child relationship between communicating processes • Windows calls these anonymous pipes 9/23/2019 CUNY | Brooklyn College 14 POSIX Ordinary Pipes • Relies on processes’ parent-child relationship via the fork system call • The pipe system call creates a pipe, e.g., fd[0], fd[1] • Read end: fd[0] • Write end: fd[1] 9/23/2019 CUNY | Brooklyn College 15 Ordinary Pipes: Parent-Child relationship • To use the pipe in two processes, fork a child process, resulting in a two unidirectional communication links 9/23/2019 CUNY | Brooklyn College 16 Ordinary Pipe: Example Applications 9/23/2019 CUNY | Brooklyn College 17 Windows Ordinary Pipes • Called anonymous pipes • Similar to UNIX, an anonymous pipe on Windows is unidirectional, and emply parent-child relationship • Example application 9/23/2019 CUNY | Brooklyn College 18 Questions? • Concept of pipes • Ordinary pipes • POSIX ordinary pipes • Windows anonymous pipes 9/23/2019 CUNY | Brooklyn College 19 Named Pipes • Named Pipes are more powerful than ordinary pipes • Communication is bidirectional • No parent-child relationship is necessary between the communicating processes • Several processes can use the named pipe for communication • Provided on both UNIX and Windows systems 9/23/2019 CUNY | Brooklyn College 20 UNIX Named Pipes: Example Program • Called “fifo”, See example programs 9/23/2019 CUNY | Brooklyn College 21 Questions? • Concept of pipes • Ordinary pipes • Named pipes • Example programs 9/23/2019 CUNY | Brooklyn College 22 Mach Message Passing • Mach communication is message based • Even system calls are messages • Each task gets two ports at creation - Kernel and Notify • Messages are sent and received using the mach_msg()function • Ports needed for communication, created via mach_port_allocate() • Send and receive are flexible, for example four options if mailbox full: • Wait indefinitely • Wait at most n milliseconds • Return immediately • Temporarily cache a message 9/23/2019 CUNY | Brooklyn College 23 Windows IPC • Message-passing centric via advanced local procedure call (LPC) facility • Only works between processes on the same system • Uses ports (like mailboxes) to establish and maintain communication channels • Communication works as follows: • The client opens a handle to the subsystem’s connection port object. • The client sends a connection request. • The server creates two private communication ports and returns the handle to one of them to the client. • The client and server use the corresponding port handle to send messages or callbacks and to listen for replies. 9/23/2019 CUNY | Brooklyn College 24 Local Procedure Call (LPC) 9/23/2019 CUNY | Brooklyn College 25 Questions? • Mach message passing • Windows ALPC 9/23/2019 CUNY | Brooklyn College 26.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    26 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