1.互斥
s=screate(1) //产生信号量
wait(s) wait(s)
...code1... ...code2...
signal(s) signal(s)
任何时候只有一个进程执行关键代码
2.队列的同步
生产者(队列满时阻塞) 消费者(队列空时阻塞)
s1=screate(N)(N为队列长度)(表示所剩空间)
s2=screate(0) (表示队列中项数)
生产者:wait(s1) //所剩空间-1 消费者:wait(s2) //队列项数-1
...insert item... ...extract item...
signal(s2) //队列项数+1 signal(s1) //可用空间+1
在端口的消息队列中就使用这种机制
2.IP协议与传输协议之间的数据报传递
由信号量控制的缓冲区
|-1-|-2-|...|-k-| UDP数据报端口
|
| | | |
TCP输入进程 \ | /
| |
| |
|—| |
|—| 发送到TCP的报文段端口 |
|—| |
| |
\ /
\ /
———— ——————————
\ /
IP进程
TCP有独立的进程接收IP进程的报文段,因而IP和TCP之间必须使用进程间通信的机制进行通信
UDP模块不作为独立的进程存在,而直接将报文根据目的协议端口号放在相应的端口中,使应用程序可以从这些端口中提取数据报。
3.网络硬件和应用程序之间数据经历路径总结
输出进程结构
阅读(707) | 评论(0) | 转发(0) |