Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239240
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: 系统运维

2009-06-12 21:45:05

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) |
给主人留下些什么吧!~~