【操作系统】进程管理——理解进程、线程概念及其调度策略(1)

进程的概念、组合和特征

  1. 进程和程序的区别?
    程序是存放在外存(硬盘)里面的可执行文件(一系列的指令集合),是静态的;而进程是程序的一次执行过程,是动态的,同一个程序执行多次会创建多个进程

  2. 操作系统如何区别各个不同的进程?
    当进程被创建的时候,操作系统会给所创建的进程分配一个唯一的,不重复的PID,即进程ID号,一般操作系统对进程ID号执行**++**的操作。
    在这里插入图片描述

  3. PCB所记录的内容包括哪些?

    • 进程标识符(PID),用户标识符(UID),让操作系统区分各个进程
    • 记录给进程分配了哪些资源,包括分配了多少内存正在使用哪些I/O设备正在使用哪些文件等等,从而实现操作系统对资源的管理进程控制块结构体可下载Linux内核源码查看。
    • 记录进程的运行情况,如CPU使用时间磁盘使用时间网络流量使用等等,从而实现操作系统对进程的控制和调度
  4. 进程的实际组成包括哪些部分?
    主要是PCB程序段数据段。其中PCB是给操作系统用的,而程序段和数据段是给自己用的

    • 程序段、数据段、PCB三部分组成了进程实体
    • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
  5. 进程的特征有哪些?
    🐦 动态性:进程是程序的一次执行过程,有创建、运行和消亡周期。
    🐦 并发性:内存中有多个进程实体,各进程可以并发执行
    🐦 独立性:进程是独立运行、独立获取资源、独立接受调度的基本单位。
    🐦 异步性:各个进程独自以各自的速度执行,操作系统需要提供进程同步机制解决异步问题。
    🐦 结构性:每个进程会配置一个PCB,结构上看进程由程序段、数据段和PCB组成。

进程的状态和转换、进程的组织方式

  1. 一个进程的状态有哪些?其中的转换过程是怎么样的?
    • 创建态:当进程被创建的时候处于创建态,在这个阶段操作系统会为进程分配资源、初始化PCB等。
    • 就绪态:当进程创建完成之后就进入就绪态,等待操作系统将其调度到CPU上执行。
    • 运行态:当进程上到CPU执行时,就处于运行态,执行指令序列
    • 阻塞态: 若进程在CPU上执行的时候发出系统调用请求使用外设资源,而外设资源被占用时,则操作系统会让其下CPU进入阻塞态。
    • 终止态: 当进程执行完任务之后会执行**“exit”系统调用**,请求操作系统终止该进程,此时进程进入终止态,操作系统会回收相关资源(PCB,内存等)。
      在这里插入图片描述
  2. 进程是通过什么方式进行组织的?
    • 链式方式:操作系统会管理一系列队列,比如就绪队列、阻塞队列等。通过执行指针索引到相对应的进程并让操作系统将其调度上CPU执行。PS:阻塞队列可以有多种,因为外设资源可以有多种。
    • 索引方式:操作系统会管理一系列索引表,比如就绪索引表、阻塞索引表,这些表会索引各个进程PCB,操作系统都是通过表指针的方式进行感知。

进程控制

  1. 什么是进程控制?
    就是要通过操作系统实现进程的状态转换

  2. 如何实现进程控制?
    在这里插入图片描述
    进程的控制需要原语操作实现对进程的状态转换,如果程序不能一气呵成的执行的话,就会影响到操作系统对进程的管理。

  3. 如何实现原语操作?
    通过关中断指令开中断指令实现。正常情况下,CPU没执行完一条指令都会例行检查是否有中断信号需要处理,若有则暂停运行当前程序,转而运行中断处理程序。

  4. 原语应用在哪些方面?

    • 进程的创建

    ✌️ 包括分配资源初始化PCB等创建原语的操作。
    ✌️ 引起进程创建的事件,比如用户登陆作业调度(多道批处理系统中,若有新的作业放入内存,会创建进程)、提供服务(用户向操作系统提出某些请求)、用户请求(调用fork等函数)。

    • 进程的撤销

    💤 撤销原语,比如终止进程的PCB,将进程的资源返回给操作系统。
    💤 引起进程终止的事件,比如正常结束(exit系统调用),异常结束,外界干扰。

    • 进程的阻塞和唤醒

    💫 阻塞原语: 找到要阻塞的进程对应的PCB并保护运行现场,然后将PCB信息更改为“阻塞态”。
    💫 引起进程阻塞的事件,比如需要等待系统分配资源,等待其他进程执行等。
    💫 唤醒原语: 在等待队列中寻找PCB,从等待队列中移除并设置进程为就绪态。
    💫 引起进程唤醒的事件,比如等待的事件发生。

    • 进程的切换:

    💖 切换原语: 运行态就绪态的相互转换。
    💖 引起进程切换的事件: 当前进程时间片到、有更高优先级的进程到、当前进程主动阻塞、当前进程终止。

进程间通信(IPC)

⭐️总体概念:进程间通信指的是两个进程之间产生数据交互。

  1. 为什么进程间通信需要操作系统支持?
    出于安全的考虑,操作系统都会为每个进程分配独立的地址空间。因此,进程间不能直接访问,需要有操作系统才能完成进程间的通信。

  2. 进程间的通信方式及原理?

    • 共享存储:

    若进程支持共享存储功能,则操作系统可以开辟一段共享存储区,进程间可以往共享存储区中读写数据。比如Linux中的shm_open()、mmap()、PV操作函数等基于存储区的共享方式速度很快,是一种高级通信方式。但是基于数据结构的共享,速度慢,限制多,是一种低级通信方式。

    • 消息传递:

    ⭐️ 进程间的数据交换以格式化的信息为单位。进程通过操作系统提供的发送消息/接收消息两个原语进行数据交换。

    💧 直接通信方式: 通过操作系统内核中的消息队列直接发送包含PID进程号的消息包。
    💧 间接通信方式: 进程向操作系统申请一个邮箱,然后将消息包丢到该信箱,另外一个进程从信箱中拿出消息包进行消息处理。

    • 管道通信:

    ⭐️ 通过一个特殊的共享文件pipe管道,进行数据的传递,就像水管一样,只能是半双工通信。区别于基于存储区的通信方式,管道通信是以循环队列的方式进行数据的传输。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值