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的功能,提交代码的编译,运行结果截图,码云代码链接。

  • 打开目录文件
  • 针对目录文件:
    --读取目录条目
    --显示文件名
  • 关闭文件目录文件

代码

运行结果

posted @ 2018-11-10 15:03  Maxeys  阅读(167)  评论(0编辑  收藏  举报