软考(六) 进程管理(一)

软考(六) 进程管理(一)

基本概念:

**多道程序:**多道程序设计是一种操作系统的工作模式,它允许同时运行多个程序,并通过快速的切换和调度来实现对这些程序的并发执行

进程:

  1. 进程是计算机系统中的基本执行单元,它代表了程序在执行过程中的一个动态实体,具有独立性、并发性、状态转换、通信同步和资源管理等特点。操作系统通过进程管理机制来管理和调度多个进程,实现了对计算机系统的并发执行和资源分配
  2. 引入进程的概念可以使计算机系统能够更有效地利用资源,实现多任务处理和并发执行,提高系统的效率、稳定性和可维护性,满足用户对性能和功能的需求
  3. 资源分配和调度的一个单位,由程序块、进程控制块和数据块组成

**程序:**程序是一组按照特定顺序组织的指令集合,用于完成特定的任务或实现特定的功能。程序是静态的,它们只是存在于存储介质中的一些代码和数据,没有具体的执行过程

进程和程序的主要区别:

  1. 程序是一组静态的指令集合,用于完成特定的任务;而进程是程序在执行过程中的一个实例,它包括了程序的代码、数据以及程序在执行过程中所需的各种资源。程序只是存储介质中的一些代码和数据,而进程是程序在计算机系统中的动态实体,具有多种状态和资源需求
  2. 通俗来说,程序像一道菜谱(静态的),进程则是按照菜谱做菜(做菜是动态的);菜谱只要不被撕毁,则会一直存在,同理程序不被破坏则一直存在;做菜是一个过程,菜做好了,则完成了,做菜这一动作就没有了,同理进程完成任务后因撤销而消亡。

进程控制块(PCB):

**定义:**PCB(Process Control Block)是操作系统中用于管理进程的数据结构,也称为进程控制块。它记录了操作系统所需的关于一个进程的所有信息,包括进程的状态、标识符、优先级、程序计数器、寄存器状态、内存分配情况、打开文件的列表、CPU使用情况等等。PCB是操作系统进行进程管理的基础,它存储了系统所需的所有关于进程的信息,使得操作系统能够对进程进行有效的管理和调度。PCB是进程存在的唯一标志

进行管理的三态模型:

在这里插入图片描述

**定义:**由于系统中各进程之间的相互制约关系及系统的运行环境变化,使得进程的状态在不断变化(一个进程会经历若干不同状态)

**就绪态→运行态:**进程创建后便是就绪态,处于就绪态的进程被调度后,获得处理机资源(分派处理机时间片),于是进程由就绪态转换为运行态

运行态→就绪态:处于运行态的进程在时间片时间到了之后让出处理机,从运行态切换到就绪态。当有更高的优先级的进程就绪态时,调度将正执行的进程切换为就绪态,让高优先级的先执行

**运行态→阻塞态:**进程请求某一资源(如外设)的使用和分配 或等待某一事件的发生(如IO操作)时,进程就从运行态转换为就绪态。进程以系统调用的形式请求操作系统提供服务

**阻塞态→就绪态:**进程等待的事件到来时,如IO操作结束或中断结束时,中断处理程序必须把相应进程的状态由阻塞态切换为就绪态

进程控制

进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的单位

进程的创建:

  1. 允许一个进程创建另外一个进程,为父进程和子进程。子进程可以继承父进程所拥有的资源。
  2. 子进程销毁时,需要将从父进程获得的资源归坏父进程。
  3. 撤销子进程时,需要同时撤销所有子进程

新进程创建过程:

  1. 为新进程分配一个唯一的进程标识号,申请一个空白的PCB,若PCB分配失败,则创建失败
  2. 为进程分配资源,为新的进程程序和数据 以及用户栈分配必要的内存空间,若资源不足,则处于阻塞状态 不是创建失败
  3. 初始化PCB,包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,设置进程的优先级
  4. 进程就绪队列能够接纳新进程,将新进程插入就绪队列,等待被调度运行

