20145311 《信息安全系统设计基础》第九周学习总结
2016-11-13 16:46
197 查看
20145311 《信息安全系统设计基础》第九周学习总结
教材学习内容总结
系统级I/O
输入输出是在主存和外部设备(如磁盘驱动器、终端和网络)之间拷贝数据的过程
输入操作是从I/O设备拷贝数据到主存,而输出操作是从主存拷贝数据到I/O设备
一个Unix文件就是一个m个字节的序列
打开文件时返回一个小的非负整数,叫做描述符,它在后续对此文件的所有操作中表示这个文件
文件位置是从文件开头起始的字节偏移量
open函数的三个参数(文件名 参数 访问权限位)
read函数从描述符为fd的当前文件位置拷贝最多n个字节到存储器位置buf。返回值-1表示一个错误
返回值0表示EOF,否则返回值表示的是实际传送的字节数量
不足值出现的原因:读时遇到EOF、从终端读文本行、读和写网络套接字
RIO函数可以处理不足值:
1、无缓冲的输入输出函数 2、带缓冲的输入函数
一个文本行就是一个由换行符结尾的ASCII码字符序列
对于内核而言,文本文件和二进制文件毫无区别
内核用三个相关的数据结构来表示打开的文件:
描述符表(每个进程有其独立的描述符表)
文件表(所有进程共享这张表)
v-node表(所有进程共享这张v-node表)
父子进程共享相同的打开文件表集合,因此共享相同的文件位置
对于大多数应用程序而言,标准I/O更简单。然而对标准I/O和网络文件的一些相互不兼容的限制,UnixI/O 比标准I/O更适用于网络应用程序
错误处理
错误处理包装函数:如果没有错误,包装函数的行为和基本函数完全一样
一个独立的头文件(csapp.h)中包含这些包装函数的函数原型
Unix系统中的错误处理:Unix风格、Posix风格、DNS风格 不同风格的错误处理有些许区别
代码调试中的问题和解决过程
一开始在编译练习题中的代码时,会找不到csapp.h这个头文件,后来尝试着从网上下载一个这样的头文件,发现竟然要积分,尴尬,最后将csapp.h的头文件改成了另外的三个就可以编译通过了
p599代码:从标准输入到标准输出;上一行为自己输入到buffer,下一行为输出
教材10.3
本周代码托管
其他(感悟、思考等,可选)
本周的学习内容主要是系统级I/O,各种系统级的调用还是要靠多实践来掌握,学会使用man -k和grep -nr来进行搜索,学会读注释。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 100/100 | 1/2 | 10/10 |
第二周 | 150/200 | 2/4 | 8/18 |
第三周 | 200/250 | 1/5 | 5/23 |
第五周 | 50/300 | 1/6 | 9/32 |
第六周 | 20/320 | 1/7 | 8/40 |
第七周 | 20/340 | 1/8 | 6/46 |
第八周 | 60/400 | 1/9 | 6/52 |
第九周 | 80/480 | 1/10 | 8/60 |
参考资料
《深入理解计算机系统V2》学习指导...
相关文章推荐
- 20145311 《信息安全系统设计基础》第二周学习总结
- 《信息安全系统设计基础》第九周学习总结
- 20145206 《信息安全系统设计基础》第九周学习总结
- 20145321 《信息安全系统设计基础》第九周学习总结
- 20145240 《信息安全系统设计基础》第九周学习总结
- 20145311 《信息安全系统设计基础》第三周学习总结
- 20145316《信息安全系统设计基础》第九周学习总结
- 20145329 《信息安全系统设计基础》第九周学习总结
- 20145227《信息安全系统设计基础》第九周学习总结
- 《信息安全系统设计基础》 第九周学习总结
- 20145319 《信息安全系统设计基础》第九周学习总结
- 20145311 《信息安全系统设计基础》第六周学习总结
- 20145215《信息安全系统设计基础》第九周学习总结
- 20145311 《信息安全系统设计基础》第五周学习总结
- 20145311 《信息安全系统设计基础》第0周学习总结
- 20145311 《信息安全系统设计基础》第七周学习总结
- 20145218 《信息安全系统设计基础》第九周学习总结
- 20145208 《信息安全系统设计基础》第九周学习总结
- 20145339 《信息安全系统设计基础》第九周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第九周学习总结