进程调度的基本过程

进程(Process)

进程(Process) / 任务(Task)
进程是操作系统中的非常重要的软件资源,把一个可执行程序跑起来,系统中就会创建一个对应的进程
如果这个程序执行结束了,系统就会随之销毁对应的进程

进程就可以看成是一个程序的执行的"过程"

注意区分 程序 / 可执行文件 vs 进程 :

可执行文件
在这里插入图片描述
任务管理器
在这里插入图片描述

.exe 就是一个磁盘上的文件,静态的,如果不去动,就不会发生变化
(当双击这个exe文件时,操作系统就会加载这个可执行程序,把 exe 文件中的很多内容都加载到内存中了,分配一些资源,并开始执行这个可执行程序中包含的指令)
这就是一个 进程

进程也可认为是操作系统进行资源分配的最小单位

以 Linux 为例介绍进程 :

  • 在内核中使用一个 task_struct(PCB 进程控制块) 的结构体来描述进程 (C语言)
  • 每创建一个进程就同时创建一个PCB这样的类的实例,使用双向链表把所有的 PCB 对象串到一起
  • 双击一个 exe创建一个进程的时候,本质上就是在内核中,先创建了一个PCB对象,然后把这个对象加入到链表中
  • 关闭一个程序,结束一个进程的时候,本质上就是在内核中,找到这个对应的PCB对象,然后从链表上删掉,并且释放该对象
  • 通过任务管理器查看到的所有进程信息,本质上就是在遍历内核中的这个链表,依次读取对应的PCB的节点的信息

描述 : PCB
组织 : 双向链表

PCB里面包含的信息 :

  1. PID (进程 id ) 进程的身份标识

PID : 进程 id 进程身份标识符
先双击 qq 音乐 得到进程 id p1;
关闭再打开 得到进程 id p2;
p1 != p2

  1. 一组内存指针,指向该进程持有的一些重要的数据在内存(系统给进程分配的资源的一部分)中的位置
    执行的指令都有什么
    这些指令依赖的数据是什么

  2. 状态

  3. 优先级 : 安排时间表的时候,优先给谁安排

  4. 进程的记账信息 : 记录这个进程在CPU上执行多久了,用来辅助决定这个进程是继续在CPU上执行,还是调度出去

  5. 上下文 : 需要记住上次运行到哪个指令了,方便下次调度的时候能够继续从这个位置来运行(存档和读档)主要是存储进程调度出CPU之前,寄存器中的信息(把寄存器信息保存到内存中),等到进程下次恢复到CPU上执行的时候,把内存保存好的的数据恢复到寄存器中.

在这里插入图片描述
在这里插入图片描述

进程的虚拟地址

一个进程要想运行,就需要给它分配一些系统资源,其中内存就是一个最核心的资源
物理地址: 真实的内存地址
在这里插入图片描述

为什么使用虚拟地址,不让进程直接访问真实的物理地址:
目的就是为了一定程度的减少内存访问越界,带来的后果

在这里插入图片描述

在这里插入图片描述

其他的概念

一个进程的状态:

R : 就绪状态.正在cpu上执行,或者即将执行
S : 睡眠状态, 这些进程没法在CPU上执行,而是在等待
D : 深度睡眠状态,进程在长时间的忙于IO操作,没时间理会CPU
X : 退出状态,进程已经被销毁了

抢占式调度:

操作系统的调度器会频繁的进行进程的切换,哪怕某个进程做了某个工作的一般,也是随时可能被打断

内核态与用户态

操作系统内核作位直接控制硬件设备的底层软件,权限最高,称为内核态
用户程序的权限最低,称为用户态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_xhjk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值