文章目录
程序的执行方式
顺序方式(*)
内存中只能驻留一个程序,前一个程序结束,后一个程序才能进来,并且有着严格的先后次序
顺序执行的特点:
- 顺序性:程序执行有着明确的先后顺序
- 封闭性:程序运行时独占所有资源
- 可再现性:初始条件相同,若程序执行顺序不变,则每次得到的结果一定相同
问题:
- 无法满足高性能
并发执行(***)
并发指一段时间内执行多个程序。多个程序同时进入内存,轮流交替执行。
并发执行的特点:
-
间断性:交替执行就是走走停停
-
失去了封闭性:程序不再独占系统资源
-
不可再现性:程序执行有多种结果。
并行执行
同一时刻有多个程序执行,只能在多处理机上实现
进程
进程是研究并发方式下,程序的执行。
进程的概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一一个独立单位。
进程实体:由程序段、相关数据段和PCB组成
进程的特征
- <mark>并发性</mark>, 多个进程在一段时 间内同存于内存中同时运行
- <mark>动态性</mark>,进程由创建而产生,由调度而执行,由撤消而消亡。
- 独立性,进程是能独立运行、资源分配、调度的基本单位。
- 结构性,进程映像由程序、数据、栈和进程控制块( PCB )构成。
- 异步性,进程按各自独立、不可预知的速度向前推进。
进程的状态
有三个状态:
- 就绪状态:指程序已经处于准备好运行的状态。
- 执行状态:指程序已经获得CPU,正在执行。
- 阻塞状态:指程序的执行因为某些原因无法继续执行。
进程控制块(PCB)
- 用来描述进程的基本情况和活动过程,进而控制和管理进程。(类似于学籍、户口等)
- 进程创建时会建立一个PCB,结束时会收回PCB
进程控制块中的信息:
- 进程标识符:包括内部标识符和外部标识符。
- 处理机状态:处理机状态包括通用寄存器、程序计数寄存器、程序状态寄存器、栈寄存器信息。
- 进程控制信息:程序栈和数据地址,同步和通信机制,资源清单,链接指针。
- 进程调度信息
进程控制块中的组织方式
-
线性方式
-
链接方式
-
索引方式
进程控制
-
进程控制用于创建、终止、阻塞和唤醒进程。
-
进程控制由操作系统内核原语来实现。
原语是由若干条指令组成,用于完成一定功能的一个过程,所有的指令要么全做,要么全不做。(一个函数)
用户态:具有较低特权的执行状态,进行执行规定的指令,访问特定的寄存器和存储区。
系统态(内核态):具有较高特权,能执行全部的指令,访问所有的寄存器和存储区。
进程的四个操作
进程的创建
引起进程创建的事件:
- 用户执行应用程序。
- 用户登录。
- 启动服务。
- 程序创建进程。
进程创建的过程(必须要求是原语):
- 申请空白PCB
- 为新进程分配资源,如内存空间等
- 初始化PCB
- 将进程插入就绪队列
进程的终止
引起进程终止的事件:
- 正常结束。
- 异常结束。
- 外界干预。
进程的终止过程:
-
检查进程状态。
-
有无子孙需要终止。
-
归还进程全部资源。
-
将PCB从进程中移除。
进程的阻塞和进程的唤醒
进程调度概念
处理机调度的层次:
- 高级调度
- 低级调度
- 中级调度
引起进程调度的事件:
- 进程终止。
- 进程创建。
- 进程阻塞。
- 进程唤醒。
- 外部设备中断。
进程切换时需要保存和恢复现场。
进程调度的方式
-
抢占式调度:允许调度程序根据某种原则,暂停某个占用处理机的进程,抢占已经分配出去的处理机。抢占的原则有优先权原则、短作业优先原则和时间片原则。
-
非抢占式调度:进程一旦获得处理机,只有在该进程任务完成或因某事件而阻塞时,才让出处理机,决不允许某进程抢占已经分配出去的处理机。(只有时间片用完才能调度)
衡量调度算法指标
面向用户(***):
- 平均周转时间:所有周转时间求平均。
- 带权周转时间:一个程序的周转时间除以服务的时间。(>=1)
- 平均带权周转时间:对带权周转时间求平均。
周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔。
面向系统:
- 吞吐量:在单位时间内系统所完成的作业数。
- 处理机利用率:在过去一 段时间内CPU被占用的时间总和。
- 各类资源的平衡利用率:保证系统所有的资源被合理利用。
进程调度算法(计算***)
先来先服务调度算法(***)
先来的进程先抢到CPU,有利于长作业,不利于短作业
短作业优先调度算法(***)
在分配时,优先分配给服务时间最短的,降低了系统的平均周转时间,对长作业不利。
只有在抢占的时候,进程的创建才会导致需要重新分配CPU,非抢占式在进程终止的时候分配。
非抢占方式:
抢占式:
高优先权调度算法(***)
按照优先权重分配CPU,优先数越小,优先权越大
高响应比优先调度算法
按照响应比去分配CPU资源,既考虑的作业的先后顺序,又优先照顾短作业,同时不会使长作业等太久
响应比 = 等待时间/服务时间
时间片轮转调度算法(***)
按照先来先服务的将作业放入一个调度队列中,每隔一定的时间片,发生一次调度,一般为10ms到100ms。
假设时间片为2。
多级队列调度算法
优先调度优先级高的
多级反馈队列调度算法
解决了低优先级队列长时间无法调度的问题
线程
为什么提出线程?
- 进程是资源的拥有者,在并发时,对进程的切换需要有较大时空的开销。
- 一个进程内全部线程都是在同一个地址空间进行,在并发时可以减少系统的开销。
线程概念:线程是进程的一个实体,是被系统独立调度的基本单位,只拥有少量的资源(如CPU寄存器资源)。
如下图所示,每个线程都会有个栈,一共有三个线程:
线程的特点:
- 一个线程拥有少量的资源,记录在线程控制块中。轻型实体,线程基本上不拥有资源,或者是有较少的资源;
- 一个进程的所有线程共享进程所拥有的全部资源。
- 线程是处理机调度的基本单位,多个线程可以并发执行。
线程与进程的比较:
线程的实现方式:
- 内核级线程:所有创建、切换等都需要内核的支持,开销较大(适合多处理器系统)
- 用户级线程:可以不需要进入内核态创建,但是切换进程需要进入内核(开销小)
- 组合方式:建立内核级线程与用户级线程的关系。