操作系统 进程 程序 线程

一 进程 程序的联系和区别

进程定义 : 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程.

进程和程序的联系

  • 程序是产生进程的基础
  • 程序的每次运行构成不同的进程
  • 进程是程序功能的体现
  • 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序.

进程与程序的区别

  • 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态.
  • 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存
  • 进程与程序的组成不同:进程的组成包括程序,数据和进程控制块

进程的特点

  • 动态性:可动态地创建,结束进程
  • 并发性: 进程可以被独立调度并占用处理机运行;并发并行
  • 独立性:不同进程地工作不相互影响
  • 制约性:因访问共享数据/资源或进程间同步而产生制约

二 进程控制块(PCB)

进程控制块:操作系统管理控制进程运行所用的信息集合.

操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志,每一个进程都在操作系统中有一个对应的PCB;

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

PCB包含有三大类信息:

  • 进程标识信息. 如本进程的标识,本进程的产生者标识;用户标识
  • 保存进程的运行现场信息,用户可见寄存器,用户程序可以使用数据,地址寄存器,控制和状态寄存器,如程序计数器(PC),程序状态字(PSW),栈指针,过程调用/系统调用/中断处理和返回时需要

三 进程的生命周期

  • 进程创建
    1. 系统初始化
    2. 用户请求创建一个新进程
    3. 正在运行的进程执行了创建进程的系统调用
  • 进程执行
    内核选择一个就绪的进程,让它占用处理及并执行
  • 进程等待
    1. 请求并等待系统服务,无法马上完成
    2. 启动某种操作,无法马上完成
    3. 需要的数据没有到达
    只有进程自身才能知道何时需要等待某种事件的发生
  • 进程抢占
    1. 高优先级进程就绪
    2. 进程执行当前时间用完
  • 进程唤醒
    1. 被阻塞进程需要的资源可被满足
    2. 被阻塞进程等待的事件到达
    进程只能被别的进程或操作系统唤醒
  • 进程结束

在这里插入图片描述

四 线程

线程概念

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

  • 进程的资源分配角色:进程由一组相关资源构成,包括地址空间(代码段,数据段),打开的文件等各种资源
  • 线程的处理机调度角色:线程描述在进程资源环境中的指令流执行状态
    在这里插入图片描述
    线程=进程-共享资源

线程的优缺点

优点:

  • 一个进程中可以同时存在多个线程
  • 各个线程之间可以并发的执行
  • 各个线程之间可以共享地址空间和文件等资源.
  • 线程能减少并发执行的时间和空间开销.

缺点:

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

线程与进程比较

  • 进程是资源分配单位,线程是cpu调度单位
  • 进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈.由于同一进程的各线程间共享内存和文件资源,可不通过内核进行直接通信

实现线程的三种方式

用户线程:在用户空间实现 (N个用户线程对应一个内核线程).

用户空间实现的线程机制,它不依赖于操作系统内核,由一组用户级的线程库函数来完成线程的管理,包括进程的创建,终止,同步和调度等.

  • 由于用户线程的维护由相应进程来完成(通过线程库函数)
    ,不需要操作系统内核了解用户线程的存在,可用于不支持线程技术的多进程操作系统
  • 每个进程都需要它自己私有的线程控制块(TCB)列表,用来跟踪记录它的各个线程状态信息(PC,栈指针,寄存器),TCB由线程库函数来维护
  • 用户线程的切换也是由线程库函数来完成,无需用户态/核心态切换,所以速度特别快
  • 进程拥有自定义的线程调度算法

用户线程的缺点:

  • 如果一个线程发起系统调用而阻塞,则整个进程在等待.
  • 当一个线程开始运行后,除非它主动交出CPU的使用权,否则它所在的进程当中的其他线程将无法运行
  • 由于时间片分配给进程,故于其他进程比,在多线程执行时,每个线程得到的时间片较少,执行会比较慢
    在这里插入图片描述

内核线程:在内核中实现(一个用户线程对应一个内核线程),是指在操作系统的内核当中实现的一种线程机制,由操作系统的内核来完成线程的创建,终止和管理.

  • 在支持内核线程的操作系统中,由内核来维护进程和线程的上下文信息(PCB和TCB)
  • 线程的创建,终止和切换都是系统调用/内核函数的方式来进行,由内核来完成,因此系统开销较大
  • 在一个进程当中,如果某个内核线程发起系统调用而被阻塞,并不会影响其他内核线程的运行
  • 时间片分配给线程,多线程的进程获得更多CPU时间

在这里插入图片描述
**轻量级进程:**内核支持的用户线程.一个进程可有一个或多个轻量级进程,每个量级进程由一个单独

五 进程切换

    暂停当前运行进程,从运行状态变成其他状态,调度另一个进程从就绪状态变成运行状态
上下文切换图.
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/filling_l/article/details/111947602
今日推荐