一、进程的概念
如何区分这三个QQ进程?》除了名称之外,OS使用pid来唯一标识进程
二、进程的组成
PCB当中存储的都是OS在对进程进行管理时候的有用信息
PCB是给OS使用的一个数据结构,而程序段和数据段是给进程自己使用的,PCB是进程存在的唯一标识
PCB存储在OS内核当中
三、进程的特征(理解)
四、进程的状态
阻塞态是进程主动让出CPU
阻塞态不能直接转化为运行态,因为他还缺少其他的运行资源
就绪态也不能直接转化为阻塞态,因为这需要进程主动让出CPU,而就绪态都没有CPU,怎么主动让出?
进程的组织方式:把进程按照不同的状态挂在不同的链表下
就绪态》运行态:进程被调度
运行态》阻塞态:进程等待IO等资源主动让出CPU
阻塞态》就绪态:IO处理完毕,等待的事件完成,由OS将其置为就绪态(被动)
运行态》就绪态:进程时间片结束,或者被其他高优先级的进程抢占
五、进程的切换
如何确保进程调度过程不被打断
原语是一种特殊的内核程序,本质就是关中断,从而不受外界的影响
进程控制(状态转换)过程需要一气呵成
关中断特权指令
执行完开中断之后,CPU会发现有之前的中断信号没有处理,就会再次去处理
以下内容理解为主:
作业指的是此时还在磁盘当中、没有放入内存的程序
开机之后其他所有进程都是装入进程launch来启动的,系统中的0号1号进程是最祖先的进程,其他的进程都是他的子进程
OS通过进程的PCB来保存和恢复它之前的运行环境
进程运行环境/进程上下文(context)就是进程运行过程中CPU寄存器当中保留的中间结果
六、进程间通信的方式:
通过加一个段表/页表项就可以实现了
进程Q的消息队列位于进程Q的PCB当中,它表达的是其他进程发给Q进程,需要被Q进程接受的消息
执行发送原语send之后,OS的内核接收到这条消息,并把这条消息挂到进程Q的消息队列当中去,再强调一遍:消息队列位于内核当中
接收的时候就遍历Q在内核当中PCB中的消息,判断是P发送的,就使用receive接收
这种直接通信的方式:发送和接收都是指名道姓地进行的
进程A通过系统调用向OS申请信箱A1和A2
间接通信方式并没有指名道姓要发给哪个进程,而是直接丢到A所申请的信箱里面去,到时候Q就指明从A信箱当中取消息就好了
管道通信就是循环队列,固定大小空间,先来先服务,数据流是单向的,只能从P流向Q,是一种半双工的通信方式,而共享存储支持随机存取