认识进程 -了解进程调度


前言

本篇通过介绍操作系统OS的重要功能,了解并发并行, 了解操作系统的一项重要功能 “进程管理” , 通过了解进程管理认识进程是操作系统资源分配的基本单位 ,如有错误,请在评论区指正,让我们一起交流,共同进步!



本文开始

1. 进程管理

进程管理是操作系统的一项重要功能, 用来管理多项进程;

说到进程, 哪什么是进程呢?
进程: 一项运行的程序 或者 一个运行的任务;
例如: 各种.exe文件, exe文件是一种可执行文件

在这里插入图片描述

了解了进程, 哪什么是进程管理呢?
进程管理就是当运行的进程个数增多, 就需要对它们进行管理;
进程管理包括:
①对进程的描述: 使用结构体(PCB - 进程控制模块)对进程进行描述, 表示出进程的各种信息;
②对这些进程的管理: 使用一些数据结构(双向链表),组织这些结构体;


1.1 进程的描述

进程的描述使用结构体, 结构体中有很多属性, 这里介绍一些重要的属性;
进程中的结构体称为: PCB

  1. pid : 结构体唯一的身份标识 (例如数据库的唯一主键用来表示身份)
  2. 内存指针 : 用来描述进程在内存中使用的资源位置;
    [注意] 进程运行起来需要占用内存资源
  3. 文件描述符表 : 进程运行起来使用的硬盘资源;
    [注意] 什么是文件表述符表 ? ? ?
    文件标识符: 用来记录(标识)文件被打开
    进程运行会打开文件, 每打开一次文件就会产生一个文件标识符, 一个进程可能打开多个文件, 这样会产生一组文件表示符, 将这些文件标识符放入顺序表中, 就称为文件标识符表;

   从2和3来看, 进程的运行都需要操作系统进行资源分配 => 所以说 进程是操作系统进行资源分配的基本单位

  1. 进程调度 - 有一组属性, 用来辅助进行进程调度
    [注意] 这些属性与CPU资源相关
    进程状态(两种) :
    就绪态: 进程已经准备, 随时可以在CPU上执行
    堵塞态: 进程暂时不能在CPU上执行

    例如: 一些小学生去学校上课, 正常的小学生去上课, 可以认为是就绪态, 但是有些小学生生病了, 就暂时不能去学校了, 这就可以认为是阻塞态
    进程的优先级
    进程的执行不是无序的, 进程之间的调度是有不公平的, 有的需要优先调度
    例如: 老人, 成年人, 小学生做公交车, 目前认为公交车座位的满了, 成年人看到小学生可能把座位让给他, 而小学生和成年人看到老人可能把座位让给老人;
    进程的上下文
    进行在执行过程中, 如果进程离开CPU, 需要把当前的结果存档, 当再次进入CPU, 会重新恢复存档(也就是读档), 接着进行下面操作;
    [注意] 寄存器: 保存进程执行的中间结果, 进程执行到那块的指令等等
    上下文: 进程在执行过程中, 在CPU内部一系列寄存器的值;
    当进程离开CPU就需要存档, 把当前的寄存器中的值 保存到PCB中的上下文中;
    当进程再次运行, 就需要读档, 把PCB中的值恢复到寄存器中;

    进程的记账信息
    记账信息就是记录 进程 在CPU中运行的时间, 为进程调度提供参考依据

1.2 进程的管理

可以把每个进程认为是一个节点, 操作系统就使用双向链表来管理进程
① 创建一个进程, 相当于创建一个节点, 连接在链表上
② 删除一个进程, 相当于删除一个节点在一个链表上
③ 遍历进程(任务管理器上运行的程序任务是排成的链表) , 就是遍历链表

2. 了解并发 与 并行

并行: 同一时刻, 两个核心执行两个进程, 认为 两个进程时同时进行的

并发: 一个核心, 先运行一个进程1, 运行一会, 马上切换另一个进程2, 在运行一会,切换进程 3…
当进程之间的切换时间足够短时 就认为 1,2,3…进程就是同时执行的 => 一个核心多次调度, 时间足够短, 认为多个进程是并发的
[注意] 每台电脑上的看自身的配置这里是(8核16线程); 逻辑处理器: 16个逻辑核心; 内核: 8个物理核心

在这里插入图片描述

但我们常说的 并发 = 并行 + 并发

3. 内存分配

操作系统给进程分配内存, 所使用是 “虚拟内存地址” , 也就是说 进程访问的内存地址都不是真实的地址, 而是虚拟的; 这样的优点是让进程执行期间互不干扰

例子如图:
这里只是粗糙的说明一下, 绿色为虚拟内存, 红色为校验操作;
页表: 用于校验, 方便知道当前地址是否是有效的; (如果没有页表进程之间会产生BUG(野指针等情况), 从而出现运行错误等)

在这里插入图片描述

内存分配执行流程:
进程根据虚拟内存地址, 访问虚拟内存, 再到页表校验查找对应的内存, 如果找到会映射到真实的内存上, 没找到无法进行下一步操作, 也不会影响的其他进程;

从上面的内存的分配流程里, 可以知道一个进程无法干预另一个进程, 进程之间有独立性;

4. 进程通信

一些必要的时候需要进程与进程之间进行通信, 互相配合; 这就用到了进程之间的通信;
进程间通信: 在隔离的情况下, 有一个公共的区域, 让进程之间进行数据交换;
这里只是了解一下进程通信;


总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值