操作系统之进程与线程

进程

概念

定义:进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和运行调度的基本单位

目的

刻画系统的动态性,发挥系统的并发性

解决共享性,正确描述程序的运行状态。

进程与程序的区别

进程是一个动态概念,而程序是一个静态概念

进程具有并发性

进程间会相互制约

进程与程序之间存在多对多关系

进程的特征

动态性(由创建而产生,由调度而执行,由事件而等待,由撤销而消亡),并发性,独立性,异步性,结构性(数据+程序+控制结构)

进程控制块PCB(进程存在的唯一标志)

标识信息(用于唯一地标识一个进程),现场信息(主要由寄存器构成,记录当前信息),调度信息(进程调度和进程对换的相关信息),控制信息(用来管理进程)。

进程控制块的组织方式

线性方式:根据操作系统内进程最大数目,静态的分配主存中的某块空间。

链接方式:利用链接指针将同一状态的进程控制块链接为一个队列。

索引方式:建立若干个索引表,记录不同状态进程的PCB地址。

操作系统在进程管理方面的工作

进程控制——进程创建,进程撤销,进程的状态切换。

进程通信——协调多个进程,合作完成一个任务。

进程同步——通过进程的互斥或同步,对进程的运行进行协调。

进程调度——分配CPU给进程。

进程控制

进程创建的原因:用户登录,提供服务,作业调度,应用请求。

创建进程的过程:申请空白PCB,分配地址空间,分配主存外其他资源,初始化PCB,插入到相应对列

进程终止的原因有正常终止和非正常终止(14种)

进程终止的过程:若正在运行,则立即停止,重新调度;回收子进程的资源,并终止子进程;在队列中移除进程标识号;回收PCB。

三状态模型

执行态:进程占用处理器并执行

就绪态:具备执行条件,等待处理器运行。

阻塞态(等待态):不具备执行条件,等待某个事件完成。

五状态模型

新建态:进程刚建立,还没有被OS提交到可运行进程对列。

终止态:进程结束后被OS从可执行队列中释放。

七状态模型

挂起就绪态:具备运行条件,存储在辅助存储器中,当进程被兑换到储存时,才能调度执行。

挂起阻塞态:进程在辅助存储器等待某一事件发生。

状态转换

就绪态-执行态,执行态-就绪态,执行态-阻塞态,阻塞态-就绪态

新建态-就绪态,执行态-终止态

阻塞态-挂起阻塞态,挂起阻塞态-挂起就绪态,挂起就绪态-就绪态,就绪态-挂起就绪态,挂起阻塞态-阻塞态,执行态-挂起就绪态,新建态-挂起就绪态

 

 

线程

定义:

进程的组成部分,可独立调度和指派的执行单元。

线程的组成:线程控制块(TCB,线程的唯一标识符),独立的程序计数器,核心栈(函数调用时返回地址),私有存储区(存放局部变量和用户栈)。

状态:就绪状态,运行状态,阻塞状态

特征

是进程中的一个相对独立的运行单元。

是操作系统中的基本调度单位。

在线程机制中,以线程作为调度单位

一个进程中至少包含一个线程。

只共享进程所拥有的资源。

可以创建其他线程,有生命周期,状态变化。

进程与线程的区别

资源方面:线程只能访问所属进程的资源

调度方面:一个进程中的线程切换到另一个进程中的线程时,会引起进程间的切换。

并发性方面:一个进程内的多个线程之间可以并发执行。

系统开销方面:线程切换时只需要少量寄存器,时空开销很小。

处理器调度

作业:一个比程序更广泛的概念,包含程序和数据,还有作业说明书。

特点:在批处理系统中以作业为基本单位从外存调入内存。

作业通常分成若干个相对独立,相互关联的加工步骤,每个步骤称为一个作业步

作业一般经历提交,后备,执行,完成四个状态。

分类:I/O繁忙型,CPU繁忙型

低级调度(进程调度,短程调度)

决定哪个就绪进程得到处理器

主要功能:

1.选择就绪进程:根据进程的优先级和资源使用情况

