2018-2019-1 20165206 《信息安全系统设计基础》第六周学习总结

- 2018-2019-1 20165206 《信息安全系统设计基础》第六周学习总结

- 教材学习内容总结

  • 输入操作是从I/O设备复制数据到主存,输出操作是从主存复制数据到I/O设备。

- Unix I/O:

  • 所有的I/O设备都被模型化为文件。

  • 描述符在打开文件的后续对此文件的所有操作中标识这个文件。

  • 每个进程开始时都有打开的三个文件:标准输入(描述符为0)、标准输出(描述符为1)和标准错误(描述符为2)。

  • 读操作:一个读操作就是从文件复制n个字节到内存,从当前文件位置k开始,然后将k增加到k+n。

  • 写操作:一个写操作就是从内存复制n个字节到一个文件,从当前文件位置k开始,然后更新k。

- 文本文件和二进制文件

- 打开文件:

int open(char *filename,int flags,mode_t mode)

  • flags参数指明了进程打算如何访问这个文件:

O_RDONLY:只读;

O_WRONLY:只写;

O_RDWD:可读可写

注意O_RDONLY|O_WRONLY和O_RDWD不相同。

  • mode参数指定了新文件的访问权限位。

文件夹权限0777表示用户、用户组的成员和其他人可读可写可执行。
7转化为二进制111,分别对应读、写、操作。

- 关闭文件

  • int close(int fd)
    若成功则为0,若出错则为-1.
    关闭一个已关闭的描述符会出错。

- 读、写文件

  • 应用程序是通过分别调用read和write函数来执行输入和输出的。
- ssize_t read(int fd,void *buf,size_t n);

- ssize_t write(int fd,const void *buf,size_t n);
  • size_t是无符号长整型,ssize_t是有符号长整型。

  • 内核通过三个相关的数据结构来表示打开的文件:描述符表、文件表(file table)和v-node表。

  • dup2函数:
    int dup2(int oldfd,int newfd)
    dup2函数复制描述符表表项oldfd到描述符表表项newfd,覆盖描述符表表项newfd以前的内容。

- 课上内容总结

- 帮助命令man:

  • man -k 函数名 搜索与此函数相关的信息

  • man -k 函数名 | grep key1| grep key2 带有筛选的搜索

  • man 2 函数名 可直接进入查看函数功能、所需头文件、返回值等相关信息的文件

  • grep -nr:grep -nr XXX /usr/include查宏定义,查找关键字,全文搜索

  • echo命令:用于创建一个二进制文件。

echo -ne "\x6b" > test

\x表示为16进制,\0NNN 表示八进制

也可以用另外一种写法:

echo 6b | xxd -r -ps > test
  • od命令:输出文件内容。查看二进制文件时,用od -x将其转成8进制或od -h将其转成16进制来看

  • head和tail命令:用来显示开头或结尾。

显示文件的前5行内容

head -n 5 example.c

显示文件除了头5行以外的所有内容

head -n -5 example.c

显示文件后5行的内容。

tail -n 5 example.c

  • who命令:

who命令用于显示目前登录系统的用户信息。

c语言实现who命令的学习,我是参考博客:Linux下who命令之C语言实现进行学习的。

通过man who查看who了帮助文档,了解who命令的实现。

通过查看utmpx,了解/var/run/utmp是如何存储的

编程思想:
1、用open函数打开/var/run/utmp文件;
2、用while循环实现从头到尾读取文件;
3、用read函数读取并输出实现who命令的相关信息。

- 上周错题总结

  • 错题1:
    有关高速缓存的说法正确的是()
    A .
    高速缓存的容量可以用C=SEB 来计算
    B .
    高速缓存容量为2048,高速缓存结构为( 32 ,8,8,32)
    C .
    直接映射高速缓存要:组选择、行匹配、字抽取

D .
当程序访问大小为2的幂的数组时,直接映射高带缓存中常发生冲突不命中

  • 答案: A C D
posted @ 2018-11-04 18:32  brs666  阅读(144)  评论(0编辑  收藏  举报