CSAPP阅读笔记(4)-进程间通信

  前段时间结束了一些比较琐碎的事情,也因此拖到现在都没继续写小结。这次简单总结下书中第三部分,在我看来也是相对来说比较不重要的一部分哈。
  要说明的是,这部分共分三章,分别从系统级IO(第11章)、网络编程(第12章)、并发编程(第13章)。分别从三个程序员经常会用到的方面进行讨论,当然文中是以Unix操作系统为前提的。
  首先来看看系统级IO。这部分主要关注一下文件描述字的复制问题。在Unix中,与文件操作相关的结构有三种,如下图所示:
File?id=d338xhp_864g5z7hrt9_b
  图左侧的表是文件描述符表,每个进程对应一张该表,表项指向打开文件表的某项;中间是已经打开的文件表,每一项维护一个打开文件的文件指针位置,文件引用数,以及对应文件的i-node表项;右侧是i-node表项,这是对应到磁盘上的真实文件的,每个文件对应一个i-node数据结构,该结构描述文件的大小权限等属性。
  好,现在让我们来看第一种情况,左侧是同一张表,中间表项file A和file B结构体均指向同一个i-node表项,这样对同一个进程来说,相当于对同一个文件做了两次open操作,得到的两个文件描述字互相独立,可以分别操作同一个文件的不同位置的数据。
  第二种情况,即I/O重定向,有了前面的图,很好理解了,就是把左侧表的某项修改为映射到别的打开文件表项。当然,实际操作的时候,还需要关注被去引用的那个打开文件的引用数值,这个值也要更新,减一。当值为0时,对应的打开文件表和i-node表项从内存中删除。
  第三种情况,即fork操作调用,子进程在创建之初,复制了主进程的全部内容,所以它们的文件描述符表完全一样。这也就是为什么fork返回的子进程/主进程,第一步操作经常会考虑关闭某些文件描述字的原因。
  
  再来看下网络编程,这部分介绍了一些基本内容,个人建议是基本没啥用,不如看TCP/IP详解(当然没看过的,用这个粗略了解下也可以)。这里就不赘述了。
  最后看下并发编程,这部分介绍了并发编程的基础,还是不赘述呵呵。
posted on 2009-06-06 05:51  Peter.Y 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/peteryj/archive/2009/06/06/1944893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值