进程的同步与通信

来源:互联网 发布:淘宝网店代理 编辑:程序博客网 时间:2024/06/06 02:28

写给自己的话

隔了好久没写博客了。

自从换了后端研发的工作后,每天都挺忙的。忙着做需求,跟进线上bug,忙着跟前端/客户端联调。夜深人静,细细想来,自己并没有多少可以沉淀的东西。特别是跟朋友聊起未来3年的规划,觉得未免有些漫无目标,虚度光阴了。

所以,决定给自己定一些细化的小目标,比如写篇博客,权当一个新的开始。

正文

本文由来

翻看计算机操作系统(汤子瀛版),10.3节讲述了进程的同步与通信机制。最近在看UNIX环境高级编程和UNIX网络编程,此节于我理解甚有帮助,特以博客记之。

sleep与wakeup同步机制

进程等待任务完成时,可调用sleep使自己进入睡眠状态;待任务处理完,中断处理程序中的wakeup将其唤醒。

信号机制

信号:1~19中的某个整数,代表某一种事先约定好的简单消息。

每个进程在执行时,都要通过信号机制来检查是否有信号到达。
若有信号到达,表示某进程已发生了某种异常事件,便立即中断正在执行的进程,转向由该信号所指示的处理程序。处理完毕,再返回到此前的断点处继续执行。

类似硬中断,故又称为软中断。

两者相似处:
1. 异步通信
2. 两者对信号/中断都可加以屏蔽

两者不同:
1. 中断有优先级,而信号机制则没有,所有的信号都是平等的。
2. 信号处理程序在用户态下运行,中断处理程序在核心态下运行。
3. 中断响应是及时的,而对信号的响应通常都有较长的时间延迟。

管道机制

匿名管道

匿名管道是一个临时文件,是利用系统调用pipe()建立的无名文件(无路径名)。

只用pipe()返回的文件描述符来标识匿名管道。

因此,只有调用pipe的进程及其子孙进程,才能识别,从而才能利用匿名管道进行通信。

命名管道FIFO

命名管道,调用mknod建立,可以在系统中长期存在,而且具有路径名,因而其他进程可以感知它的存在,并能访问命名管道。

消息机制

消息机制允许进程发送一个消息给任何其他进程。

补充:协同进程

补充:网络IPC(socket)

参考文献

[1] 汤子瀛等. 计算机操作系统. 西安:西安电子科技大学出版社,2006

阅读全文
0 0
原创粉丝点击