(Unix环境高级编程——第二版)学习心得.docVIP

  • 3
  • 0
  • 约5.6千字
  • 约 6页
  • 2018-06-27 发布于河南
  • 举报

(Unix环境高级编程——第二版)学习心得.doc

(Unix环境高级编程——第二版)学习心得

《apue2e》(Unix环境高级编程——第二版)学习心得 Unix编程 2010-12-14 20:46:14 阅读169 评论0 ??字号:大中小?订阅 总结:这是一本经典的书,对于Unix程序员如此,对于其它程序员也是相当有价值的。 先给两张可以概括本书所讨论内容的两张图片:(第二部分再给出说明) 第一部分:对本书总体结构的解析 本书共分21章。 个人认为核心章节为1~13章, 其中1~2章为本书的入门简介与本书的特色所在,为何称作“特色所在”呢? 因为本书始终都是在遵从那3个标准来进行编写的,即 ISO C IEEE POSIX The Single UNIX Specification 这三个标准,每下一行是上一行的超集,对于每一个Unix的c程序员来说都是最重要的编程标准。它决定了你代码的“高度”与“可用性”。 第二章的一节还提到了“limits”即“限制”这个概念,这对于可移植性的代码很重要。 3~5章,是关于“文件系统”和相关“I/O函数”的讨论,最重要的概念是“文件描述符”。 这里面dup 和dup2 函数很值得”嚼味“,有兴趣可以看看我的另一篇文章”dup2(fd,0)和dup2(0,fd)一样吗?“ 6章,讨论了一些“系统文件”。 7~9章,讨论了“进程”。 个人认为下面这张图可以说是对程序的内存布局的典型情况作了很好图示。(见7.6节) 10章,讨论了“信号”,它是一种软中断。同时,它为“异步通信”的实现提供了可能。 11~12章,是相对于《apue》第一版新增的内容之一。对线程作了讨论。 你可以认为“线程”就是一种特殊的“函数”,只不过它能够共享调用进程的资源,能够独立于调用进程(或其它线程)并行执行。当然线程也可以同步,也可以异步执行。还有很多其它有趣的线程特性,可以详细地阅读该书。 13章,讨论了“守护进程”的概念与编写方法。 至此,本书的核心内容基本讨论完毕。 后面14~19章讨论了高级I/O,高级进程间通信,及终端和伪终端的概念。 14章的高级I/O,主要留意I/O的“阻塞”和“非阻塞”两种不同形式及各自的应用场合。要特别注意,所谓的阻塞或非阻塞是由“文件”的O_NONBLOCK 标志(注意文件描述符起的作用)决定的,而不是I/O 函数决定的。另外,这个章节中给出了“锁”的概念,这是进程或线程同步的重要技术。 15章讨论了进程间通信的种种方法,个人推荐“管道”和“FIFO”两种,至于“XSI IPC”则不建议使用,理由在书中也说得很清楚。 16章讨论了“网络套接字”编程。本想自己画个图来说明,没有时间就以后再说吧。 17章讨论了基于15章中所讨论的“流机制”和16章讨论的“套接字”的两种高级IPC,具体是哪两个,有兴趣自己去看书吧。前者没有什么可移植性,后者倒是很不错的概念。(后者很好体现了制定“套接字”的初衷:既可用于网络的通信,也可用于本机进程的通信) 18章讨论了终端I/O。(晕!看过才知道,终端的属性也太多了吧?) 19章讨论了“伪终端”,即“PTY”的概念和使用它的初衷。个人认为书中已经说得很透彻了。 如果你明白了“主设备”和“从设备”的关系,及伪终端运行在从设备上的原理和用处,那么你的知识体系又扩大很多了。 如果你愿意,也可以参考我的另一篇文章“linux中,tty、pty、pts等终端或伪终端的区别” 20章讨论了如何在Unix中构建一个支持 并发访问的数据库。 21章通过构建一个打印机的CS模型(客户-服务器)来整合前面大部分章节的知识,做一个应用示例。 第二部分:本书重点内容讨论 1.“标准”的重要性。一句话,没有第一部分所提到的3个标准,就不存在Unix编程了。(个人对“标准”的理解与重视) 2.“内核”是什么?能为我们提供什么功能呢? 再回过头来,看看一开始我给出的两张图片。 第一张是内核在整个系统中所处的位置,我想说的是:内核是对系统所有硬件资源的“管理和组织者”,你可以说它是“管家”。它负责为上层的软件运行提供所需的硬件资源的分配和时间调度的分配等等。 可以认为内核包含两大功能:一、驱动程序集合;二、调度系统。 第二张是内核所包含的功能模块,也可以说是本书所讨论内容的概括。21个章节中后19个的内容都是对这5个模块的详细展开。 3.文件系统的核心概念:“文件描述符”。 内核对文件系统的管理都是基于“文件描述符”的。不管是创建文件,移动或复制文件,修改文件,删除文件都使用“文件描述符”来对某个想操作的文件进行引用和表示。 4.区别一下信号,进程间通信,和进程间同步,及共享等概念的不同。 信号,是一种软中断;它是异步通信的基础。所以它(异步通信)是进程间通信的一种方式(我们主要使用的signal调用,kill调用

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档