程序:就是一个指令序列
早期的计算机(只支持单道程序)
多道程序技术
1.为了方便操纵系统管理,完成各程序并发执行,引入了进程,进程实体的概念。
2.系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
一般情况下,我们把进程实体就简称为进程。
例如,所谓创建进程,实际上是创建进程实体中的PCB,而撤销进程,实质上是撤销进程实体中的PCB。
从不同的角度,进程,可以有不同的定义,比较传统典型的定义有
1.进程是程序的一次执行过程
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动,
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和跳读的一个独立单位。
动态性
进程是进程实体的运行过程,是系统进行资源和分配和调度的一个独立单位。
进程实体和进程并不一样,进程是动态的,进程实体是静态的。
当进程切换时,需要把进程当前的运行情况记录下来保存在PCB中。
进程的特征
什么是进程控制?
这种不可被中断的操作即为原子操作。
原语采用“关中断指令”和“开中断指令”
显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。
进程控制会导致进程状态的转换,无论哪个原语,要做的无非三类事情
1.更新PCB中的信息(修改进程状态标志,将运行环境保存到PCB,从PCB恢复运行环境)
2.将PCB插入合适的队列
3.分配回收资源
1.分时系统中用户登录成功,系统会创建一个新的进程
2.多道批处理系统中,有新的作业放入内存中,会为其建立一个新的进程。
3.用户向操作系统提出某些请求时,会新建一个进程处理该请求
4.由用户进程主动请求创建一个子进程
多线程模型
在进入进程之前,系统中各个程序只能串行执行,一边运行QQ,一边听音乐不可能实现,
进程是程序的一次执行,但这些功能是显然不可能是由一个程序顺序处理就能实现的。
引入线程增加并发度
线程是一个基本的CPU执行单位,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,从而进一步提升了系统的并发度,使得一个进程也可以并发处理各种任务
引入线程后,进程只作为除CPU之外的系统资源的分配单位(如打印机,内存地址空间)
传统的进程间并发,需要切换进程的运行环境,系统开销很大
线程间并发,如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小
引入线程后,并发程度高,系统开销小。
进程的属性
1.线程是处理机调度单位
2.多CPU计算机中,各个线程可占用不同的CPU
多对一模型:多个用户及线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。
优点:线程切换在用户控件即可完成,不需要切换到核心态,线程管理空间开销小,效率高。
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高,多个线程不可在多个处理机上运行并行
一对一模型:
一个用户级线程映射到一个内核级线程。每个用户有与用户级线程同数量的内核级线程。
优点:当一个线程被阻塞后,别的进程还可以继续执行,并发能力强
缺点:一个用户进程会占用多个内核级线程。线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。
多对多模型:n用户级线程映射到m个内核级线程(n>=m).每个用户进程对应m个内核级线程。
克服了多对一模型并发度不高的缺点,又客服了一对一模型中,一个用户进程占用太多内核级线程,开销太大的缺点。
2.2 处理机调度
高级调度(作业调度)。按一定的原则从外存上处于后备队列的作业中(或多个作业)。给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权利
作业调入时建立相应的PCB,作业调出时才撤销PCB.
引入虚拟技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存少有空闲时,再重新调入内存。
暂时调到外存等待的状态称为挂起状态,值得注意的是,PCB并不会一起调到外存,而是会常驻内存,PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持各个进程的监控。
“狭义的进程调度“和”进程切换“的区别
狭义的进程调度值的是从就绪的队列中选择一个要运行的程序。
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
广义的进程调度包括选择一个进程和进程切换。
进程切换
1.对原来运行进程各种数据的的保存
2.对新的数据各种数据的恢复 (如果切换过于频繁,会使整个系统效率降低)
周转时间->平均周转时间,带权周转时间,平均带权周转时间,
CPU利用率=忙碌的时间/总时间
系统吞吐量:单位时间内完成作业的数量
系统吞吐量:共完成多少道作业/总完成多少时间
周转时间:完成时间-提交时间
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,故不计入等待时间。
对于作业来说,不仅要考虑建立进程后等待时间,还要加上作业在外存后备队列中等待的时间
响应时间,指从用户提交请求到首次产生响应所用时间。
Tips:各种调度算法
1.算法思想
2.算法规则
3.这种调度算法是用于作业调度还是进程调度?
4.抢占式,非抢占式?
5.优点和缺点
6.是否会导致几个->某进程长期得不到服务
算法思想:主要从”公平“的角度考虑
算法规则:安装作业/进程到达的先后顺序进行服务
用于作业/进程调度 :
用于作业/进程调度时,考虑的是哪个队列先到达后备队列,用于进程调度时考虑