第八章 异常控制流
第八章 异常控制流
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,继承文件描述符
总结
本章内容相对较多,许多东西还是没有真正弄懂,很多函数的用法以及包装在里面的各个参数的用途以及作用都没有很好的把握,但是大致的构架已经很清楚了,加上其他课程的相辅相成,一些内容可以实现贯通,多计算机也有了一定的了解
参考资料:
课本
阎佳歆
---恢复内容结束---