2018-2019-1 20165325 《信息安全系统设计基础》第七周学习总结
2018-2019-1 20165325 《信息安全系统设计基础》第七周学习总结
一、学习笔记
1、异常控制流
发生在计算机系统的各个层次,是计算机系统中提供并发的基本机制。
2、异常
- 在硬件层,异常是由处理器中的事件触发的控制流中的突变。控制流传递给一个软件处理程序,该处理程序进行一些处理,然后返回控制给被中断的控制流。
- 有四种不同类型的异常:中断、故障、终止和陷阱。
- 当一个外部设备I/O设置了处理器芯片上的中断管脚时,中断会异步地发生。
- 控制返回到故障指令后面那条指令。
- 一条指令的执行可能导致故障和终止同时发生。
- 故障处理程序会重新启动故障指令,而终止处理程序从不将控制返回给被中断的流。
3、Linux信号处理
- 可以用signal()处理信号:通过把处理程序的地址传递到signal函数从而改变默认行为,这叫设置信号处理程序。执行信号处理程序被称为处理信号。
- 一个信号最多只能被接收一次:每种类型最u多只能有一个未处理的信号,如果两种类型k的信号发给同一个目的进程,第二个信号就简单的被遗弃了。
- kill函数发送信号号码sig给进程pid,kill(1)用来发送信号。
- 可以通过键盘发送信号。
- 可以用sigaction()处理信号。
4、exec系列函数
- 不能用char[][] 来传递argv。
- 结尾的0(null)无法处理。
- 进程调用了exec系列函数后,代码会改变。
- system=fork+exec+wait。
- exec系列函数中带e的要传入环境变量参数。
5、wait类系统调用
- wait(&status) 等价于waitpid(-1, &status, 0):调用wait(&status)等价于调用waitpid(-1,%status,0)
- 如果一个父进程终止了,内核会安排init进程成为他的孤儿进程的养父。
- 父进程中执行waitpid,等待集合中的任一子进程结束了才返回:waitpid挂起调用进程的执行,直到他的等待集合中的一个子进程终止。
- 子进程中的退出状态在wait的status参数返回:如果statusp参数是非空的,那么waitpid就会在status中放上关于导致返回的子状态信息。
3、其他
- C语言通过longjmp、setjmp函数提供非本地跳转;
- Unix/Linux中通过调用fork()可以获取子进程PID。
- Unix/Linux中通过调用getppid()获取父进程ID。
二、班课作业
1、作业1
作业要求
使用man ls查看ls的帮助手册,通过实践搞清楚ls各种参数对应的功能并提交实践截图。
ls –a?
ls –lu?
ls –s?
ls –t?
ls –F?
ls –i ?
ls –R?
运行结果
2、作业2
作业要求
参考伪代码实现ls的功能,提交代码的编译,运行结果截图,码云代码链接。
- 打开目录文件
- 针对目录文件:
--读取目录条目
--显示文件名 - 关闭文件目录文件
代码
运行结果