一文详解操作系统进程管理( 五 )


01SIGHUB阻塞:内核认为进程正在做无用工作时发送给该进程02SIGINT中断03SIGQUIT停止:由用户发送,引发进程停止并产生信息转存
进程需要为信号设置相应的监听处理,当收到特定信号时,执行相应的操作,类似很多编程语言里的通知机制 。
5.4 消息消息可以作为两个不相关进程传递数据的方式,至少由一对原语构成
send(destination,message)receive(source,message)什么是原语:由若干条指令构成的程序段,用以执行特定的操作 。消息通信可以分为直接通信和间接通信 。
直接通信:发送进程直接发消息发给接收进程,把消息挂在接收进程的消息队列中,接收进程从消息队列中获取消息,是一种一对一的通信关系 。
间接通信:消息不直接发送给接收者,而是发送到一个共享数据结构,该结构是一种消息队列,也称为信箱 。这种方式相对于直接通信更加灵活,可以一对一,一对多,多对一,多对多 。

一文详解操作系统进程管理

文章插图
 
通过消息格式中指定的id来确保进程的识别,如下是一种常见的消息数据格式(来自《操作系统精髓与设计原理》5.5.3)
一文详解操作系统进程管理

文章插图
 
消息在消息队列中,按照先进先出的原则 。如果有消息比较紧急,发送者可以指定消息的类型,接收者在查询消息队列时,可以根据消息类型读取,不一定完全按照先进先出顺序 。
消息相对于管道,有如下区别:
  • 在传输中,管道基于字节流,消息基于格式文本 。
  • 介质上管道是文件,消息是内存
  • 管道只能按照先进先出的顺序,消息不一定,它可以根据消息类型选择性接收处理,更加灵活 。
5.5 信号量信号量本质是一个计数器,当多进程共享内存时,用于保护共享内存,确保共享内存在同一时刻只有一个进程独享 。
信号量需要初始化为某个值,当有进程对共享内存进行访问时,信号量减1,如果信号量值不为负数,则访问共享内存 。当此时其新进程也要访问共享内存时,再次将信号量减一,如果信号量的值为负数,则新进程阻塞等待 。
一文详解操作系统进程管理

文章插图
 
6. 总结进程是操作系统最重要的概念之一,有比较多的细节点可以介绍,每一点还可以横向纵向再展开 。笔者翻阅了大部分主流操作系统的书中关于进程管理的章节,总结出了本篇入门介绍,其中用户进程,内核进程,调度算法评价指标,进程和内存管理等内容这里受限于篇幅没有讨论 。同步,并发,锁这几部分相对复杂且重要的内容打算后面另起章节单独描述 。感谢阅读,如有疏漏或错误,还请指正。
 
转载自 YinTokey:一篇快速入门操作系统的进程管理
一文详解操作系统进程管理

文章插图




推荐阅读