进程和线程

一、进程的概念
1.进程概念
进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
源代码通过编译链接形成可执行文件,再通过加载到进程的地址空间。
2.进程组成
进程包含了正在运行的一个程序的所有状态信息。

* 代码
* 数据
* 状态寄存器
* 通用寄存器
* 进程占用系统资源

3.进程特点

* 动态性:可动态的创建、结束进程
* 并发性:可交替执行多个程序,多个程序可以再CPU的调度下并占用处理机执行  
* 独立性:不同进程相互工作不影响
* 制约性:两个或多个进程在同步执行下,因访问共享数据/资源产生制约

4.进程与程序的联系

* 进程是操作系统处于执行状态程序的抽象。

程序=文件(静态的可执行文件)
进程=执行中的程序=程序+执行状态

* 同一程序的多次执行过程对于不同的进程。
* 进程执行需要资源

内存:保存代码和数据
CPU:执行指令
5.进程与程序的区别

* 进程是动态的,程序是静态的

程序是有序的代码的集合
进程是程序的执行,进程有核心态/用户态

* 进程是暂时的,程序是永久的

进程是一个状态变化的过程
程序可长久保存

* 进程和程序的组成不同

进程的组成包括程序、数据和进程控制块

二、进程控制块(PCB,Process Control Block)
1.进程控制块的概念
操作系统管理控制程序运行所有的信息的集合。

* 操作系统用PCB来描述进程的基本情况(ID、执行的程序)以及运行变化的过程。

PCB是进程存在的唯一标识,即每个进程都在操作系统中有一个对应的PCB。
2.进程控制块的使用

* 进程创建:生成该进程的PCB
* 进程终止:回收它的PCB
* 进程的组织管理:通过对PCB的组织管理实现

3.进程控制块的内容
进程在内存空间的映像如下图:
这里写图片描述

* 进程标识信息(包括ID信息)
* 处理机现场保存(其他寄存器)
* 进程控制信息

调度和状态信息:调度进程和处理机使用情况

进程间通信信息:进程间通信相关的各种标识

存储管理信息:指向进程映像存储空间数据结构

进程所用资源:进程使用的系统资源,如打开文件

有关数据结构的连接信息:与PCB相关的进程队列

4.进程控制块的组织
包含表、链表、索引、各种数据结构等。

* 链表

这里写图片描述
同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。
各状态的进程形成不同的链表:就绪链表、阻塞链表。

* 索引表

这里写图片描述
同一状态的进程归入一个索引表(由索引指向PCB),多个状态对应多个不同的索引表。
各状态的进行形成不同的索引表:就绪索引表、阻塞索引表

三、进程状态
1.进程的生命周期划分

* 进程创建

引起进程创建的情况:

    * 系统初始化时
    * 用户请求创建一个新进程
    * 正在运行的进程执行了创建进程的系统调用
* 进程执行

这里写图片描述
内核选择一个就绪的进程,让它占用处理机并执行。

* 进程等待

这里写图片描述

进程进入等待(阻塞)的情况:

* 请求并等待系统服务,无法马上完成
* 启动某种操作,无法马上完成
* 需要的数据没有到达

只有进程自身才能知道何时需要等待某种事件的发生

* 进程抢占

这里写图片描述

进程被抢占的情况:

    * 高优先级进程就绪
    * 进程执行当前时间用完

* 进程唤醒

这里写图片描述

唤醒进程的情况:

* 被阻塞进程需要的资源可被满足
* 被阻塞进程等待的事件到达

唤醒只能被别的进程或操作唤醒。

* 进程结束

这里写图片描述

进程结束的情况:

* 正常退出(自愿的)
* 错误退出(自愿的)
* 致命错误(强制性的)
* 被其他进程所杀(强制性的)

进程切换

四、三状态进程模型
1.运行状态
进程正在处理机上运行
2.就绪状态
进程获取除了处理机之外的所需资源,得到处理机即可运行
3.等待状态
进程在等待某一事件的出现而暂停运行
两个辅助状态:
4.创建状态
一个进程正在被创建,还没被转到就绪状态之前的状态
5.结束状态
一个进程正在从系统中消失时的状态,这是因为进程结束或由于其他原因所导致的
这里写图片描述

状态转换
创建—->就绪
当进程被创建完成并完成初始化后,一切就绪准备运行时,变为就绪状态。
就绪—–>运行
处于就绪状态的进程被进程调度程序选中后,就分配到处理机上来运行
运行—–>结束
当进程表示它已经完成或因出错,当前运行进程会由操作系统作结束处理
运行—–>就绪
处于运行状态的进程在其运行的过程中,由于分配给它处理机时间片用完而让出处理机
运行—–>等待
当进程请求资源且必须等待时
等待—–>就绪
当进程要等待的事件到来时,由阻塞状态变为就绪状态。