进程的终止:

  1. 正常结束,表示进程的任务已经完成并准备退出运行
  2. 异常结束,进程运行时,发生某种异常事件,使程序无法运行
  3. 外界干预,进程应外界的请求而终止运行,如操作员和操作系统干预,父进程请求和父进程请求终止

进程终止过程:

  1. 根据被终止进程的标识符,检索PCB,从中读出该进程的状态
  2. 若处于执行状态的被终止,则立即终止该进程的执行,将处理及资源分配给其他进程
  3. 若该进程还有子进程,则将所有子进程也终止
  4. 将该进程所拥有的全部资源归还给其父进程,或归还操作系统
  5. 将该PCB从所在队列(链表)删除

进程的阻塞:

正在执行的进程,遇到系统资源申请失败等情况,由系统自动执行阻塞原语,使自己运行状态变为阻塞态。

阻塞原语执行过程:

  1. 找到将要被阻塞进程的标识号对应的PCB
  2. 若进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行
  3. 把该PCB插入相应事件的等待队列

唤醒原语过程:

  1. 在该事件的等待队列中找到相应的PCB
  2. 将其从等待队列中移除,并设置其状态为就绪态
  3. 把该PCB插入就绪队列,等待调度程序调度

进程切换过程:

从一个进程的运行转到另外一个进程上运行,在这个过程中,进程的运行环境产生了实质性的变化

  1. 保存处理机上下文,包括程序计数器和其他寄存器
  2. 更新PCB信息
  3. 把进程PCB移入相应的队列,如就绪、阻塞队列
  4. 选择另外一个进程执行,更新其PCB
  5. 更新内存管理的数据结构
  6. 恢复处理机上下文

进程的组织

进程控制块:

  1. 进程创建时,操作系统新建一个PCB结构,该结构之后常驻内存,任意时刻都可以存取,并在进程结束时删除。PCB是进程实体的一部分,是进程存在的唯一标志

  2. 进程块主要内容:

    a. 进程标识符:PCB中包含了一个唯一标识符,用于区分不同的进程。这个标识符通常是一个整数或指针,由操作系统分配和管理

    b. 进程状态和调度信息:PCB记录了进程的状态信息,包括就绪态、运行态、阻塞态等。操作系统根据进程的状态来进行调度和管理,包括进程的优先级、时间片大小、等待时间等

    c. 资源管理和内存管理:PCB记录了进程的内存分配情况,包括进程占用的内存地址空间、页表信息、段表信息等;还包含了进程所拥有的资源信息,包括打开的文件、分配的设备等。这些信息用于进程间通信和资源共享

    d. 处理机相关信息:PCB中存储了进程在CPU中的寄存器状态,包括通用寄存器、程序状态字(PSW)、栈指针等。这些信息在进程切换时需要保存和恢复,以保证进程的执行状态不受影响

程序段:

​ 程序段就是能被进程调度到CPU执行的程序代码段。程序可以被多个进程共享,即多个进程可以运行到同一个程序

数据段:

​ 一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终的结果

进程的通信

进程的通信就是指 进程之间的信息交换。PV操作*(P操作(也称为Wait操作),V操作(也称为Signal操作))*是低级通信方式。高级通信方式是指以较高的传输效率传输大量的数据 的通信方式

**共享内存:**共享内存的基本原理是将一块内存区域映射到多个进程的地址空间中,使得这些进程可以直接访问共享内存中的数据。通常情况下,共享内存需要配合信号量或其他同步机制一起使用,以确保多个进程对共享内存的访问是安全的。

简单理解:甲乙两个进程要交易,但是2个不能直接交易,需要有个平台,通过平台。甲乙把物品放入平台,然后相互取出。

消息传递:

消息传递的过程中,进程间的数据交换是以格式化的消息为单位的。若通信的进程之间不存在可直接访问的共享空间。 必须利用操作系统提供的消息传递方法实现进程通信。进程通过系统提供的发生消息和接收消息两个原语进行交换数据。

