全方位剖析 Linux 操作系统,太全了( 六 )


  • SIGSTOP
SIGSTOP 指示操作系统终止以便以后进行恢复时
  • SIGSYS
当 SIGSYS 信号将错误参数传递给系统调用时,该信号将发送到进程 。
  • SYSTERM
我们上面简单提到过了 SYSTERM 这个名词,这个信号发送给进程以请求终止 。与 SIGKILL 信号不同,该信号可以被过程捕获或忽略 。这允许进程执行良好的终止,从而释放资源并在适当时保存状态 。SIGINT 与SIGTERM 几乎相同 。
  • SIGTSIP
SIGTSTP 信号由其控制终端发送到进程,以请求终端停止 。
  • SIGTTIN 和 SIGTTOU
当 SIGTTIN 和SIGTTOU 信号分别在后台尝试从 tty 读取或写入时,信号将发送到该进程 。
  • SIGTRAP
在发生异常或者 trap 时,将 SIGTRAP 信号发送到进程
  • SIGURG
当套接字具有可读取的紧急或带外数据时,将 SIGURG 信号发送到进程 。
  • SIGUSR1 和 SIGUSR2
SIGUSR1 和 SIGUSR2 信号被发送到进程以指示用户定义的条件 。
  • SIGXCPU
当 SIGXCPU 信号耗尽 CPU 的时间超过某个用户可设置的预定值时,将其发送到进程
  • SIGXFSZ
当 SIGXFSZ 信号增长超过最大允许大小的文件时,该信号将发送到该进程 。
  • SIGWINCH
SIGWINCH 信号在其控制终端更改其大小(窗口更改)时发送给进程 。
管道 pipeLinux 系统中的进程可以通过建立管道 pipe 进行通信 。
在两个进程之间,可以建立一个通道,一个进程向这个通道里写入字节流,另一个进程从这个管道中读取字节流 。管道是同步的,当进程尝试从空管道读取数据时,该进程会被阻塞,直到有可用数据为止 。shell 中的管线 pipelines 就是用管道实现的,当 shell 发现输出
sort <f | head它会创建两个进程,一个是 sort,一个是 head,sort,会在这两个应用程序之间建立一个管道使得 sort 进程的标准输出作为 head 程序的标准输入 。sort 进程产生的输出就不用写到文件中了,如果管道满了系统会停止 sort 以等待 head 读出数据
全方位剖析 Linux 操作系统,太全了

文章插图
 
管道实际上就是 |,两个应用程序不知道有管道的存在,一切都是由 shell 管理和控制的 。
共享内存 shared memory两个进程之间还可以通过共享内存进行进程间通信,其中两个或者多个进程可以访问公共内存空间 。两个进程的共享工作是通过共享内存完成的,一个进程所作的修改可以对另一个进程可见(很像线程间的通信) 。
全方位剖析 Linux 操作系统,太全了

文章插图
 
在使用共享内存前,需要经过一系列的调用流程,流程如下
  • 创建共享内存段或者使用已创建的共享内存段(shmget())
  • 将进程附加到已经创建的内存段中(shmat())
  • 从已连接的共享内存段分离进程(shmdt())
  • 对共享内存段执行控制操作(shmctl())
先入先出队列 FIFO先入先出队列 FIFO 通常被称为 命名管道(Named Pipes),命名管道的工作方式与常规管道非常相似,但是确实有一些明显的区别 。未命名的管道没有备份文件:操作系统负责维护内存中的缓冲区,用来将字节从写入器传输到读取器 。一旦写入或者输出终止的话,缓冲区将被回收,传输的数据会丢失 。相比之下,命名管道具有支持文件和独特 API,命名管道在文件系统中作为设备的专用文件存在 。当所有的进程通信完成后,命名管道将保留在文件系统中以备后用 。命名管道具有严格的 FIFO 行为
全方位剖析 Linux 操作系统,太全了

文章插图
 
写入的第一个字节是读取的第一个字节,写入的第二个字节是读取的第二个字节,依此类推 。
消息队列 Message Queue一听到消息队列这个名词你可能不知道是什么意思,消息队列是用来描述内核寻址空间内的内部链接列表 。可以按几种不同的方式将消息按顺序发送到队列并从队列中检索消息 。每个消息队列由 IPC 标识符唯一标识 。消息队列有两种模式,一种是严格模式,严格模式就像是 FIFO 先入先出队列似的,消息顺序发送,顺序读取 。还有一种模式是 非严格模式,消息的顺序性不是非常重要 。
套接字 Socket还有一种管理两个进程间通信的是使用 socket,socket 提供端到端的双相通信 。一个套接字可以与一个或多个进程关联 。就像管道有命令管道和未命名管道一样,套接字也有两种模式,套接字一般用于两个进程之间的网络通信,网络套接字需要来自诸如TCP(传输控制协议)或较低级别UDP(用户数据报协议)等基础协议的支持 。


推荐阅读