揭晓计算机的神秘面纱——计算机是如何工作的(二)


前言

当前计算机技术获得了迅猛发展,广泛的应用于人们的日常生活中,给人类的生活带来了巨大的便利,随着社会发展,越来越多的人对计算机产生了浓厚的兴趣,下面我就带大家来揭开计算机的神秘面纱,学习计算机是如何工作的!

什么是操作系统

操作系统:就是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
操作系统的职责:操作系统是一个协调者,协调不同任务对硬件资源的访问,OS管理着硬件资源,分配给不同的任务去使用。

1、并行(parallel) VS 并发(concurrent)
并行:进程真的同时在执行(微观角度的同一时刻,是有多个指令在执行的,所以只会在多CPU多核场景下)。
并发:进程假的同时在执行(微观上,表现为一次只执行一个进程,但宏观上,多个进程在“同时”执行)。

2、用户态(user space) VS 内核态(kernel space)
CPU正在执行的指令是OS的指令时,就进入到内核态,反之,正在执行的是普通进程的指令时,就在用户态
内核态

  • 内核态的指令权限高(所有的硬件都能访问)
  • 内核态的指令可以访问所有内存

用户态

  • 用户态的指令权限低(只能访问OS规定的资源)
  • 用户态指令只能访问进程自己的内存

执行流(execution flow):拥有独立 pc 的一套指令,不同的执行流从现象上看起来是完全独立的。

3、线性地址(虚拟地址) VS 物理地址

物理地址:真实的内存中的地址
线性地址:物理地址被OS进行转换后的一个地址
OS分配出来的空间只是线性地址空间,实际的物理内存,可以延迟到要访问这段内存时再分配。

什么是进程(Process)

进程概念

1、站在用户的角度看什么是进程?
进程:进程是程序的一次执行过程,一个程序,可以进行多次执行(表现为多个进程),甚至可以“同时”执行(多个进程同时存在)。

2、站在操作系统的角度看什么是进程?
进程:进程是操作系统进行资源分配的基本单位、最小实体。换言之,同一个进程中的资源是共享的,不同进程之间的资源是隔离的。

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

总结进程:

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

进程管理/进程调度

进程调度:主持不同进程在CPU运行的时间划分,负责CPU的分配。
如何做好进程调度?

1、需要把进程(程序执行的过程)这个抽象的概念用数据表示处理,变成数据,才能被计算机进行处理。

2、需要对进程做个区分,哪些现在可以分配CPU了,哪些现在还暂时没有准备好——进程状态:新建(进程处于正在创建中)、就绪、运行(进程的指令真正在CPU运行着)、阻塞(进程由于等待外部条件,所以暂时无法继续)、结束(进程的所有指令执行结束,但PCB暂时保留,OS还需要做一些其他工作的时候)进程状态转移图
①-> 新建:随着程序的启动运行
②新建 -> 就绪:进程的初始化工作完全完成(这个工作是由OS的指令完成的)
③就绪 -> 运行:进程被OS选中,并分配了CPU之后
④运行 -> 结束:进程的最后一条指令执行结束
⑤运行 -> 就绪:1.被高优先级的进程抢占了;2.时间片耗尽 ;3.进程⑥可以执行一些OS提供的系统调用,主动放弃
⑦运行 -> 阻塞:等待一些外部条件:IO数据来了;休眠时间到了……
⑧结束 ->:进程PCB彻底被OS回收了

3、现在手上有等待分配CPU的所有进程列表——就绪队列,选择哪个上CPU?

  • 先来先服务
  • 优先级划分
  • 短作业优先

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

  • 一个新的进程刚处于就绪状态时,当该进程的优先级较高时——具备这种能力的OS被称为抢占式。
  • 运行状态的进程->结束,一个进程结束了。
  • OS每隔一段时间,会调度一次:进程的时间片耗尽。
  • 进程主动放弃CPU。

5、OS具体怎么进程切换的:通过上下文切换——保护上一个进程的上下文+恢复下一个进程的上下文。

上下文指的是:以PC寄存器所代表的一组寄存器中的值。

保护上下文:把寄存器中的值,保存到内存的某个位置。

恢复上下文:把内存中之前保护的值,写入寄存器中。

进程间的通信

理论上,进程时独立的之间时独立的,但实际中,往往是多个进程之间相互配合,来完成复杂的工作。所以OS需要提供一套机制,用于让A、B进程之间进行必要的数据交换——进程间通信。

进程间通信的常见的方式:

  1. 管道(pipe)
  2. 消息队列(message queue)
  3. 信号量(semaphore)
  4. 信号(signal)
  5. 共享内存(shared memory)
  6. 网络(network)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了操作系统和进程,实际上这其中蕴含的知识是非常丰富的,如果你觉得这篇文章对你有帮助的话,那就留下你的👍吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

怎样让大排不硬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值