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


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

    教材内容总结

    命令总结

    • man -k +函数名:搜索函数信息
    • man +数字+函数:一般接在man -k + 函数名后,数字为函数所在卷章号。
    • man -k key1 | grep key2| grep key3 : 根据关键字检索系统调用
    • cat+文件名称:查看文本文件内容
    • od +文件名称:查看二进制文件内容
    • grep -nr XXX /usr /include:查看XXX在哪个文件夹中定义

    重要知识点

    • I/O:在主存和外部设备(例如磁盘存储器、终端和网络)之间复制数据的过程。
    • 输入操作:从I/O设备复制数据到主存。
    • 输出操作:从主存复制数据到I/O设备。

    系统级I/O

    输入/输出(I/O)是在内存和外部设备之间复制数据的过程。输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备。

    Unix I/O

    一个Unix文件就是一个m个字节的序列:B0,B1,B(k),B(m-1),所有的I/O设备,如网络、磁盘和终端,都被模型化为文件,而所有的输入和输出都被当做对相应的文件的读和写来执行。这种将设备优雅的映射为文件的方式,允许Unix内核引出一个简单的、低级的应用接口,称为Unix I/O

    • 打开文件。一个应用程序通过要求内核打开相应的文件,来宣告它想要访问一个I/O设备。内核返回一个小的非负整数,叫做描述符,它在后续对此文件的所有操作中标示这个文件。
    • Linux shell创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)和标准错误(描述符为2)。头文件<unistd.h>定义了常量STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,可用来代替显式的描述符值
    • 改变当前文件的文件位置。对于每个打开的文件,内核保持着一个文件位置k,初始为0.这个文件位置是从文件开头起始的字节偏移量。
    • 读写文件:一个读操作就是从文件拷贝n>0个字节到存储器。写操作就是从存储器拷贝n>0个字节到一个文件。
    • 关闭文件:当应用完成了对文件的访问之后,它就通知内核关闭这个文件。作为响应,内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。无论一个进程因为何种原因终止时,内核都会关闭所有打开的文件并释放它们的存储器资源。

    文件

    • 普通文件:包含任意数据。
      • 文本文件:只含有ASCII或Unicode字符的普通文件
      • 二进制文件:所有其他文件。
    • 目录:包含一组连接的文件。
    • 套接字:用来与另一个进程进行跨网络通信的文件。
    • 路径名:
      • 绝对路径名:以一个斜杠开始,表示从根节点开始的路径。
      • 相对路径名:以文件名开始,表示从当前工作目录开始的路径。

    打开和关闭文件

    • [x] 打开或创建新文件:
    • open函数:格式如图所示
      • filename:文件名
      • flags参数:
      • mode参数:指定了新文件的访问权限位
    • [x] 关闭打开的文件:
    • close函数:格式如图所示

    读和写文件

    • read函数:从描述符为fd的当前文件位置复制最多n个字节到内存位置buf。返回值表示的是实际传送的字节数量。
    • write函数:从内存位置buf复制至多n个字节到描述符fd的当前文件位置。

    读取文件元数据

    • stat和fstat函数:检索到关于文件的信息(文件的元数据)。

    • stat函数:以文件名作为输入,并填写stat数据结构中的各个成员。

    • fstat函数:以文件描述符作为输入。

    用RIO包健壮地读写

    • RIO包主要提供:
      • 无缓冲的输入输出函数:用于将二进制数据读写到网络和从网络读写二进制数据。
      • 带缓冲的输入函数:用于从文件中读取文本行和二进制数据。
    • rio_readnb:rio_readn带缓冲区的版本。
      • rio_readinitb函数:从文件rp读出下一个文本行(包括 ),将它复制到内存位置usrbuf,并且用null字符来结束这个文本行,使用格式如图所示。
    •     RIO读程序的核心是rio_read函数

     

    读取目录内容

    以readdir系列函数来读取目录的内容。

    • opendir函数: 以路径名为参数,返回指向目录流的指针。

    • readdir函数:调用返回指向流dirp中下一个目录项的指针,如果没有更多目录项则返回null。
    • closedir函数:关闭并释放其所有资源。

    共享文件

    内核用三个相关的数据结构来表示打开的文件

    • 描述符表:它的表项是由进程打开的文件描述符来索引。
    • 文件表:所有的进程共享这一张表。
      • v-node表:
        • 没有共享文件,并且每个描述符对应一个不同的文件。
        • 多个描述符也可以通过不同的文件表表项来引用同一个文件。

     

    上周错题总结

    20
    (多选题|1分)
     

    有关RAM的说法,正确的是()

     
    A.

    SRAM和DRAM掉电后均无法保存里面的内容。

    B.

    DRAM将一个bit存在一个双稳态的存储单元中

    C.

    一般来说,SRAM比DRAM快

    D.

    SRAM常用来作高速缓存

    E.

    DRAM将每一个bit存储为对一个电容充电

    F.

    SRAM需要不断刷新

    G.

    DRAM被组织为二维数组而不是线性数组

     
    正确答案: A C D E G
     
    你的答案: A C D E
  • 相关阅读:
    软件工程第一次作业(2)
    软件工程第一次作业
    TR111与STUN
    定制自己的ubuntu 镜像文件 (remastersys, respin, USB live CD)
    上层认证的安全协议 __〈无线局域网安全务实:WPA与802.11i〉读书笔记
    接入控制层的安全协议 __〈无线局域网安全务实:WPA与802.11i〉读书笔记
    WEP 协议__<无线局域网安全务实:WPA与802.11i〉读书笔记
    Python re模块中search与match的区别
    python中如何使用shell命令, 及python 与shell 中的变量相互通信
    sed命令简介及在sed命令中使用变量的方法
  • 原文地址:https://www.cnblogs.com/hjwzzj/p/9905723.html
Copyright © 2020-2023  润新知