1.进程控制
什么是进程控制?
如何实现进程控制:
为了避免把某一进程pbc从一个队列转移到另一个队列,但是并没有把pbc内的状态标志改为新的对应状态,从而导致pcb的状态标志与实际所处队列不一样这一情况发生,需要原语来实现进程控制。
当关中断指令被执行后,外部中断信号会被暂时地忽略掉,直到开中断指令被执行后,外部中断信号才会被得到执行。
进程控制相关原语:
(1)创建原语
(2)撤销原语
异常结束:比如整数除0等bug
外界干预:用户主动请求撤销进程,如windows任务管理器的杀进程
(3)阻塞原语
(4)唤醒原语
注意阻塞原语和唤醒原语应成对使用,何事引起阻塞就由何事唤醒。
(5)切换原语
进程控制知识总结:
2.进程通信
共享存储:
对共享空间访问互斥指的是当一个进程再往共享空间写数据时,其他进程是不允许访问的,只有该进程访问完共享空间后其他进程才可以访问
管道通信:
读进程最多只有一个,以防读错数据,如果有多个读进程的话,数据一旦被读错了就找不回来了。
消息传递:
进程通信知识总结:
3.线程概念和多线程模型
为什么要引入线程
为了实现同一个进程内的多种功能并发执行,比如qq一边视频聊天一边传送文件,所以引入了线程概念。
需要注意,打印机等系统资源是分配给进程的,而不是分配给线程的。
引入线程后带来的变化:
进程间的切换运行环境就好比在图书馆做不同科目的作业,切换到另一个科目要把目前在看的科目的课本和作业收好,拿出新的科目的课本和作业再开始做;而同一进程内的线程切换就好像做同一个科目的作业,只是换了一本练习册,至于笔记、课本等资源则可以继续共用,非常方便。
线程的属性:
切换不同进程间的线程,会引起进程切换,系统开销较大。
tcb = thread control block pcb = process control block
线程的实现方式:
(1)用户级线程
用户级线程对用户不透明 = 用户可以清楚看到线程的存在 对操作系统透明 = 操作系统看不到线程只能看到进程
(2)内核级线程:
内核级线程对用户和操作系统都不透明。
多线程模型:
(1)多对一模型
(2)一对一模型
(3)多对多模型
线程与多线程模型总结
4.处理机调度的概念和层次
调度的基本概念:
处理机调度的3个层次:
(1)高级调度(作业调度)
(2)中级调度(内存调度)
补充知识:挂起状态与七状态模型
(3)低级调度(进程调度)
只有保证进程调度的高频率执行,才能保证进程在宏观上是“同时”被执行的
三层调度的联系和对比:
处理机调度的概念和层次知识总结:
5.进程调度的时机、切换与过程、调度方式
进程调度的时机
如果进程还没退出临界区(需要访问的临界资源还没解锁)就进行进程调度,进程调度相关的程序也需要访问就绪队列,但就绪队列也处于上锁状态,因此进程调度无法顺利进行。
有一些临界资源比如打印机属于普通的临界资源,在打印机打印完成之前,进程一直处于临界区内,临界资源处于上锁状态,而打印机又属于慢速设备,如果一直不允许进行进程调度的话就会导致cpu一直空闲着,造成资源浪费。
有的系统中,只允许进程主动放弃处理机,而不允许进程在运行过程中被迫地剥夺处理机资源。而有的操作系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机。(被迫放弃)。由当前进程是否可以强行剥夺处理机资源,引出了进程调度的方式。
进程调度的方式
进程的切换与过程
广义的进程调度 = 狭义进程调度(选择一个进程) + 进程切换
知识回顾与重点
6.调度算法的评价指标
cpu利用率:cpu忙碌时间 / 总时间
系统吞吐量
周转时间
等待时间
响应时间
知识回顾与重点
7. 调度算法FCFS、SJF、HRRN
知识总览
先来先服务算法
短作业优先算法
非抢占式短作业优先算法
抢占式短作业优先算法(最短剩余时间优先算法SRTN)
高响应比优先算法
知识回顾
早期批处理系统很贵,所以不追求用户体验而是更追求系统性能。
8.调度算法 时间片轮转、优先级调度、多级反馈队列
知识总览
时间片轮转调度算法
增大程序响应时间:系统中有10个进程并发执行,如果时间片为1秒,则一个进程被响应最长可能需要等9秒。若用户在自己进程的时间片外通过键盘发出调试命令,可能需要等9秒才能被系统响应。
优先级调度算法
非抢占式优先级调度算法
抢占式优先级调度算法
多级反馈队列调度算法
如果有源源不断的短进程到来的话,被降到低优先级队列的长进程就有可能长期得不到服务而导致饥饿。
知识总览
8.进程同步、进程互斥
进程同步
进程同步机制:保证并发执行的各个进程的推进次序是按我们想要的顺序来依次推进的。
进程互斥
知识回顾
9.进程互斥的软件实现方法
知识总览
单标志法
若turn初值为0,而p1先上处理机运行,因为turn != 1满足条件,所以代码会一直卡在p1的进入区做死循环,无法跳过该段代码执行后续内容,p1进程无法访问临界区。
双标志先检查法
双标志后检查法
引发问题的关键就是进程并发执行的异步性。如果遇到了不一样的算法,要学会自己分析哪一部分代码是进入区,如果进入区要执行多个操作的话,有没有可能因为异步性的存在而产生问题。
有效理解peterson算法的关键,在于手动模拟各个进程并发执行过程中发生进程切换的情况,对各个进程的进入区代码进行排列组合。
perterson算法虽然集前三种算法之所长,但是仍未遵循让权等待原则。即使p0进程暂时无法进入临界区,但是依然会占用cpu运行while循环,造成忙等的现象。
知识回顾
10.进程互斥的硬件实现方式
知识总览
中断屏蔽方法
不适用于多处理机的原因是开/关中断指令只是针对单处理机的,假如处理机a执行了关中断指令,那处理机a上运行的进程就不会被中断,可以一直访问临界区。然而如果处理机b也做了类似的处理,就有可能出现两个处理机上的进程同时需要访问临界区的情况,违背了临界资源的互斥访问原则。
TestAndSet指令
Swap指令
知识回顾