信息安全系统设计基础第十一周学习总结
第八章 异常控制流
ECF:(异常控制流)突变集合
平滑:顺序结构的指令
突变:跳转、调用、和返回等指令,不在同一栈
基本机制:ECF是操作系统用来实现I/O、进程和虚拟存器的基本机制 ECF是计算机系统中实现并发的基本机制
异常
控制流的突变
异常号:
系统为每种类型的异常分配的唯一的非负整数
异常表:
系统启动时操作系统就会初始化一张条转变,使得条目k包含异常k的处理程序的地址
用法:
从异常号到异常表的索引
类别:
中断:来自处理器外部的I/O设备的信号的结果,返回下一条指令
陷阱:陷阱是有意的异常,系统调用
故障:由错误状况引起,可能能够被故障处理程序修正
终止:通常是一些硬件错误
汇编常用调用方式:call
通过CALL后面参数的赋值实现不同类别的中断或陷阱
中断:call 21H(标准输出,引用的是IOS)
陷阱:call 函数名
进程
程序运行在进程上下文中
进程提供给应用程序的关键抽象:
一个独立的逻辑控制流:独占的使用处理器
一个私有的地址空间:独占的使用存储器系统
进程利用CPU方式:SFCF,SRT,RR,和多及调度(常用)
多及调度特点:
以时间片轮转进行进程安排
并发流
同时运行多个流
并行:两个流并发的运行在不同的处理机核或者计算机上
控制权限位:区别用户模式和内核模式
进程控制
每个进程都有一个唯一的正数进程ID(PID)
pid_t getpid(void); 返回调用进程的PID
pid_t getppid(void); 返回父进程的PID(创建调用进程的进程)
fork:
格式:pid_t fork(void)
调用一次,返回两次
exit:
格式:void exit(int status);
waitpid:
格式:pid_t waitpid(pid_t pid, int *status, int options);
成功返回子进程PID,如果WNOHANG,返回0,其他错误返回-1.
wait:
wait(&status)等价于waitpid(-1,&status,0).
pid_t wait(int *status);
sleep:
unsigned int sleep(unsigned int secs);
pause
int pause(void);
execve:
int execve(const char *filename, const char *argv[], const char *envp[]);
fork函数和execve函数的区别
fork函数是创建新的子进程,是父进程的复制体,在新的子进程中运行相同的程序,父进程和子进程有相同的文件表,但是不同的PID
execve函数在当前进程的上下文中加载并运行一个新的程序,会覆盖当前进程的地址空间,但是没有创建一个新进程,有相同的PID,继承文件描述符