| United States-English |
|
|
|
![]() |
Release Notes for HP-UX 11.0: HP 9000 Computers > Chapter 8 Commands and LibrariesPOSIX 1003.1B |
|
New in 11.0. Asynchronous Input/Output allows a process (thread) to start multiple simultaneous read and/or write operations to multiple files, wait for or obtain notification of completion of requested operations, and to retrieve the status of completed operations. The purpose of the POSIX Asynchronous I/O facility is to allow a process (thread) to overlap some elements of computation and information processing with I/O processing. The POSIX Asynchronous I/O facility includes the following interface functions:
The Asynchronous I/O Control Block is used as a parameter to all of the asynchronous I/O functions. The aiocb specifies parameters for an asynchronous I/O operation in a call to aio_read() , aio_write() , or lio_listio() and then may be used as a "handle" for the enqueued asynchronous I/O operation in a subsequent call to aio_cancel(), aio_suspend(), aio_fsync(), aio_error(), or aio_return() . The aiocb structure is defined in sys/aio.h This is a new functionality that is being introduced in 11.0. The following is the list of manpages for the POSIX Asynchronous I/O system-calls:
This new interprocess communication mechanism provides a message passing facility as defined by the POSIX 1003.1B Standard. Although it is not intended to replace the existing System-V message passing sub-system, the new mechanism is specifically designed to meet the requirements of real-time processes. Its `send' and `receive' operations are optimized for high performance. It also includes a notification mechanism based on real-time signals. Eight new system-calls have been introduced to support this interface. The new calls are: mq_open, mq_close, mq_unlink, mq_notify, mq_send, mq_receive, mq_setattr and mq_getattr. This is a new functionality that is being introduced in 11.0. The following is the list of manpages for the POSIX Message Passing system-calls:
A "shared memory object" is a memory object (like a file), that can be concurrently mapped into the address space of one or more processes. The mmap() and munmap() functions allow a process to manipulate its address space by mapping such memory objects into it and removing them from it. When multiple processes map the same memory object, they can share access to the underlying data. Shared memory objects have been introduced in the POSIX 1003.1B Real Time Extension Specification. This will allow systems (eg. embedded systems) which don't implement a full file system, to still be able to use memory objects which can be mapped into the address space of processes. In our implementation, we use the underlying file system, to implement shared memory objects. Two new system-calls have been added to supported shared memory objects. They are: The shm_open() system-call, establishes a connection between a shared memory object and a file descriptor. This file descriptor is then used for other operations on the shared memory objects (such as mmap(), close(), etc.). The file descriptors returned by shm_open(), don't remain open across exec*() calls. The shm_unlink() system-call, removes the name of the specified shared memory object. The object itself is not destroyed, until all open and mapped references to it have been closed. This is a new functionality that is being introduced in 11.0. The following is the list of man-pages for the POSIX Shared Memory Objects system-calls:
This new memory locking mechanism provides per-page memory locking and unlocking facilities as defined by the POSIX 1003.1B Standard. POSIX defines several new functions to enable users to lock/unlock pages in memory. A privileged user wishing to lock a section of memory must invoke the mlock() or mlockall() system call. The mlock() routine, given an address and length, will ensure that all the user pages which encompass this address range are made memory resident and locked. The mlockall() system call locks all of the user's memory. Unlocking memory can be accomplished with an equivalent pair of functions - munlock() and munlockall(). The munlock() routine, given an address and length, unlocks all the user pages in the address range. The munlockall() system call unlocks all of the user's memory. Although HP-UX has long supported the plock() interface, which does a similar function, there is a fundamental difference - plock() only supports locking at the segment level. The POSIX memory locking routines, on the other hand, support locking at the page level. A single page can be locked or unlocked. This is a new functionality that is being introduced in 11.0. The following is the list of manpages for the POSIX Memory Locking system calls:
The POSIX Memory locking functions provided here are in addition to the existing plock() interface. A process should use either the POSIX memory locking interface or the plock() interface but not attempt to mix them. No direct performance impact. By locking down pages in memory, these pages will benefit from not needing to be paged in, but there will be less memory for other processes to use, possibly requiring additional paging for them, affecting overall system performance. If a program is currently using the plock() interface, and it is not worthwhile to rewrite the program, the plock() interface can still be used for memory locking, but it is not the POSIX compliant method of memory locking, and it provides a locking resolution of the entire segment and not a single page. (Similar performance issues exist with the plock() interface, as well.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||