1.进程与线程
1.1进程的概念和特征
1.1.1进程概念
进程:为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。
进程控制块:为了使参与并发执行的程序能独立地运行,必须为之配置一个专门的数据结构
进程创建实质:创建进程映像中的pcb
进程撤销实质:是撤销进程中的pcb
特点:
pcb是进程存在的唯一标志
进程是程序的一次执行过程
进程是一个程序及其数据在处理机上顺序执行时所发生的活动
进程是具有独立功能的程序在一个数据集上运行的过程,它是系统进行资源分配和调度的一个独立单位
1.1.2进程的特征
进程的基本特征有:
动态性:具有创建,活动,暂停,终止等过程,具有一定的生命周期,是动态地产生,变化和消亡的。
并发性:多个进程同时存在于内存,能在一段时间同时运行。并发执行有利于提高资源利用率
独立性:进程实体是一个能独立运行,独立获得资源和独立接受调度的基本单位。没有创建pcb的程序,都不能作为一个独立的单位参与运行。
异步性:由于进程的相互制约,使得进程具有执行的间断性。(即大家一起同时跑到一个售票台乱糟糟不排队争抢着拿票),异步性会导致执行结果不可再现性。
结构性: 每个进程都配置一个pcb对其进行描述。从结构上看,进程实体是由程序段,数据段和进程控制段三部分组成。
2.1.2进程的状态与转换
1. 运行态:
进程正在处理机上运行。
2. 就绪态:
进程处于准备运行的状态,即进程获取到处理机外的一切资源,一但得到处理机即可运行。
3. 阻塞态:
等待态,进程正在等待某一事件而暂停运行。
4. 创建态:
进程正在被创建,尚未转到就绪状态。创建过程:申请一个空白PCB,并向PCB中填写一些控制和管理进程的信息,然后由系统为该进程分配运行时所必须的资源,最后进程就会进入就绪态。(勇士打关卡,首先拿到一个可以嵌入增强宝石的宝剑,然后通过不断冒险,获取到游戏规则给与的宝石奖励,最后通过关卡进入下一个关卡。)
5.结束态:
进程正从系统中消失,进程正常结束或其他原因中断退出运行。
2.1.3进程控制
功能:对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已经有的进程,实现进程状态转换。
1. 进程的创建:
2.进程终止
进程终止分类:正常程序运行结束,异常程序结束
进程终止的过程:
3. 进程的阻塞和唤醒
阻塞过程:
唤醒过程:
4. 进程切换:
进程切换的过程:
2.14进程组织:
进程组织包括:进程控制块pcb,程序段,数据段
1. 进程控制块:
PCB是进程的唯一标志,进程创建的过程:
系统为进程创建一个PCB,进程执行时,通过PCB了解创建的进程的状态信息,以便对进程进行控制和管理。进程结束时,系统收回进程的PCB,就宣布该进程消亡。
(类比:一个人出生,就需要办理出生证明身份证明,然后公安机关或其他社会的机构通过你的身份证去了解你的基本信息。如果当一个人死亡了,政府或社会其他机构就会宣布你的死亡,给你打上死亡证明,取回你的基本身份证销毁你的在世的信息有效性)
PCB包含内容:
进程描述信息:进程标识符PID,用户标识符UID
进程控制和管理信息:进程当前状态,进程优先级,代码运行入口地址,程序的外存地址,进入内存时间,处理机占用时间,信息量使用
资源分配清单:代码段指针,数据段指针,堆栈段指针,文件描述符,键盘,鼠标
处理机相关信息:通用寄存器值,地址寄存器值,控制寄存器值,标志寄存器值,状态字
2.程序段:
能被进程调度到CPU执行的程序代码段(进程打工仔,程序工作量,操作系统是经理,你·是老板)
3.数据段
数据段可以是程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果
2.15进程通信
1. 共享存储
低级方式的共享是基于数据结构共享
高级方式的共享是具于存储区的共享
2.消息传递
直接通信方式:
发送进程直接把消息发送给接收进程
间接通信方式:
发送进程把消息发送到某个中间实体,接收进程从中间实体(信箱)取得消息。
3.管道通信
管道通信是消息传递的一种特殊方式,管道一个连接读写进程的一个共享文件(pipe)
向管道提供输入的发送进程,以字符流形式将大量数据送入写管道,而接收管道输出的接收进程则从管道中接收数据。
2.16线程概念和多线程模型
1. 线程的基本概念
线程与进程类型,线程应该说是进程的子集,由线程id,程序计数器,寄存器集合和堆栈组合,线程是进程中的一个实体,线程不具备系统资源,线程与其他线程共享同一个进程的资源。
2.线程与进程的比较
调度:线程是独立调度的基本单位,进程是拥有资源的基本单位
拥有资源:线程不拥有资源,进程拥有资源
并发性:进程和线程都可以进程并发运行,提高操作系统的吞吐量
系统开销:进程开销比线程开销大,因为进程的创建销毁等过程都需要资源分配与回收所有开销比较大一些
地址空间和其他资源:进程的地址空间之间互相独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见
通信:进程间通信IPC需要进程同步和互斥手段辅助,以确保数据一致性,线程间可以直接读写进程数据段来进程通信(类似于邻居与邻居之间的交流需要协同场景背景之后才能交流,家里人与家里人交流就不需要交流背景)
3.线程的属性
线程是一个轻型实体,它不拥有系统资源,每个线程应有一个唯一的标识符和线程控制块
不同的线程可以执行相同的程序
同一进程中的各个线程共享进程所拥有的资源
线程是处理机的独立调度单位,多个线程是可以并发执行的
一个线程被创建后便开始了它的生命周期,直至终止。
4.线程实现方法
用户级方式:用户线程---线程库(用户空间/内核空间)---进程
内核级方式:用户线程--用户空间/内核空间----内核级线程---进程
组合方式:用户线程--线程库(用户空间/内核空间)--内核级线程--进程
5.多线程模型
1.多对一模型
将多个用户级线程映射到一个内核级线程。
优点:线程管理是在用户空间进行的,效率比较高
缺点:不能进行并行处理,一个线程使用了内核,其他线程会被阻碍
2. 一对一模型
一对一模型:将每个用户级线程映射到一个内核级线程
优点:并发性比较高
缺点:每一个用户线程被创建都需要创建一个对应的内核级线程,创建线程开销大,影响应用程序性能
3. 多对多模型
将n个用户线程映射到m个内核线程上
2.2处理机调度
2.2.1什么是调度
调度就是一种算法,一种用于为就绪队列里面的进程分配处理机的算法。
处理机调度时操作系统的基础,也是操作系统设计的核心。
2.2.2调度有哪些?
调度根据层次,可以分为作业调度,中级调度,进程调度,三类,且这三类也是层次递进的。
2.2.2.1作业调度
任务:根据一定原则,从外存中挑选一个处于后备状态的作业给它分配内存,输入输出设备等必要资源,并建立相应进程。
2.2.2.2 中级调度
任务:内存调度,提高内存利用率和系统吞吐量。(挂起态:暂时不能运行的进程调入外存)(就绪状态:中级调度将放与外存且准备好的资源重新调入内存)
2.2.2.3三级调度
任务:按照某种方法和策略从就绪队列中选取一个进程,并将处理机分配给它。
2.2.3调度的方式
1. 非剥夺式调度方式
排队式,只有当正在运行的进程运行结束了,重要紧要的进程才会运行。
优点:实现简单,系统开销小,适应大多批量处理机,不适合分时系统和实时系统
2. 剥夺式调度方式
抢占式,当有重要紧急的进程,正在运行的进程运行会立即停止且将资源处理机分配给重要的进程
2.2.4进程调度基本准则
CPU利用率:CPU的使用,尽可能保持CPU快的情况
系统吞吐量:吞吐量越高,说明处理的作业数量越多。
周转时间:作业从提交到作业完成所经历的时间(周转时间=作业完成时间-作业提交时间)