20145229《信息安全系统设计基础》第10周学习总结
别出心裁的Linux系统调用学习法
管家婆的功能:
- 通过「文件」对I/O设备进行了抽象
- 通过「虚存」对主存和I/O设备进行了抽象
- 通过「进程」对CPU、主存和I/O设备进行了抽象
服务生的概念:
- GUI:为小白用户提供服务,你只会用鼠标就可以使用操作系统
- Shell: 为高级用户提供服务,你要记忆系统命令,更多通过键盘使用操作系统
- 系统调用:为专业用户程序员提供服务,你可以创建自己的工具让大家更好的使用操作系统
who命令
who能做什么?
每一行代表一个已登录的用户,所显示的内容从左向右依次是:用户名、终端名、登录时间、登陆地址(通常不显示)
- who命令通过读utmp这个文件实现,utmp文件里面保存的是结构体数组,数组元素是utmp类型的结构,utmp结构保存了登录记录,共包含9个成员变量,ut_user 数组保存登录名,ut_line 数组保存设备名,也就是用户的终端类型,ut_time 保存登录时间
ls命令
- ls最主要的功能是列出目录内容,显示文件信息
编写ls三大问题 - 如何列出目录内容
- 如何读取文件属性
- 如何判断目录名与文件名
cp1.c
- 功能:复制文件或目录
- 用法:./cp1 [路径/源文件] [路径/目的文件](默认当前目录)
-查看cp命令的帮助文档:
echostate.c
- 功能:查看在命令行中输入命令时是否可见,可见返回1,否则返回0 •echo is on:命令可见
- echo is off:命令不可见
tcgetattr
tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中
- tcsetattr:tcsetattr函数tcsetattr函数用于设置终端参数。
- perror:打印错误信息
setecho.c
- 功能:设置echo的状态,用来改变输入指令是否可见。
- 输入y(或是以y开头的一串字符),命令可见
- 否则(即输入不以y开头的字符),命令不可见
fileinfo.c
功能:查看文件信息
运行效果:
查看stat函数的帮助文档:
错题总结
- Unix/Linux中,键盘是被当做文件来读和写的。(X)
- void dns_error(char * msg )相关的全局变量是(h_errno)
- struct stat的(st_mode)与chmod相关
- C语言中的强制类型转换要改变位串的值。(X)
- Y86指令执行包括(取指)、译码、执行、访存、写回和更新PC
- 存储器层次结构的中心思想是,每一层都是下一层的(缓存)
本周代码托管截图
其他(感悟、思考等,可选)
本周的主要内容在于代码的理解和学习,说实话最开始不太懂老师为什么要我们第十章这么一点点的内容学习两周,走代码也只是跟着老师的步骤来一遍,感觉没有特别实质性的提高,到后面一点后感觉有了自己的理解和认识,对指令的掌握,运行手段,调试手段都有了更深的理解,不再是泛泛而谈。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 130/130 | 1/1 | 17/17 | |
第二周 | 90/270 | 1/1 | 16/16 | |
第三周 | 120/390 | 2/2 | 16/16 | |
第四周 | 89/479 | 1/1 | 17/17 | |
第五周 | 120/599 | 1/1 | 16/16 | |
第六周 | 110/709 | 1/1 | 18/18 | |
第七周 | 128/837 | 1/1 | 18/18 | |
第八周 | 5/842 | 1/1 | 16/16 | |
第九周 | 65/907 | 1/1 | 13/13 | |
第十周 | 160/1067 | 1/1 | 14/14 |