2018-2019-1 20165320 《信息安全系统设计基础》第七周学习总结
Posted gst-paul
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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结构体:
运行截图:
以上是关于2018-2019-1 20165320 《信息安全系统设计基础》第七周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
2018-2019-1 20165320 《信息安全系统设计基础》第一周学习总结
2018-2019-1 20165320 《信息安全系统设计基础》 缓冲区溢出漏洞实验