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


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

    教材学习内容总结

    第十章 系统级I/O

    • 输入/输出是在主存和外部设备之间复制数据的过程。输入操作是从I/O设备复制数据到主存,输出操作是从主存复制数据到I/O设备。
    Unix I/O
    • 一个Linux文件就是一个m字节的序列,所有的I/O设备都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备优雅地映射为文件的方式,允许Linux文件内核引出一个简单、低级的应用接口,称为Unix I/O。
    文件
    • 普通文件:包含任意数据,应用程序通常区分文本文件和二进制文件,对内核而言,文本文件和二进制文件无区别。
    • 目录:包含一组链接的文件,每个链接都将一个文件名映射到一个文件,这个文件可能是另一个目录。
    • 套接字:用来与另一个进程进行跨网络通信的文件
      Linux内核将所有文件都组织成一个目录层次结构,由名为/的根目录确定。
    打开和关闭文件
    • 进程是通过调用open函数来打开一个已存在的文件或者创建一个新文件。
    • open函数将filename转换成一个文件描述符,并且返回描述符数字,返回的描述符总是在进程中当前没有打开的最小描述符。flags参数指明了进程打算如何访问这个文件:
      O_RDONLY:只读
      O_WRONLY:只写
      O_RDWR:可读可写
    • flags参数也可以是一个或者更多位掩码的或,为写提供一些额外提示。
      O_CREAT:不存在则创建它的一个截断的空文件
      O_TRUNC:如果存在,则截断
      O_APPEND:每次从文件末尾处进行写操作
    读/写文件
    • 读/写操作分别是调用read/write函数实现的
    • read:从描述符为fd的当前文件位置复制最多n个字节到内存位置buf,返回-1表示一个错误,返回0表示EOF,否则表示实际传送的字节数。
    • write:从内存为止buf复制最多n个字节到描述符fd的当前位置
    RIO包健壮读写
    • 自动处理read和write的不足值
    • RIO提供两类不同的函数:
      无缓冲的输入输出函数:调用rio_readn和rio_writen,应用程序可以在内存和文件之间直接传送数据。
      带缓冲的输入函数:调用一个包装函数(rio_readlineb)从一个内部读缓冲区复制一个文本行,当缓冲区变空时,会自动调用read重新填满缓冲区。
    读取文件元数据
    • 应用程序能够通过调用stat和fstat函数,检索到关于文件的信息,有时也称为文件的元数据。

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

    • 问题1:C的标准I/O库与Linux I/O有什么关系
    • 解决方法:I/O分类:有两种I/O,一是文件I/O,而c语言的封装叫标准I/O。标准I/O是基于文件I/O的,标准IO调用了文件IO,也优化了文件IO,例如引入缓存机制。所以C标准I/O库函数在头文件stdio.h中声明,而read、 write等函数(文件I/O)在头文件unistd.h中声明 。linux中的C语言头文件存放在/usr/include下,可以打开查看具体定义。
  • 相关阅读:
    操作系统学习(一)、80x86保护模式内存管理
    Linux命令(十三) 建立目录 mkdir 删除目录 rmdir
    Linux命令(十二) 分割文件 split 合并文件 join
    Linux命令(十一) 显示文件类型 file
    linux下环境变量PS1设置
    Jenkins email-ext邮件通知模板
    building system busy, pls wait !!
    SCP 命令
    NDK Build 用法(NDK Build)
    android下m、mm、mmm编译命令的使用
  • 原文地址:https://www.cnblogs.com/cloud795/p/9906347.html
Copyright © 2020-2023  润新知