20145303 《信息安全系统设计基础》第9周学习总结
20145303 《信息安全系统设计基础》第9周学习总结
教材学习内容总结
•输入/输出(I/O)是在主存和外部设备(如磁盘驱动器、终端和网络)之间拷贝数据的过程。输入操作是从I/O设备拷贝数据到主存,而输出操作是从主存拷贝数据到I/O设备。
•Unix I/O :将设备映射为文件的方式,允许Unix内核引出一个简单、低级的应用接口。
•Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)、标准错误(描述符为2)
•open函数:
flages参数指明进程打算如何访问该文件,可以是一个或多个更多位掩码的或
mode参数指定新文件的访问权限位,访问权限位被设置为mode & ~umask
•应用程序是通过分别调用read和write函数来执行输入和输出的
•read函数:从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf,返回值:-1:一个错误;0:EOF;否则,返回值:实际传送的字节数量
•write函数:从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置
•lseek函数:应用程序能够显式地修改当前文件的位置
•read和write传送的字节比应用程序要求的少会出现不足值
产生不足值的原因:
1、读时遇到EOF
2、从终端读文本行
3、读和写网络套接字
•RIO:
提供两种函数:无缓冲的输入输出函数、带缓冲的输入函数
应用程序通过调用rio_readn和rio_written函数可以在存储器和文件之间直接传送数据
rio_readn函数在遇到EOF时,只能返回一个不足值
rio_writen函数后局不会返回不足值
•stat数据结构中的st_size成员包含了文件的字节数大小,st_mode成员编码了文件访问许可位和文件类型
•内核使用三个相关的数据结构来表示打开的文件:
描述符表:每个进程都有它独立的描述符表。 每个打开的描述符表项指向文件表中的一个表项。
文件表:所有进程共享这张表。每个文件表的表项组成包括有当前的文件位置、引用计数、以及一个指向v-node表中对应表项的指针。
v-node表:所有进程共享这张v-node表。
•I/O重定向是依靠dup2函数工作的
•标准I/O库将一个打开的文件模型化为一个流,一个流就是一个指向FILE类型的结构的指针。每个ANSIC程序开始都有三个打开的流stdin、stdout和stderr,分别对应于标准输入、标准输出、标准错误
•套接字描述符:Unix对网络的抽象是一种称为套接字的文件类型,被称为套接字描述符。应用进程通过读写套接字描述符来与运行在其他计算机上的进程通信
•Unix系统中的错误处理:Unix风格、Posix风格、DNS风格
本周代码托管链接
https://git.oschina.net/LJQ5303/Linux-code.git
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/1000 | 2/14 | 25/220 |