20145202 《信息安全系统设计基础》第9周学习总结(2)
教学内容总结
10.1UnixI/O
- 打开文件:一个应用程序通过要求内核打开相应文件,来宣告它想访问一个I/O设备。
- 改变文件当前位置:对于每个打开的文件,内核保存着一个文件位置k,为0.文件位置是从文件开头起始的字节偏移量。应用程序能够通过执行seek操作显示设置文件的当前位置k。
- 读写文件:一个读操作就是文件拷贝字节到存储器,从当前文件位置k开始将k增加到k+n,给定一个大小为m的文件。
- 关闭文件:应用完成了对文件的访问之后,他就通知内核关闭这个文件。作为响应,内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。
10.2打开和关闭文件
- O_RDONLY:只读
- O_WRONLY:只写
- O_RDWR:可读可写
- O_CREAT:如果文件不存在,就创建一个新的空文件
- O_TRUNC:如果文件已经存在,就截断它。
- O_APPEND:在每次操作前,设置文件位置到文件结尾处。
10.3读和写文件
- 读时遇到EOF:准备读一个文件时,该文件从当前位置开始只有20字节如果用50字节的片进行读取,下一个read返回值不足20,此后的read将通过返回不足值0来发出EOF信号。
- 从终端读文本行:打开文件是与终端相关联的,那么每个read函数将一次传送一个文本行,返回的不足值等于文本行的大小。
- 读和写网络套接字:如果打开的文件对应网络套接字,那么内部缓存冲约束和较长的网络延迟会引起read和write返回不足值。
10.4用RIO包健壮读写
- 无缓冲的输入输出函数:这些函数值直接在存储器和文件之间传送数据,没有应用级缓冲,他们将对二进制数数据读写到网络和从网络读写二进制数有用。
- 带缓冲的输入函数:允许高效的从文件中读取文本行和二进制数,这些文件的内容缓存在应用级缓冲区内。
10.5读取文件元数据
10.6共享文件
- 描述符表:每个进程都独立的描述符表。
- 文件表:打开文件的集合时由一张文件表来表示的,所有的进程共享这张表。每个文件表的表项组成包括有当前位置,引用计数。
- v-node表:同文件表一样,所有的进程共享这张表。
实验楼中的学习
主要是对局部性进行了一些分析。
实验楼里面是空的,我电脑上显示不出来,所以我就做了一些书上的习题。
第十章的所有题目都被学长做过了,我就做了*9.16.
空闲块至少是16字节,16字节的话也满足单字双字对齐,应该是16.
代码托管
http://git.oschina.net/tuolemi/haha