JavaScript is required to for searching.
跳过导航链接
退出打印视图
编程接口指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  内存和 CPU 管理

2.  用于 Solaris Cluster 的远程共享内存 API

3.  会话描述协议 API

4.  进程调度程序

5.  地址组 API

6.  输入/输出接口

7.  进程间通信

8.  套接字接口

9.  使用 XTI 和 TLI 编程

10.  包过滤钩子

11.  传输选择和名称到地址映射

12.  实时编程和管理

实时应用程序的基本规则

延长响应时间的因素

同步 I/O 调用

中断服务

共享库

优先级倒置

粘滞锁

失控实时进程

异步 I/O 行为

实时文件

实时调度程序

分发延迟

调度类

分发队列

分发进程

进程抢占

内核优先级倒置

用户优先级倒置

控制调度的接口调用

使用 priocntl

其他接口调用

控制调度的实用程序

priocntl(1)

dispadmin(1M)

配置调度

分发程序参数表

重新配置 config_rt_dptbl

内存锁定

锁定页面

解除页面锁定

锁定所有页面

恢复粘滞锁

高性能 I/O

POSIX 异步 I/O

Solaris 异步 I/O

通知 (SIGIO)

使用 aioread

使用 aiowrite

使用 aiocancel

使用 aiowait

使用 poll()

使用 poll 驱动程序

使用 close

同步的 I/O

同步模式

同步文件

进程间通信

处理信号

管道、命名管道和消息队列

使用信号量

共享内存

异步网络通信

联网模式

计时功能

时间戳接口

间隔计时器接口

13.  Solaris ABI 和 ABI 工具

A.  UNIX 域套接字

索引

进程间通信

本节介绍 SunOS 中作为与实时处理相关的接口的进程间通信 (Interprocess Communication, IPC) 接口。信号、管道、FIFO、消息队列、共享内存、文件映射和信号量都将在此处介绍。有关对进程间通信有用的库、接口和例程的更多信息,请参见第 7 章

处理信号

发送者可以使用 sigqueue(3RT) 将信号与少量信息一起发送至目标进程。

要将待处理信号的后续出现排入队列,目标进程必须为指定的信号设置 SA_SIGINFO 位。请参见 sigaction(2) 手册页。

目标进程通常异步接收信号。要同步接收信号,请阻塞信号并调用 sigwaitinfo(3RT)sigtimedwait(3RT)。请参见 sigprocmask(2) 手册页。此过程会导致同步接收信号。sigqueue(3RT) 的调用者发送的值存储在 siginfo_t 参数的 si_value 成员中。使信号保持解除阻塞状态会导致将信号传送至 sigaction(2) 指定的信号处理程序,并在该处理程序的 siginfo_t 参数的 si_value 中显示值。

具有关联值的指定数量的信号可以通过进程发送,也可以保持不传送。{SIGQUEUE_MAX} 信号的存储在首次调用 sigqueue(3RT) 时分配。随后,sigqueue(3RT) 的调用要么成功排入目标进程的队列,要么在限制的时间内失败。

管道、命名管道和消息队列

管道、命名管道和消息队列的行为类似于字符 I/O 设备。这些接口具有不同的连接方法。有关管道的更多信息,请参见进程之间的管道。有关命名管道的更多信息,请参见命名管道。有关消息队列的更多信息,请参见System V 消息POSIX 消息

使用信号量

信号量还以 System V 和 POSIX 形式提供。有关更多信息,请参见System V 信号量POSIX 信号量

请注意,使用信号量可能会导致优先级倒置,除非通过本章前面所述的技术明确避免优先级倒置。

共享内存

进程通信的最快方式是直接通过共享内存段。当超过两个进程尝试同时读取和写入共享内存时,内存内容可能变得不准确。这种潜在的不准确性是使用共享内存的主要困难。