Chinaunix

标题: 【用TCP/IP进行网际互联-卷二】进程的同步 [打印本页]

作者: lqseu    时间: 2009-06-12 21:45
标题: 【用TCP/IP进行网际互联-卷二】进程的同步
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.网络硬件和应用程序之间数据经历路径总结

                                     输出进程结构


输入进程结构



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74413/showart_1963259.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2