进程知识点整理

操作系统——进程

1、进程描述

1.1 进程的定义
  • 一个具有独立功能的程序在一个数据集合上的一次动态执行过程
1.2 进程的组成
  • 程序的代码
  • 程序处理的数据
  • 程序计数器中的值,指示下一条运行的指令
  • 一组通用的二级窜起的当前值,堆,栈
  • 一组抽象资源
  • 总之,进程包含了正在运行的一个程序的所有状态信息
1.3 进程与程序
  • 联系
    • 程序是产生进程的基础
    • 程序的每次运行构成不同的进程
    • 进程是程序功能的体现
    • 通过多次执行,一个程序可对应多个进程
    • 通过调用关系,一个进程可包含多个程序
  • 区别
    • 进程是动态的,程序是静态的
    • 程序是有序代码的集合
    • 进程是程序的执行,进程有核心态/用户态
    • 进程是一个状态变化的过程
    • 进程的组成包括程序、数据和进程控制块
1.4 进程的特点
  • 动态性:可动态地创建

  • 并发性:进程可以被独立调度并占用处理机运行

  • 独立性:不同进程的工作不相互影响

  • 制约性:访问共享数据/资源或进程同步而产生的问题

    mark

1.5 进程控制结构
  • 进程控制块(PCB):描述进程的数据结构
    • 操作系统为每个进程都维护了一个PCB,用来保存于该进程有关的各种状态信息
  • 使用进程控制块
    • 进程的创建:生成PCB
    • 进程的终止:回收PCB
    • 进程的组织管理
  • PCB具体信息
    • 进程标识信息
      • 本进程的标识
      • 本进程的产生者标识
      • 用户标识
    • 处理机状态信息保护区,保存进程的运行现场信息
      • 用户可见寄存器:用户程序可以使用数据,地址等寄存器
      • 控制和状态寄存器:如程序计数器(PC),程序状态字(PSW)
      • 栈指针:过程调用/系统调用/中断处理和返回时需要
    • 进程控制信息
      • 调度和状态信息
      • 进程间通信信息:进程间的与通信相关的各种标识、信号等
      • 存储管理信息:指向本进程映像存储空间中的数据结构
      • 进程所用资源
      • 有关数据结构连接信息:进程可以连接到一个进程队列中,或连接到相关的其它进程的PCB
  • PCB的组织方式
    • 链表:同一状态的进程其PCB组成一个链表,如就绪链表、阻塞链表
    • 索引表:同一状态的进程归入一个index表中(由index指向PCB)

2、进程状态转换

2.1 进程的生命周期
  • 进程创建
    • 系统初始化时
    • 用户请求创建一个新进程
    • 正在运行的进程执行了创建进程的系统调用
  • 进程就绪
  • 进程运行
    • 选择一个就绪的进程,并让它占用处理机并执行
  • 进程等待
    • 请求并等待系统服务(CPU读取硬盘文件),无法马上完成
    • 启动某种操作,无法马上完成
    • 需要的数据没有到达
    • 注意:进程只能阻塞自己
  • 进程唤醒
    • 被组测进程需要的资源可被满足
    • 被组测进程等待的事件到达
    • 将该进程的PCB插入到队列
    • 注意:进程只能被别的进程或操作系统唤醒
  • 进程结束
    • 正常退出(自愿的)
    • 错误退出(资源的)
    • 致命错误(强制性的)
    • 被其它进程所杀(强制性的)
2.2 进程状态转换
  • 基本状态

    • 运行

    • 等待

    • 阻塞

      mark

  • 进程其它基本状态

    • 创建状态:正在创建,还未进入到就绪
    • 结束状态:正在完成结束处理过程,还未完全消失
  • 状态转换图

    • 用时间片来控制运行态与就绪态的转换
    • Runing -> Blocked:当进程请求某样东西且必须等待时
    • Blocked -> Ready:当进程要等待某事件到来时

    mark

2.3 进程挂起
  • Why?更合理地充分利用系统资源。处在挂起状态的进程映像在磁盘

    mark

  • 挂起状态

    • 阻塞挂起状态:进程在外存上并等待某事件的出现
    • 就绪挂起状态:进程在外村,但只要进入内存即可运行
  • 与挂起相关状态转化

    • 挂起:把一个进程从内存转到外存
      • 阻塞到阻塞挂起
      • 就绪到就绪挂起
      • 运行到就绪挂起
    • 在外存转化
      • 阻塞挂起到就绪挂起
    • 解挂/激活
      • 就绪挂起到就绪
      • 阻塞挂起到阻塞
  • 问题:PCB如何帮助完成进程的调度?

  • 状态队列

    • 不同状态分别用不同的队列来标识
    • 每个进程的PCB都根据它的状态加入到相应的队列中

3、线程管理

3.1 为什么使用线程
  1. 线程之间可以并发的执行
  2. 线程之间共享相同的地址空间
3.2 线程
  • 进程当中的一条执行流程
  • 线程又有自己的信息控制块(TCB)
  • 进程下的线程在同一张页表中,具有相同地址空间
  • 优点
    • 一个进程中可以同时存在多个线程
    • 各个线程之间可以并发地执行
    • 各个线程之间可以共享地址空间和文件等资源
  • 缺点
    • 一个线程崩溃,会导致其所属进程的所有线程崩溃
3.3 与进程的比较
  • 进程是资源分配单位,线程是CPU调度单位
  • 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈
  • 线程同样具有三种基本状态,具有状态转换
  • 线程能减少并发执行的时间和空间开销
    • 线程创建时间短
    • 线程终止时间短
    • 同一进程内各线程切换时间短
    • 同一进程内各线程共享内存和文件资源,可直接进行不通过内核的通信
3.4 线程的实现
  • 用户线程

    • 在用户空间进行,操作系统无法看见

    • 由应用系统,线程库管理

    • 缺点

      • 用户管理库没有调动CPU的权利,所以,如何一个线程发起系统调用而阻塞,则整个进程等待
      • 在用户线程中,当一个线程开始运行后,除非它主动地交出CPU地使用权,否则它所在的进程中的其它线程无法执行
      • 在用户线程中,多线程时间片较少,执行会较慢

      mark

  • 内核线程

    • 在内核中进行,操作系统可以看见
    • 由操作系统的内核来完成线程的创建、终止和管理
    • 缺点
      • 开销大,需要在用户线程和内核线程之间转换
  • 轻量级进程

    • 一个进程可拥有一个或多个轻量级线程

拓展

  • 程序 = 算法 + 数据结构
  • 线程 = 进程 - 共享资源
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值