OS学习-进程的描述和控制一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jun8148/article/details/80846516

OS学习-进程的描述和控制一

关键字:进程的顺序和并发执行,进程的概念和特征,进程的基本状态和转换,PCB的定义和作用、线程、线程概念、引入线程原因、线程和进程的比较、用户级和内核级线程

一、进程的基本概念

1. 程序的顺序执行和并发执行

1.1. 程序的顺序执行

1.1.1. 程序顺序执行的概念**

​ 计算机系统中只有一道程序处于运行状态,这个程序独占系统的所有资源,其执行不受外界影响,一道程序执行完另一道程序才能执行。

1.1.2. 程序顺序执行的特征**

  1. 顺序性:一个程序开始执行必须啊哟等前一个程序执行完成
  2. 封闭性:程序一旦执行,其结果不受外界因素影响
  3. 可再现性:程序的结果和它的执行速度无关与时间无关,只要给定相同的输入,就一定能得到相同的结果。

1.2. 程序并发执行

1.1.1. 程序并发执行的概念

​ 若干程序同事在程序中执行,这些程序的执行在时间上是重叠的,一个程序还没结束,另外一个程序就已经开始执行了。

1.1.2. 程序并发执行的特点

  1. 间断性:并发执行的程序间相互制约,相互影响
  2. 失去程序的封闭性:系统的资源由多个并发执行的程序共享,任一程序都会受到其他程序的影响
  3. 不可再现性

2. 进程

2.1. 进程的定义和特征

2.1.1. 进程实体(进程映像)

​ 进程实体:程序段、相关的数据段、进程控制块PCB

2.1.2. 进程的定义

​ 进程是进程实体的运行过程,是系统进行资源分配和调度的独立单位。

扫描二维码关注公众号,回复: 3454538 查看本文章

2.1.3. 进程和程序的比较

  1. 程序是静态的,进程是动态的

    程序是指令的有序集合,其本身没有任何运行的含义,是静态的概念

    进程是程序在处理机上的一次执行结果,他是动态的概念

  2. 程序是永久的,进程是暂时的

    程序可以作为一种软件资料(资源)长期存在

    进程是有一定生命周期的

  3. 进程更能描述并发,程序做不到

  4. 进程是由程序和数据、进程控制块PCB组成

  5. 进程具有创建其他进程的功能,程序没有

  6. 同一程序可以对应多个进程

  7. 进程是程序的一次执行

2.1.4. 进程的特征

  1. 结构特征

    由程序段、数据段、进程控制块PCB组成

  2. 动态性

    进程是程序的一次执行

  3. 并发性

    多个进程同时存在内存,在一段时间内能同时运行

  4. 独立性

    进程能独立运行、独立获得资源和独立接受调度

  5. 异步性

    各进程按各自独立的、不可预知的速度向前推进

2.2. 进程的基本状态和转换

2.2.1. 进程的三种基本状态

  1. 就绪状态

    进程获得除CPU以外的所有资源,一但得到CPU,就可以立即执行。即进程处于准备好运行的状态

    就绪队列:所有处于就绪状态的进程所在的队列

  2. 执行状态

    进程已获得CPU,其程序正在运行的装态,单处理机中:只有一个进程处于执行状态;多处理机中:多个进程处于运行状态。

  3. 阻塞状态

    正在执行的进程由于等待某一事件的发生(如I/O输入输出,申请缓冲区之类的事件),导致暂时无法继续执行时的状态。

    阻塞队列:系统将处于阻塞状态的进程根据阻塞原因排成多个队列。

2.2.2. 进程的状态转换

三进程转换:

这里写图片描述

五进程转换:

创建状态:创建进程的过程,进程申请PCB,向PCB写信息,分配资源,保证进程的调度是在创建工作完后进行的

终止状态:OS进行善后,清空PCB并将PCB空间还给系统

这里写图片描述

七进程和九进程:
这里写图片描述

解释下挂起状态和引入挂起状态的原因

挂起状态:当某进程处于挂起状态,则意味着该进程处于静止状态,如果进程正在执行,就暂停执行,如果京城处于就绪状态,则进程此时不受调度。

引入挂起状态的原因:

  1. 终端用户的请求
  2. 父进程请求
  3. 负荷调节的需要
  4. 操作系统的需要
  5. 对换的需要

2.3. 进程控制块PCB

2.3.1. 进程控制块:描述和控制进程运行的一个数据结构。

2.3.2. PCB中记录了OS所需的、用于描述进程当前情况以及控制进程运行的全部信息

2.3.3 PCB作用

将一个不能独立运行的程序变成一个可独立运行的基本单位,一个能与其他进程并发执行的进程。是OS感知进程存在的唯一标志。

  1. 作为独立运行的基本单位的标志
  2. 实现间断性运行方式
  3. 提供进程管理所需的信息
  4. 提供进程调度所需的信息
  5. 实现与其他进程的同步和通信

注意:进程和PCB应该一一对应,且PCB应常驻内存

