• 20145337 《信息安全系统设计基础》 第九周学习总结


    20145337 《信息安全系统设计基础》第九周学习总结

    教材学习内容总结

    Unix I/O

    • 输入/输出 是在主存外部设备之间拷贝数据的过程
    • 一个Unix文件就是一个m字节的序列:B0、B1、、、Bk、、、Bm-1,如网络、磁盘、终端,都被模式化为文件,所有的输入输出都被当作对相应文件的读和写来执行。
      • 打开文件:内核返回描述符,以标识文件。内核记录有关打开文件的所有信息。unix创建每个进程都有:标准输入、标准输出、标准错误
      • 改变当前的文件位置:这个文件位置是从文件开头起始的字节偏移量
      • 读写文件
      • 关闭文件

    打开、关闭文件

    • int open(char*filename, int flags,mode_t mode);
    • open 函数将filename转换为一个文件描述符,并且返回描述符数字
    • flags参数指明进程打算如何访问
    • mode参数指定新文件的访问权限
    • int close(int fd);
    • 进程通过调用close函数关闭一个打开的文件,关闭一个已关闭的描述符会出错

    读和写文件

    • 应用程序是通过分别调用read和write函数来执行输入和输出。
    • RIO,会自动处理上文中所述的不足值。提供了无缓冲的输入输出函数和带缓冲的输入函数
      • RIO无缓冲的输入输出函数:调用rio_readn和rio_writen
      • RIO带缓冲的输入函数:rio_readlineb,从一个内部读缓冲区拷贝一个文本行
    • 每打开一个描述符都会调用一次rio_readinitb函数,它将描述符fd和地址rp处的一个类型为rio_t的读缓冲区联系起来
    • 对同一描述符,对rio_readlineb和rio_readnb的调用可以任意交叉进行。然而对这些带缓冲的函数调用却不应和无缓冲的rio_readn交叉使用

    读取文件元数据

    • 应用程序能够通过调用stat和fstat函数,检索到关于文件的元数据
    • stat以文件名作为输入。fstat以文件描述作为输入
    • st_size成员 包括文件的字节数大小。st_mode成员编码了文件的访问许可位和文件类型
    • 普通文件包括某种类型的二进制或文本数据
    • 目标文件包含关于其他文件的信息
    • 套接字是一种用来通过网络与其他进程通信的文件
    • Unix提供的宏指令根据st_mode成员来确定文件的类型
    • 宏指令:S_ISREG() 普通文件?二进制或文本数据
    • 宏指令:S_ISDIR() 目录文件?包含其他文件的信息
    • 宏指令:S_ISSOCK() 网络套接字?通过网络和其他进程通信的文件

    教材学习中的问题和解决过程

    • man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
    • grep -nr XXX /usr/include :查找宏定义,类型定义
      • man cp

      • 在帮助文档中,通过/+关键词查找,向后查找:n,向前:N

      • grep -r递归查找-v反向查找

    本周代码托管截图


    其他(感悟、思考等,可选)

    本周的学习任务较轻松,I/O比较好理解,不过老师留在教材导读中的问题,有点二丈和尚摸不着头脑

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第九周 150/200 2/2 8/20 学习I/O

    参考资料

  • 相关阅读:
    2021.10 好运气
    2021.9 抢购
    2021.8 全周期工程师
    2021.7 创业者
    2021.6 过年
    jenkins学习17
    httprunner 3.x学习18
    httprunner 3.x学习17
    python笔记57-@property源码解读与使用
    httprunner 3.x学习16
  • 原文地址:https://www.cnblogs.com/5337my/p/6059523.html
Copyright © 2020-2023  润新知