管道通信:

管道通信的基本原理是通过创建一个特殊的文件描述符,使得一个进程的输出(写入管道)可以成为另一个进程的输入(从管道读取)。管道是一个先进先出(FIFO)的数据结构,写入管道的数据会被按照写入的顺序依次读取

线程

线程(Thread)是操作系统中用于执行程序的最小单元,它是进程内的一条执行路径。线程是进程中的一个实体,同一进程中的多个线程共享该进程的地址空间和其他资源,但每个线程都拥有自己的栈空间和线程局部存储

线程也有就绪、阻塞和运行三种状态

引入线程后,进程的内涵发生改变,进程只作为除CPU外的系统资源的分配单元,线程则作为处理机的分配单元。

由于一个进程内部有多个线程,若线程的切换发生在同一个进程内部,则只需要很少的时空开销

线程和进程的比较:

  1. **调度:**引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程进行线程切换时,会引发进程的切换

  2. 资源占用

    进程是独立的内存资源分配单位,每个进程都有独立的地址空间和系统资源

    线程是共享进程的地址空间和系统资源的,多个线程共享相同的内存空间和其他资源

  3. 并发性

    线程间切换的开销比进程间切换的开销小得多,因此线程可以实现更高效的并发执行

    多线程程序可以更好地利用多核处理器的性能,并且能够更加灵活地实现并发操作

  4. 创建销毁开销

    创建和销毁进程的开销通常比较大,需要分配和释放大量的系统资源

    创建和销毁线程的开销比较小,因为线程共享进程的资源,只需要分配额外的栈空间即可

  5. 通信与同步

    进程间通信(IPC)比较复杂,通常需要通过管道、消息队列、信号量等机制来实现

    线程间通信(IPC)比较简单,因为它们共享相同的地址空间,可以直接访问共享的变量和数据结构,可以直接读/写进程数据段(如全局变量)进行通信

    线程之间的同步相对容易实现,因为它们共享相同的地址空间,可以使用同步机制(如互斥锁、条件变量)来控制对共享资源的访问

线程为什么提高了系统的并发性:

由于有了线程,线程切换时,有可能发生进程切换,也有可能不发生进程切换,平均而言每次切换所需的开销就变小了。因此能够让更多的线程参与并发,而不会影响到响应时间等问题

线程的实现方式:

用户级线程:

  1. 用户级线程是由用户空间的线程库(Thread Library)实现和管理的,操作系统并不知道线程的存在,线程的创建、调度、同步等操作都由用户级线程库完成
  2. 用户级线程库提供了一系列线程操作的API,包括创建线程、销毁线程、线程同步、线程调度等。常见的用户级线程库包括POSIX线程库(pthread)和Windows线程库
  3. 由于线程的创建和管理都由用户态的线程库完成,因此用户级线程的切换开销较小,但同时也意味着线程的调度和同步完全由用户程序控制无法充分利用操作系统的多核处理能力,且无法实现真正的并行执行

内核级线程:

  1. 内核级线程是由操作系统内核直接支持和管理的,线程的创建、调度、同步等操作都由操作系统内核完成
  2. 内核级线程与操作系统内核紧密集成,可以充分利用操作系统的调度器和其他资源管理机制,实现更高效的线程调度和同步
  3. 内核级线程通常支持真正的并行执行能够利用多核处理器的性能优势,但线程的创建和切换开销较大

除了用户级线程和内核级线程外,还有一种混合型的线程实现方式。即多对一(Many-to-One)线程模型和一对一(One-to-One)线程模型的混合。

  1. 在多对一模型中,多个用户级线程映射到一个内核级线程上,由操作系统内核调度;
  2. 而在一对一模型中,每个用户级线程都对应一个内核级线程,由操作系统内核直接管理。

混合型的线程模型综合了用户级线程和内核级线程的优点,既具有轻量级线程的低开销和高效率,又能够利用操作系统的多核处理能力和实现真正的并行执行

  • 29
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值