linux系统编程知识(二)

来源:互联网 发布:联通数据关闭还走流量 编辑:程序博客网 时间:2024/06/06 02:13

注:本文为《unix/linux编程实践指导》有关笔记。

1.提高文件I/O效率的方法:使用缓冲。应用缓冲技术对提高系统的效率是很明显的,它的主要思想是一次读入大量的数据放入缓冲区,需要的时候从缓冲区取得数据。

2.内核缓冲技术:内核将磁盘上的数据块复制到内核缓冲区中,当一个用户空间中的进程要从磁盘上读数据时,内核一般不直接读磁盘,而是将内核缓冲区中的数据复制到进程的缓冲区中。当进程所要求的数据块不在缓冲区时,内核会把相应的数据块加入到请求数据列表中,然后把该进程挂起,接着为其他进程服务。一段时间之后(很短),内核把相应的数据块从磁盘读到内核缓冲区,然后再把数据复制到进程的缓冲区中,最后唤醒被挂起的进程。read把数据从内核缓冲区复制到进程缓冲区,write把数据从进程缓冲区复制到内核缓冲区,它们并不等价于数据在内核缓冲和磁盘之间的交换。

   应用内核缓冲技术的结果:

*提高磁盘I/O效率

*优化磁盘的写操作

*需要及时地将缓冲数据写入磁盘

3.系统每次打开一个文件都会保存一个指向文件当前位置的指针,当读写操作完成时,指针会移到下一个记录位置。这个指针与文件描述符相关联,所以如果两个程序同时打开一个文件,这时会有两个指针,两个程序对文件的读操作不会互相干扰。

4.系统调用:改变文件的当前位置:

  

5.编程时对每个系统调用(库函数调用)都要有出错处理。

6.处理系统调用中的错误:

*确定错误的种类:内核通过全局变量errno来指明错误的类型,每个程序都可以访问到这个变量。当系统调用出错时会把全局变量errno的值设为相应的错误代码,然后返回-1,程序可以通过检查errno来确定错误的类型,并采取相应的措施。

*不同的错误需要不同的处理。

*显示错误信息perror(string):显示的第一部分是用户传递进去的描述信息,第二部分是根据错误代码查到的错误提示。

7.进程对文件的读写都要通过文件描述符,文件描述符表示文件和进程之间的连接。




0 0
原创粉丝点击