- 论坛徽章:
- 1
|
本帖最后由 qq948299114 于 2014-05-28 18:08 编辑
1、请叙述一下您与《UNIX环境高级编程》以往版本的初识、学习经历或其他难忘的故事和回忆(必须是自身经历);
我手上现有第二版,我现在大三了,大一下学期开始接触linux,之后想理解一些底层实现,看了LDD,LKD,但是因为不了解系统编程的接口,看得不是很明白,后来才买了APUE 开始学习了如何利用系统调用,C库进行编程,我发现系统编程和内核编程的学习是相得益彰的,此后我学习的进度就比较快了,对底层的了解让我知其然亦知所以然。
后来慢慢就又不知道该用这些东西如何实现一个项目了,死读书,读死书让我陷入了一个不知如何接着学习的地步,后来有人告诉我可以再看看《UNIX网络编程》实现一个Web服务 器,一个聊天程序,所以我学习了socket方面的知识,之后自己可以简单的实现一个FTP文件服务器了。
难忘的事就是参加了某大公司的实习面试被刷了,为了准备面试,我吧APUE翻了两遍,发现知识就得经常回顾,还有第四章的习题4.8在面试前的笔试时遇到了相同思想的题目:使用
df /home 和du /home所查看到的已使用的磁盘容量不同,这是为什么?
du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。运行较慢。
df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。
当一个文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经这个已经被删除了的文件的句柄,
那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。
2、作为程序开发人员,从APUE里的哪些思想对您来说帮助很大?
阻塞,非阻塞,多路复用的IO技术,各种IPC机制,线程
比如我现在正开始看的Ngnix源码, 使用了事件驱动的线程模式:异步IO,多路复用,事件循环,一个小的线程池,每个处理器只有一个线程。这样Web服务器实现了高CPU利用率和 高并发,这是设计多线程服务器的最佳选择
|
|