信息安全系统设计与实现第六周:《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重定向到一个文件。

管道编程

原文地址:https://www.cnblogs.com/ckx1212-20191308/p/15456019.html