进程控制(原语)——随堂笔记

1.处理器的状态(CPU状态)
(1)CPU执行系统时的所处状态称为系统态(内核态)。
执行用户程序所处的状态称为用户态(目态)。
系统态有特权能执行全部指令,当执行用户态没有特权,只能执行部分指令。
高特权级可以访问地特权级,系统态的程序可以访问用户态的程序,用户态的程序不能访问操作系统,这是为了保护操作系统,不让用户随意访问。
2。原语(原子操作)
定义:有若干条指令,指令执行时不能被打断,一旦被打断,前面的操作就要撤销。
3。进程创建原语
(1)先分配一个pid—进程标识符,再分配一个空白PCB。
(2)为新进程和数据分配内存空间。
(3)初始化进程控制块。
(4)设置相应链接,尽力进程家族树。
在Linux内核中,进程创建函数fork对应的函数叫做do_fork(),获得进程pid,调用get_pid(),分配内存空间时涉及内存管理,初始化要对task_struct结构每个字段进行赋值。

4.进程的退出
(1)正常退出:执行结束
(2)异常退出:例如算数运算除数为0
(3)干预:调试,父进程观察子进程。

步骤:
(1)从PCB读取进程的状态。
(2)如果程序在运行,那么终止运行,设置调度标志。
(3)若有子进程,则给子进程找父母。
(4)将资源还给父进程或者系统。
(5)从就绪队列或运行队列中移除。

5.进程状态转换原语
(1)如果进程在运行的时候遇到输入输出,那么久调用阻塞原语
阻塞原语:(1)首先改变进程运行状态,从运行到阻塞。
(2)放弃CPU,CPU空闲,这时候调度程序从就绪队列选择一个进程,投入到运行队列里。
(2)如果进程拿到输入输出,调用唤醒原语,把进程从阻塞态变成就绪态
唤醒原语:(1)把进程从阻塞队里移除,投入就绪队列里。

猜你喜欢

转载自blog.csdn.net/qq_40240576/article/details/82873159