2.进程切换

主要方式:

1. 非抢占方式,当某个进程主动结束之后,才将处处理器分配给其他进程

2. 抢占方式,强制结束当前进程,执行其他进程

中级调度(内存调度)

是进程在内存和外存之间的兑换

在内存空间紧张时,可以将不能运行的进程换到外存上等待。

在虚拟存储管理系统中,进程只有被中级调度选中才有资格占用主存。

高级调度(作业调度,长程调度)

根据算法将外存上处于后备作业队列中的作业调入内存,为其分配资源和建立相应进程。决定哪些作业可以进入内存,参与资源竞争。

调度算法的目标:

1.面向用户:周转时间短,响应时间快,截止时间保证,优先权。

2.面向系统:资源利用率高,主要指标为CPU利用率(有效工作时间除以总的运行时间),系统吞吐量大,公平性

批处理作业调度

1.先来先服务(FCFS)

非剥夺式调度算法,易实现效率不高。

不利于短作业而优待长作业。

只考虑等待时间,而未考虑运行时间的长短。

2.短作业优先调度算法(Short job first,SJF)

对长作业不利

完全没考虑作业的紧迫程度。

作业的长短是根据用户提供的数据估计的,所以并不一定能做到真正的短作业优先。

3.高响应比调度算法(HRRN)

交互系统进程调度

1.时间片轮转调度算法(Round Robin,RR)

当前进程在时间片内未完成的话,将切换成就绪队列中的第一个进程。

是一种抢占式调度算法。

是分时系统中采用的调度算法。

时间片过短,进程切换耗费资源时间。时间片过长,则退化为FCFS。

2.优先级调度算法

当发生调度时,调度当前处于就绪队列中优先级最高的进程

非抢占式优先级调度方式:就绪队列中优先级最高的进程将获得CPU的使用权,直到进程完成。

抢占式优先级调度方式:优先级更高的进程获得CPU使用权。

静态优先级:静态优先数在进程创建时固定。

动态优先级:动态优先数随进程的推进而动态改变。

3.多级反馈队列调度算法

实时系统进程调度

所需基本信息:

就绪时间——任务成为就绪态所需的时间。

开始截止时间和完成截止时间,一般只需要知道一个。

任务执行时间,执行时所需资源

实时任务的优先级

子任务结构

处理器利用率:

值越接近1时效率最大。大于1时,调度算法失效。

经典实时调度算法——最早截止时间优先调度算法(EDF):根据实时任务的开始截止时间确定任务的优先级,截止时间越早,优先级越高。

线程调度

用户级线程调度:在用户态下创建,系统内核并不知道线程的存在。

核心级线程调度:在核心支持线程技术的系统中,内核直接调度线程

区别:

用户级线程切换只需要少量机器指令,速度快。核心级线程间切换需要完整的进程上下文切换。

用户级线程可为某用户态程序定制线程调度程序,比内核更好地满足用户态程序需要。

名词解释:

前趋图:一个有向无循环图,有初始节点,终止节点,直接前屈,直接后继

程序顺序执行的特征:顺序性,封闭性,可再现性。

程序并发执行的特征:间断性,失去封闭性,不可再现性。

周转时间:作业提交给系统到作业完成为止的这段时间间隔。

响应时间(从提交一个请求到开始接受响应之间的时间)=等待时间+服务时间

截止时间:某任务必须开始执行的最迟时间

周转时间=完成时间-到达时间。

带权周转时间=周转时间%服务时间。

响应比=响应时间/服务时间

因果转换:一个进程转换的发生会引起另一个进程转换的发生。

小提一嘴(了解)

进程的阻塞,唤醒,挂起,激活步骤

中断处理和调度过程

线程的分类:用户级线程,内核级线程

在多道批处理系统中,系统为每个作业设置了一个作业控制块(JCB),方便管理和调度作业。

超线程技术HT

在最高优先级调度算法中,那些具有相同优先级的进程分配CPU的次序为FCFS

操作系统的作业管理是一种宏观的高级管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值