2.3.4. PCB的内容

  1. 进程的描述信息

    1. 进程的标识符(唯一)
    2. 进程名
    3. 用户标识符
  2. 进程控制信息

    1. 当前状态
    2. 优先级
    3. 代码执行入口地址
    4. 程序的外存地址
  3. 所拥有的资源和使用情况

    1. 虚拟地址空间的现状
    2. 打开文件列表
  4. CPU现场保护信息

    1. 寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、堆栈)
    2. 指向赋予该进程的段/页表的指针
  5. PCB表

    PCB表是所有的进程的PCB组织在一起,放于内存的固定区域。

    PCB表的大小决定了系统中最多可同时存在的进程个数,这个称为系统的并发度。

2.4. 进程控制

2.4.1. 基本概念

​ 进程控制是进程管理中最基本的功能,是对系统的所有进程实施管理。包括创建新进程、终止已完成进程、终止一个因出现某事件而无法继续运行下去的进程、负责进程运行中的状态的转换。

  1. 引发进程创建的事件
    1. 用户登录
    2. 作业调度
    3. 提供服务
    4. 应用请求
  2. 进程阻塞的原因
    1. 请求系统服务
    2. 启动某种操作
    3. 新数据尚未到达
    4. 无心工作可做

二、线程

1. 线程的基本概念

1.1. 为什么引入线程?

​ 进程的引入是为了是多个程序并发执行,以改善资源利用率和提高系统吞吐量。

​ 线程的引入是为了减少程序在并发执行是所付出的时空开销,提高OS的并发性。

2. 进程的两个基本属性以及线程的引入

2.1. 进程是一个拥有资源的基本单位

2.2. 进程是一个独立调度的基本单位

进程是资源的拥有这,创建、撤销、切换时系统会付出较大的时空开销,所以进程数不宜过多,进程切换频率不能过高,所以并发性不是很高。

为了进一步提高并发性,我们就就进程的两个属性分开,引入了线程的概念。

线程作为进程中的一个实体,是被系统独立调度和分派的基本单位。线程基本不拥有系统资源,只有少量必需的资源:程序计数器、一组寄存器

3. 线程的描述

  1. 线程可与同属一个进程的其它线程共享进程所拥有的全部资源。
  2. 一个线程可以创建和撤消另一个线程
  3. 同一进程中的多个线程之间可以并发执行
  4. 线程之间是无保护的

4. 线程和进程的比较

一个进程拥有多个线程,线程具有进程的多个特征

  1. 调度的基本单位

    1. 只有进程:进程是拥有资源、独立调度和分配的基本单位
    2. 引入线程后:调度和分配的基本单位是线程,拥有资源的基本单位是进程
    3. 同一个进程之间的线程切换不会导致进程切换,不同进程之间的线程切换会引发进程切换
  2. 并发性

    引入线程的系统中:进程之间可并发执行,一个进程中的多个线程之间可并发执行

  3. 拥有资源

    1. 进程拥有资源,并作为系统中拥有资源的一个基本单位
    2. 线程不拥有系统资源,只有一点少的必需的资源。
    3. 一个进程的所有资源可供进程内的所有线程共享
  4. 系统开销

    进程的切换、创建和撤销的开销远大于线程切换、创建和撤销的开销。

    同一进程中的多个线程具有相同的地址空间,他们之间的同步和通信比进程之间的简单

  5. 独立性

    同一进程中的不同线程之间的独立性比不同进程之间的独立性低。

5. 线程的实现

线程可分两类:

  1. 内核支持线程(内核级线程):线程依赖内核,所有的进程中的线程操作都由内核来完成
  2. 用户级线程:用户进程中的线程的创建、撤销、切换、同步和通信都无需内核的支持,用户级线程和内核无关。

5.1. 用户级线程(ULT)

优点:

  1. 线程切换不调用内核
  2. 调度是应用程序特定的:可以选择最好的算法
  3. ULT可运行在任何操作系统上(只需要线程库),可在一个不支持线程的OS上实现

缺点:

  1. 大多数系统调用是阻塞的,因此核心阻塞进程,故进程中所有线程将被阻塞
  2. 核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上

5.2. 核心级线程(KLT)

优点:

  1. 对多处理器,核心可以同时调度同一进程的多个线程
  2. 阻塞是在线程一级完成,即一个线程阻塞了,内核可调度其他线程占有处理器运行,或者运行其他进程中的线程
  3. 内核本身采用多线程技术,可以提高系统的执行速度和效率
  4. 内核支持线程具有很小的数据结构和堆栈,线程切换快,切换开销小

缺点:

  1. 在同一进程内的线程切换调用内核,导致速度下降

三、习题

1. 为什么每个线程都必须有自己的堆栈资源?

答:线程是独立执行的,除了共享全局变量外,其他属于自己的线程的资源不允许其他线程访问,不然各个线程之间会产生干扰和破坏。

2. 简述用户级和内核级线程的优缺点。

答案看上面

3. 对使用单线程文件服务器和多线程文件服务器读取文件进行比较。假设所需数据都在高速缓存,则需花费15ms获得工作请求、分派工作和处理其余必要工作。如果有1/3概率需要一个磁盘操作,要另外花费75ms,此时该工作线程阻塞。在单线程和多线程服务器情形下可以各自处理每秒多少个请求呢?

单线程:

​ t = 1/3X(75+15) + 2/3X15 = 40ms

​ 服务器每秒处理的请求数n=1s/40ms = 25个

多线程:

​ t = 15ms

​ n = 1s/15ms = 66.7个

猜你喜欢

转载自blog.csdn.net/jun8148/article/details/80846516