信息安全系统设计与实现第六周:《Unix/Linux系统编程》第三章学习笔记
Unix/Linux进程管理
多任务处理原则
多任务处理
- 通过不同任务之间多路复用CPU的执行时间来实现,即将CPU执行操作从一个任务切换到另一个任务;
- 逻辑并行性称为“并发”;
- 多任务处理是所有操作系统的基础,也是并行编程的基础。
多任务处理系统(MT系统)
1.虚拟CPU;
2.init():当MT系统启动时,main()函数调用init()函数以初始化系统;
3.P0调用kfork()来创建优先级为1的子进程P1,并将其输入就绪队列中,然后P0调用tswitch(),将会切换任务以运行P1;
4.tswitch():实现进程上下文切换
SAVE函数:当正在执行的某个任务调用tswitch()时,会把返回地址保存在堆栈上,并在汇编代码中进入tswitch();
scheduler():在执行了tswitch()中的SAVE函数后,任务调用scheduler()来选择下一个正在运行的任务;
RESUME函数:当执行从scheduler()返回时,“运行”可能已经转而指向另一个任务的PROC;
5.kfork():kfork()函数创建一个子任务并将其输入readyQueue中。
进程
概念
- 进程是对映像的执行。
多任务处理系统内的进程
- 多任务处理系统支持动态进程创建、进程终止,以及通过休眠与唤醒实现进程同步、进程关系,以及以二叉树的形式实现进程家族树,从而允许父进程等待子进程终止。
进程的执行模式
- 内核模式Kmode
- 用户模式Umode
在Kmode模式下,通过将CPU的状态寄存器从K模式更改为U模式,可轻松切换至Umode;但Umode进程只能通过中断、陷阱、系统调用三种方式进入Kmode。
进程管理的系统调用
- fork
- wait
- exec
- exit
I/O重定向
I/O重定向原则
- 标准输入:如果用一个新打开的文件来替换文件描述符0,那么输入将来自该文件而不是原始输入设备。
- 标准输出:更改文件描述符1,指向打开的文件名,然后stdout的输出将会转到该文件而不是屏幕;同样也可以将stderr重定向到一个文件。