前言
当前计算机技术获得了迅猛发展,广泛的应用于人们的日常生活中,给人类的生活带来了巨大的便利,随着社会发展,越来越多的人对计算机产生了浓厚的兴趣,下面我就带大家来揭开计算机的神秘面纱,学习计算机是如何工作的!
什么是操作系统
操作系统:就是一组做计算机资源管理的软件的统称。目前常见的操作系统有: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管理的资源(硬件资源,软件资源)
- 分配的实体/单位:分配的时候,只考虑到这一层
- 基本/最小:允许有更高层次的单位,但最低到进程
总结进程:
- 动态过程
- 绑定着一个程序
- 允许同时存在
- 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进程之间进行必要的数据交换——进程间通信。
进程间通信的常见的方式:
- 管道(pipe)
- 消息队列(message queue)
- 信号量(semaphore)
- 信号(signal)
- 共享内存(shared memory)
- 网络(network)
总结
以上就是今天要讲的内容,本文仅仅简单介绍了操作系统和进程,实际上这其中蕴含的知识是非常丰富的,如果你觉得这篇文章对你有帮助的话,那就留下你的👍吧!