操作系统与进程工作原理

操作系统与进程工作原理

单CPU单核的计算机,微观视角下,同一个时刻只能执行一个指令
开机->指令1->指令2 ->指令3 ->指令4->… ->关机
以下讲解都是以单CPU单核计算机为基础的。

一、操作系统(OS)

OS的主要职责是协调 ,OS是专门用来协调工作的软件。

多用户 --多场景下任务
工作A ------------------------ 指令 a1,a2,a3,a4,a5,a6
工作B ------------------------ 指令 b1,b2,b3
实现方式:
1. a1 ,a2,a3,a4,a5,a6 , b1,b2,b3
2. a1,a2,b1,a3,a4,b2,a5,a6,b3
方式1,工作A执行后,在执行工作B
方式2,由于时间是微秒级的,在人类视角下,A和B同时工作

如上所示,硬件资源会同时被多个任务“访问”,OS协调不同任务对硬件资源的访问,OS管理硬件资源,分配不同的任务去使用硬件资源。

职责视角:
OS是一个管理(硬件/软件)资源的软件
OS是一个协调者(管理即协调)
OS是一个分配者,对任务进行分配。站在任务的角度,就是使用一切硬件资源需要找OS进行申请,OS同意授权后任务才能使用硬件资源。
地位视角:
在这里插入图片描述

二、进程

OS主要研究如何高效,公平,低耗,稳定的进行资源分配,协调工作以及遇到的各种问题。==
在这里插入图片描述
程序 (program) vs 进程(process)/任务(task)/作业(job)

什么是程序?

程序=指令+数据
程序是静态的,一般表现是一个或一组文件

什么是进程?
(1)用户角度

进程是程序的一次执行过程,是动态的。
一个程序,可以进行多次执行(多个进程);甚至可以“同时”执行(多个进程同时存在)。进程是程序在运行阶段的视角主体。

(2)OS角度

进程是OS进行资源分配的基本单位
进程是OS进行资源分配的最小实体

1.OS的职责:协调者(管理者)
2.资源:被OS管理的资源(硬件资源,软件)
3.单位/实体:分配的时候,只考虑到这一层级
4.基本/最小:允许有更高层次的单位,但最低到进程

同一进程之间的资源是共享的(如果存在比进程更低的单位,是共享的)
不同的进程之间资源是隔离的,A进程只能访问自己的进程资源(主要讨论内存),A进程是无法访问B进程的资源的(内存),更不可能访问直接被OS管理的资源。

进程总结:
1.动态过程
2.绑定着一个程序
3.允许同时存在
4.OS内部进行资源申请的最小单位

三、OS的职责简单划分

OS要管理进程,进程是OS内部非常重要的一个概念。
1.OS进行CPU协调的模块 ---- 进程管理模块
进程管理模块:主要负责进程的调度工作即主持不同进程在CPU运行时间的划分
OS把进程A从CPU上拿下来,把进程B放到CPU上via修改PC寄存器的值。通过修改PC的值,让CPU执行进程B的指令。
2.OS进行内存协调的模块 ---- 内存管理模块
内存管理模块:主持内存空间的分配工作,进程通信的问题
3.OS进行硬盘上的数据协调的模块 – 文件管理模块
4.网络管理模块
5.驱动管理 :其他硬件以文件驱动的形式进行管理

四、进程管理/进程调度-------负责CPU的分配

4.1 进程如何被计算机理解

进程(程序执行的过程)这个抽象概念,用数据表示处理(面向对象的概念),变成数据,才能被计算机识别处理(才能被OS进行处理)

class Process/PCB Process Control Block{ //对一个进程的对象化,进程在管理过程                  中重要数据的抽象
0. pid  全局唯一
1. 关联程序的信息(哪个进程下的哪个文件)
2. 关于运行的一些信息
   1.哪个用户启动的
   2.进程工作目录
   3.什么时候开始的,什么时候结束的
3. 分配的资源
   CPU:CPU占用率:之前过去的一段时间里,分配给进程的时间占比
   内存:分配出去的内存(内存不一定连续)
   ...
4. 调度时用到的信息 ...
}

4.2 进程状态划分

对进程做区分:哪些现在可以分配CPU了,哪些现在暂时没有准备好
通过对进程进行状态划分,来区分出处于不同情况下的进程------进程状态/状态转移(随着时间变化,进程的情况也在变化)

新建:进程处于正在创建中
就绪:万物具备,只欠CPU
运行:进程的指令在CPU运算着
阻塞:进程由于等待外部条件,所以暂时无法继续
结束:进程的所有指令执行结束,但PCB暂时保留,OS还需要做一些其他工作的时候

进程状态转移图:
(1)进程视角

============================================================
在这里插入图片描述
->新建 :随着程序的启动运行
新建->就绪:进程的初始化工作完成(这个工作由OS指令完成的)
就绪->运行:进程被OS选中,并分配了CPU之后
运行->结束:进程的最后一条指令执行结束(,粗略理解,就是main方法执行结束了)
运行->就绪

  1. 被高优先级的进程抢占了
  2. 时间片耗尽
  3. 进程可以执行一些OS提供的系统调用,主动放弃

运行->阻塞:等待一些外部条件:等待IO设备;进程休眠一段时间;…
阻塞->就绪:外部条件满足:IO数据来了;休眠时间到了;…
结束->:进程PCB彻底被OS回收了

=============================================================

(2)OS视角

站在OS角度,同一时刻,处于不同状态下的进程不止一个

处于新建:有n1个
处于就绪:有n2个
处于运行:只有1个(单CPU单核情况下)
处于结束:有n3个
处于阻塞:有n4个

就绪队列: 装有所有处于就绪状态的进程,这里装的都是等待被分配CPU的进程,就绪队列一般就一个
阻塞队列: 等待某些外部条件的进程组成的队列,阻塞队列一般每个条件都可以有一个

==============================================================

4.3 CPU选择进程

现在有所有等待分配CPU的进程—就绪队列,那么选择哪一个进程呢?
要求:要有效率,要保证公平性,要让更紧急的任务被更紧急的处理,低成本解决

先来先服务
优先级划分(进程PCB中需要管理一个优先级的属性)
短作业优先级

4.4 OS进程调度

OS什么时候会介入进程调度:需要选择一个新的进程,进行CPU分配

  1. 一个新的进程处于就绪状态时,当该进程的优先级较高时 ------抢占式(实时)
  2. 运行状态的进程->结束。一个进程结束了
  3. OS每隔一段时间,会调度一次:进程时间片耗尽
  4. 进程主动放弃CPU
    1.运行->阻塞
    2.运行->就绪

以上2,3,4都是CPU空闲时,OS才进行进程调度

4.5 OS进行进程切换

通过上下文切换 :保护上一个进程的上下文+恢复下一个进程的上下文

上下文: PC寄存器所代表的一组寄存器的的值。
保护上下文: 把寄存器中的值保存到内存某处
恢复上下文: 把内存中保护的值写入寄存器中

在这里插入图片描述
进程切换:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值