五、进程挂起
1.概念
处在挂起状态的进程映像在磁盘上,目的是减少进程占用内存
增加了就绪挂起和等待挂起
等待挂起:进程在外存,并等待某件事的发生
就绪挂起:进程在外存,但只要进入内存,即可运行
挂起:把一个进程从内存转到外存
2.与挂起相关的状态转换
等待—->等待挂起
没有进程处于就绪状态或就绪进程要求更多的内存资源
就绪—->就绪挂起
当有高优先级等待进程和低优先级就绪进程
运行—–>就绪挂起
对抢先式分时系统,当有高优先级等待挂起进程因事件出现而进入就绪状态
这里写图片描述
3.在外存时的状态转换
等待挂起—–>就绪挂起
当有等待挂起进程因相关事件出现
激活:把一个进程从外存转到为内存
就绪挂起—->就绪
没有就绪进程或挂起就绪进程优先级高于就绪进程
等待挂起—->等待
当一个进程释放足够内存并有高优先级等待挂起进程
4.状态队列

* 由操作系统来维护一组队列,表示系统中所有进程的当前状态
* 不同队列表示不同的状态(就绪队列、各种等待队列)
* 根据进程状态不同,进程PCB加入相应的队列

    * 进程状态变化时,它所在的PCB会从一个队列换到另外一个

六、线程(TCB)
1.多进程
进程之间也可以通过多进程的方式进行通信,共享数据
缺点:系统开销大(创建进程、进程结束、进程切换)
2.线程
引入:
在进程内部增加一类实体,满足:

* 实体之间可以并发执行
* 实体之间共享相同的地址空间

线程概念
线程是进程的一部分,描述指令执行流状态,是进程中的指令执行流的最小单元,是CPU调度的基本单位。

* 进程的资源分配角色

进程由一组相关资源构成,包括地址空间(代码段、数据段)、打开文件等各种资源

* 线程的处理机调度角色

线程描述在进程资源环境中的指令流执行状态
线程=进程-共享资源
线程的优点:

* 一个进程中可以同时存在多个线程
* 各个线程之间可以并发地执行
* 各个线程之间可以共享地址空间和文件等资源

线程的缺点:

* 一个线程崩溃,会导致其所属进程的所有线程崩溃

线程与进程的比较

* 进程是资源分配单位,线程时CPU调度单位
* 进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈
* 线程具有就绪、等待、运行三种基本状态和状态间的转换关系

    * 线程减少并发执行的时间和空间开销
    * 线程的创建时间比进程短
    * 线程的终止时间比进程短
    * 同一进程内的线程切换时间比进程短
    * 由于同一进程的各线程间共享内存和文件资源,可不通过内核进行直接通信

七、线程的实现
1.用户线程
在用户空间实现
POSIX Pthreads,Mach C-threads,Solaris threads
由一组用户级的线程库函数来完成线程的管理,包括线程的创建、终止、同步和调度等
这里写图片描述
用户线程的特征

* 不依赖于操作系统的内核

    * 内核不了解用户线程的存在
    * 可用于不支持线程的多进程操作系统


* 在用户空间实现的线程机制

    * 每个进程有私有的线程控制块(TCB)列表
    * TCB由线程库函数维护
* 同一进程内的用户线程切换速度快

    * 无需用户态/核心态切换
* 允许每个进程拥有自己的线程调度算法

用户线程的不足

* 线程发起系统调用而阻塞时,则整个进程进入等待 
* 不支持基于线程的处理机抢占

    * 除非当前运行线程主动放弃,它所在进程的其他线程无法抢占CPU
* 只能按进程分配CPU时间

    * 多个线程进程中,每个线程的时间片较少

2.内核线程
在内核中实现
Windows,Solaris,Linux
由内核通过系统调用实现的线程机制,由内核完成线程的创建、终止
这里写图片描述
内核线程的特征

* 由内核维护PCB和TCB
* 线程执行系统调用而被阻塞不影响其他线程
* 线程的创建、终止、切换相对较大

    * 通过系统调用/内核函数,在内核实现
* 以线程为单位进行CPU时间分配

    * 多线程的进程可获得更多的CPU时间

3.轻量级线程
在内核中实现,支持用户线程
Solaris
轻权进程(Solaris/Linux)
内核支持的用户线程。一个进程可有一个或多个轻量级进程,每个轻权进程由一个单独的内核线程来支持

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值