教材学习内容总结
系统级 I/O
Unix I/O
- 所有的I/O设备都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将这杯优雅地映射为文件的方式,允许Linux内核引出一个简单、低级的应用接口,称为Unix I/O.且所有的输入与输出都可以用一种统一且一致方式来执行:打开文件、Linux Shell、改变当前文件位置、读写文件、关闭文件。
文件
文件类型:
- 普通文件:包含任意数据。
- 目录:包含一组链接的文件,其中每个链接都将一个文件名映射到一个文件,这个文件可能是另一个目录。
套接字:用来与另一个进程进行跨网络通信的文件。
Linux目录层次
打开和关闭文件
flags参数指明了进程的打算如何访问这个文件:
- O_RDONLY:只读。
- O_WRONLY:只写。
- O_RDWR:可读可写。
- O_CREAT:如果文件不存在就创建他的截断的空文件。
- O_TRUNC:如果文件存在就截断。
- O_APPEND:每次写操作前,设置文件位置到文件结尾处。
访问权限位:
读和写文件
在某些情况下,read和write传送的字节比应用程序要求的要少。这些不足值不表示有错误。出现这样的情况:
- 读时遇到EOF。
- 从终端读文本行。
读和写网络套接字。
文件共享
内核用三个相关的数据结构来表示打开的文件:- 描述符表
- 文件表
v-node表
典型的打开文件的内核数据结构,没有共享:
文件共享:
子进程继承父进程的打开文件:
I/O 重定向
Linux shell提供了I/O重定向的操作符:ls > foo.txt
上周考试错题总结
- 错题1: 下面说法正确的是() A . CPU通过内存映射I/O向I/O设备发命令 B . DMA传送不需要CPU的干涉 C . SSD是一种基于闪存或Flash的存储技术 D . 逻辑磁盘块的逻辑块号可以翻译成一个(盘面,磁道,扇区 )三元组。 答案:A B C D
- 错题2: 有关磁盘操作,说法正确的是() A . 对磁盘扇区的访问时间包括三个部分中,传送时间最小。 B . 磁盘以字节为单位读写数据 C . 磁盘以扇区为单位读写数据 D . 读写头总处于同一柱面 答案:A C D