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

教材学习内容总结

一、异常

1、异常是异常控制流的一种形式,它一部分由硬件实现,一部分由操作系统实现。异常是控制流中的突变,用来响应处理器状态中的某些变化。

2、异常处理程序完成后会发生的情况:

      1)处理程序将控制返回给事件发生时正在执行的指令

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

      3)处理程序终止被中断的程序

3、异常分为四类:中断、陷阱、故障、终止

 

4、C程序用syscall函数可以直接调用任何系统调用。在x86-64系统上,系统调用是通过一条称为syscall的陷阱指令来提供的。

5、syscalls n指令允许用户对内核服务受控访问,即用户请求服务n。执行syscalls会导致异常处理程序的陷阱。

 

二、进程

 1、进程的经典定义:一个执行中程序的实例

 2、一个逻辑流的执行在时间上与另一个流重叠,称为并发流。多个流并发地执行的一般现象被称为 并发 ,一个进程和其他进程轮流运行的概念称为 多任务 ,一个进程执行它的控制流的一部分的每一时间段叫做 时间片 ,多任务也叫做 时间分片

3、进程总是处于下面三种状态之一:运行、停止、终止。

4、并发流:两个流在时间上重叠,即使它们是运行在同一个处理器上;

     并行流:是并发流的一个真子集,如果两个流并发地运行在 不同的处理器核或者计算机上。

5、调度是由内核中称为调度器的代码处理的。在内核调度了一个新的进程运行后,它就抢占当前进程,并使用一种称为上下文切换的机制来将控制转移到新的进程。

     1) 保存当前进程的上下文

     2) 恢复某个先前被抢占的进程被保存的上下文

     3) 将控制传递给这个新恢复的进程。

三、进程创建和控制的系统调用及函数使用

1、fork

使用 man fork 查看帮助:需要包含的头文件是#include <unistd.h>。

运行老师的代码 ,结果如下:

 

 

 

 

 

 

 

2、exec

事实上,在这6个函数中真正的系统调用只有execve,其他5个都是库函数,他们最终都会调用execve这个系统调用。

运行老师给的代码,如下:

 

 

 

3、wait

调用wait(&status)等价于调用waitpid(-1,&status,0)。

运行老师给的代码,如下:

 

 

 

4、getpid,getppid

每个进程都有一个唯一的正数(非零)进程ID(PID).getpid函数返回调用进程的PID。getppid函数返回它的父进程的PID(创建调用进程的进程)。getpid和getppid函数返回一个类型为pid_t的整数值,在Linux系统上它在types.h中被定义为int。

 

5、exit

从程序员的角度,我们可以认为进程总是处于下面三种状态之一:运行、停止、终止。

进程会因为三种原因终止:1.收到一个信号,该信号的默认行为是终止进程,2.从主程序返回,3.调用exit函数。

exit函数以status退出状态来终止进程。

 

四、数组指针、指针数组、函数指针、指针函数的区别

1、数组指针是一个指针,该指针指向的是一个数组;

2、指针数组是一个数组,数组的元素保存的是指针;

3、函数指针是一个指针,该指针指向一个函数;

4、指针函数是一个函数,该函数返回的是一个指针。

 

五、理解信号机制:kill,alarm,signal,sigaction

1、用kill函数发送信号,进程通过调用kill函数发送信号给其他进程。

 

2、 用alarm函数发送信号,进程可以通过调用alarm函数向他自己发送SIGALRM信号。

 

 3、signal

 

 

教材学习中的问题和解决过程

1、在使用exec函数族时,一定要加上错误判断语句。因为exec很容易执行失败,其中最常见的原因有:

     1) 找不到文件或路径,此时errno被设置为ENOENT。

     2) 数组argv和envp忘记用NULL结束,此时errno被设置为EFAULT。

     3) 没有对用可执行文件的运行权限,此时errno被设置为EACCES。

 

上周考试错题总结

关于open(2),下面说法正确的是( )
:
A . flag 参数中O_RDONLY,O_WRONLY,O_RDWR至少要有一个

B . O_RDONLY|O_WRONLY == O_RDWR

C . fd=open("foo.txt",O_WRONLY|O_APPEND,0),调用write(fd,buff,n)写入foo.txt的数据不会破坏已有数据。

D . fd=open("foo.txt",O_WRONLY|O_APPEND,0644),必将导致其他人不能写foo.txt

错误答案:AB  正确答案:AC

解析:
umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限),默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的

 

Linux中下列概念中可以用Unix I/O处理的是()
:
A . 普通文件

B . 设备文件

C . 目录

D . 套接字

错误答案:ABC  正确答案:ABCD

 解析:

套接字也是可以用Unix I/O处理的。

 

posted @ 2020-11-01 18:24  yunding  阅读(80)  评论(0)    收藏  举报