操作系统15 [新] 3_5 进程通信.pdfVIP

  • 1
  • 0
  • 约5.52千字
  • 约 31页
  • 2020-09-14 发布于广西
  • 举报
3.5 进程通信 信号通信机制 管道通信机制 共享存储区通信机制 消息通信机制 3.5.0 进程通信 • 进程通信:进程之间的信息交换 • 进程同步是一种进程通信,但有别于本节讨论的内容,因 为本节讨论的进程通信是专门用于在进程间传递大批数 据的通信,而进程同步只是在进程间传递信号 3.5.0 进程通信分类 • 低级通信:交换信息量少,通信控制复杂,对用户不透明 • 信号通信机制 (3.5.1) • 信号量及其原语操作 • 高级通信:用户直接利用OS提供的通信命令传输大量数据, 通信控制细节由OS完成,对用户透明 • 管道提供的共享文件通信机制 (3.5.2) • 共享存储区通信机制 (3.5.3) • 信箱和发信/收信原语的消息传递通信机制 (3.5.4) 信号通信机制 管道通信机制 共享存储区通信机制 消息通信机制 3.5.1 信号通信机制 • 信号机制又称软中断 (如 Ctrl + C),是一种进程之间 进行通信的简单通信机制,通过发送一个指定的信号来 通知进程某个异常时间发生,并进行适当处理 1. 用户按中断组合键 Ctrl+C; 2. 终端驱动程序收到输入字符,并调用信号系统; 3. 信号系统发送SIGINT信号给shell,shell再把它发送给进程; 4. 进程受到SIGINT信号; 5. 进程撤销。 3.5.1:与硬中断的差别 • 软中断运行在用户态,往往延时较长 • 硬中断运行在核心态,能及时发现 3.5.1:信号的发送 • 可以由用户、进程、内核发送给其他的进程。 • 用户:通过特殊键 (如Ctrl+C),请求内核产生信号 • 进程:通过系统调用kill(pid,sig);利用信号与其它进程通信 • 内核:程序执行出错,如非法段存取、浮点数溢出、非法操作码; 通知进程特定事件 • 同步信号:进程执行指令产生的信号称为同步信号 • 异步信号:进程以外的事件所引起的信号称为异步信号 3.5.1:信号处理 • 忽略此信号:大多数信号可以被忽略,除了SIGKILL (除 了init进程)和SIGSTOP。 • 捕捉信号:通知内核在某种信号发生时,调用一个用户 函数。但不能捕捉SIGKILL和SIGSTOP。 • 执行系统默认动作: • 终止 (+core) [大多数信号如此默认响应,core文件用于调试] • 忽略 • 继续 3.5.1:Linux下的信号 分类 信号 终止进程 SIGCHLD, SIGHUP, SIGKILL, SIGABRT, SIGSTOP, SIGTSTP, … 例外事件 SIGBUS, SIGSEGV, SIGPWR, SIGFPE, SIGSTKFLT, SIGURG, … 执行系统调用 SIGPIPE, SIGILL, SIGIO, … 终端交互 SIGINT, SIGQUIT, SIGTTIN, SIGTTOU, … 用户进程相关 SIGTERM, SIGALRM, SIGUSR1, SIGUSR2, … 跟踪进程执行 SIGTRAP 信号通信机制 管道通信机制 共享存储区通信机制 消息通信机制 3.5.2 示例 Linux 下执行命令时使用管道: who│grep martin | wc - l 3.5.2:管道分类 • 匿名管道 (unnamedpipe) • 是在父进程和子进程之间,或同一父进程的两个子进程之间传输 数据的无名字的单向管道 • 命名管道 (namedpipe) • 是服务器进程和一个或多个客户进程之间通信的单向或双向管道 3.5.2 管道通信机制 • 管道 (UNIX, Windows)是连接读写进程,实现他们之间 通信的一个特殊文件。属于一种共享文件通信机制 • 管道是一个共享文件,连接读写进程实现通信。写进程 往管道一端写入信息,读进程从管道另一端读信息。 • 管道借助于文件系统的机制实现,包括 (管道)文件的 创建、打开、关闭和读写 3.5.2 (续) • 管道基于文件系统,利用一个打开的共享文件连接两个 相互通信的进

文档评论(0)

1亿VIP精品文档

相关文档