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

教材知识点总结

异常控制流

  • 介绍:现代系统通过使控制流发生突变来对异常情况作出反应,这些突变称为异常控制流。

    • 异常:异常控制流的一种形式,一部分由硬件实现,一部分由操作系统实现。

    • 异常处理的三种情况

      • 处理程序将控制返回给当前指令Icurr,当事件发生时正在执行的指令。

      • 处理程序将控制返回给Inext,如果没有发生异常将会执行的下一条指令。

      • 处理程序终止被中断的程序。

    • 异常表:

    • 异常的剖析:

    • 异常与过程调用的不同之处:

      1、过程调用时,在跳转处理程序之前,处理器将返回地址压入栈中。根据异常的类型,返回地址要么是当前指令,要么是下一条指令。

      2、处理器也把一些额外的处理器状态压到栈里,在处理程序返回时,重新开始执行被中断的程序会需要这些状态。

      3、如果控制从用户转移到内核,所有的这些项目都被压到内核栈中,而不是压到用户栈中。

      4、异常处理程序在内核模式下。

    • 异常的类别

      • 中断:异步发生,来自处理器外部的I/O设备的信号的结果。

      • 陷阱:有意的异常,是执行一条指令的结果。

      • 故障:故障由错误情况引起,它可能被故障处理程序修正。

      • 终止:终止是不可恢复的致命错误造成的结果,通常是一些硬件错误。

      • 异常属性表:

    • Linux/x86-64

      • 除法错误:除零,或结果对于目标操作数来说太大。

      • 一般保护故障:程序引用已给未定义的虚拟内存区域。

      • 缺页:重新执行产生故障的指令。

      • 机器检查:检测到致命的硬件错误。

      • 属性表:

    • 系统调用:C程序用syscall函数可以直接调用任何系统调用。

进程

  • 定义:一个执行中程序的实例

  • 进程控制

    • 获取进程ID:getpid函数返回调用进程的PID,gettpid返回的是它的父进程的PID。

        pid_t getpid(void);
        pid_t getppid(void);
  • 创建和终止进程:

    • 进程的三种状态:

      1、运行:进程在CPU中或等待被执行。

      2、终止:进程永远地停止。

      3、停止:进程的执行被挂起,且不会被调度。

    • fork函数创建一个新的运行的子进程:

        pid_t fork(void);

      调用一次,返回两次。

课上任务

  • 参考伪代码实现ls的功能,提交代码的编译,运行结果截图

  • 相关知识点:

    • 函数 DIR opendir(const char pathname),即打开文件目录,返回的就是指向DIR结构体的指针。
    • 通过readdir函数读取到的文件名存储在结构体dirent的d_name成员中。
    • 参考了上学期Java学习搭档的代码如下:

    • 运行结果:

  • 实现ls -l 的功能,提交测试截图

  • 相关知识点:

    • dirent结构体:

    • stat结构体:

运行截图:

猜你喜欢

转载自www.cnblogs.com/Gst-Paul/p/9943344.html