01SIGHUB阻塞:内核认为进程正在做无用工作时发送给该进程02SIGINT中断03SIGQUIT停止:由用户发送,引发进程停止并产生信息转存
进程需要为信号设置相应的监听处理,当收到特定信号时,执行相应的操作,类似很多编程语言里的通知机制 。
5.4 消息消息可以作为两个不相关进程传递数据的方式,至少由一对原语构成
send(destination,message)receive(source,message)
什么是原语:由若干条指令构成的程序段,用以执行特定的操作 。消息通信可以分为直接通信和间接通信 。
直接通信:发送进程直接发消息发给接收进程,把消息挂在接收进程的消息队列中,接收进程从消息队列中获取消息,是一种一对一的通信关系 。
间接通信:消息不直接发送给接收者,而是发送到一个共享数据结构,该结构是一种消息队列,也称为信箱 。这种方式相对于直接通信更加灵活,可以一对一,一对多,多对一,多对多 。
文章插图
通过消息格式中指定的id来确保进程的识别,如下是一种常见的消息数据格式(来自《操作系统精髓与设计原理》5.5.3)
文章插图
消息在消息队列中,按照先进先出的原则 。如果有消息比较紧急,发送者可以指定消息的类型,接收者在查询消息队列时,可以根据消息类型读取,不一定完全按照先进先出顺序 。
消息相对于管道,有如下区别:
- 在传输中,管道基于字节流,消息基于格式文本 。
- 介质上管道是文件,消息是内存
- 管道只能按照先进先出的顺序,消息不一定,它可以根据消息类型选择性接收处理,更加灵活 。
信号量需要初始化为某个值,当有进程对共享内存进行访问时,信号量减1,如果信号量值不为负数,则访问共享内存 。当此时其新进程也要访问共享内存时,再次将信号量减一,如果信号量的值为负数,则新进程阻塞等待 。
文章插图
6. 总结进程是操作系统最重要的概念之一,有比较多的细节点可以介绍,每一点还可以横向纵向再展开 。笔者翻阅了大部分主流操作系统的书中关于进程管理的章节,总结出了本篇入门介绍,其中用户进程,内核进程,调度算法评价指标,进程和内存管理等内容这里受限于篇幅没有讨论 。同步,并发,锁这几部分相对复杂且重要的内容打算后面另起章节单独描述 。感谢阅读,如有疏漏或错误,还请指正。
转载自 YinTokey:一篇快速入门操作系统的进程管理
文章插图
推荐阅读
- 谈恋爱的技巧的方法详解
- CAN总线协议详解
- 腾讯云服务器操作系统TencentOS安装与体验
- 数据中台到底包括什么内容?一文详解架构设计与组成
- 一文让你搞懂MYSQL底层原理。-内部结构、索引、锁、集群
- 详解三种不同的身份验证协议
- 详解飞书新功能,如何让开发者“爽”起来?
- java中常见的六种线程池详解
- 一文读懂响应式编程到底是什么?
- linux网络编程常见API详解