✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛)
🌈 个人Motto:他强任他强,清风拂山冈!
🔥 所属专栏:C++深入学习笔记
💫 欢迎来到我的学习笔记!
前言
一、操作系统的概念
操作系统(Operating System,OS):控制和管理整个计算机系统的硬件与软件资源(OS是系统资源的管理者),合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合(OS向上层提供方便易用的服务)。操作系统是计算机系统中最基本的系统软件(OS是最接近硬件的一层软件)。
二、操作系统的目标和功能
2.1 OS是系统资源的管理者
例如,我们执行一个动作:打开QQ程序程序进行聊天。
- 首先通过一层一层的文件夹、目录找到
QQ.exe
(可执行程序)。这是操作系统的文件管理功能。 - 双击运行
QQ.exe
。执行一个程序之前需要将该程序放在内存中,才能被CPU处理。因此,操作系统需要将该程序相关数据放入内存,这是操作系统的存储器管理功能。 - QQ 程序正常运行。对应的进程被处理机(CPU)管理,这是操作系统的处理机管理功能。
- QQ进行视频聊天,操作系统为其分配摄像头资源,这是操作系统的设备管理功能。
2.2 OS向上层提供方便易用的服务
2.2.0 图形化界面(GUI)
- 计算机最底层是纯硬件(裸机),只能听懂机器语言(二进制指令0、1)硬件对外暴露的就是不友好的交互接口。因此我们在其上方安装上操作系统,让它对外提供有好的交互接口。用户的命令经过操作系统传递给硬件。
- 这就像汽车一样。汽车底层就是一些复杂的硬件、框架,但是对用户提供的是简单医用的刹车、油门、方向盘……用户不需要关心汽车底层是什么。
- 这就是一种封装思想:操作系统将一些丑陋的硬件功能封装成简单易用的服务,使用户能更加方便地使用计算机。用户无需关心底层硬件原理,只需对操作系统发出命令即可。
- 操作系统为了实现封装这一功能,提供了图形化界面这一功能。
- 操作系统向上层提供了两种接口:命令接口和程序接口。
2.2.1 命令接口
- 联机命令接口
联机命令接口又叫做交互式命令接口。早期用户使用命令行的方式与操作系统进行交互。后来有了图形化界面(GUI)。打开GUI的方式:win+R
、输入cmd回车
、使用命令行操作
……简而言之,就是用户说一句系统就做一句。
- 脱机命令接口
脱机命令借口又叫做批处理命令接口。搜索打开计算机中的***.bat
文件(可使用记事本打开),操作系统根据上面罗列的命令开始执行。简而言之,就是用户说一堆系统做一堆。
2.2.2 程序接口
- 操作系统对外还提供了程序接口。可以在系统调用(又称为广义指令)中使用程序接口。普通用户不能直接使用,只能通过程序代码间接使用。
- 系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式。
- 例如:C语言中实现“Hello world!”程序时,在
printf()
函数底层就使用到了操作系统提供的显示相关的“系统调用”。
狭义的用户接口不包括图形化界面(GUI)。
2.3 OS是最接近硬件的一层软件
没有任何软件支持的计算机成为裸机,它仅仅是计算机系统的物质基础。所以我们需要实现对硬件机器的扩展。
例如:会转的发动机和可以带着会滚的轮子,使原始硬件机器得到扩展。类比:操作系统载着硬件裸机,实现对硬件功能的扩展。通常把覆盖了软件的机器称为扩充机器,又称为虚拟机。
三、操作系统的特征⭐⭐⭐⭐
3.1 并发(Concurrence)
- 并发:是指两个或者多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但是在微观上是交替发生的。(任何时刻都是多项任务)
- 易混淆概念:并行,是指两个或多个事件在同一时刻同时发生。(任何时刻都是一项任务)
- 操作系统的并发性:是指计算机系统“同时”进行着多个程序,这些程序宏观上是同时进行的,微观上是交替进行的。操作系统就是伴随着“多道程序技术”而出现。因此,操作系统和程序并发是一起诞生的。
- 注意:
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发地进行。
- 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
- 比如:Intel第八代i3处理器就是4核CPU,意味着可以并发地执行4个程序。
- 如果它有4个以上的程序需要“同时”执行,那么并发性依然必不可少。因此,并发性是操作系统一个最基本的特征。
3.2 共享(Sharing)
3.2.1 互斥共享方式
- 系统中的某些资源,虽然可以提供给多个进程使用,但是一个时间段内只允许一个进程访问该资源。
- 例如:QQ视频与微信视频,同一时间段内摄像头只能分配给其中一个进程。
3.2.2 同时共享方式
- 系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
- 例如:使用QQ发送文件A,同时使用微信发送文件B。宏观上,两边都在同时读取发送文件,说明两个进程都在访问硬盘资源,从中读取资源。微观上看,两个进程是交替着访问硬盘的。
- 并发和共享的关系:互为存在条件。例如:QQ发送文件A,微信发送文件B。
- 两个进程正在并发执行(并发性);
- 需要共享访问硬盘资源(共享性)。
- 如果失去并发性,则系统中只有一个程序正在运行,则共享型失去存在的意义。
- 如果是去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,就无法并发。
- 所以:并发与共享互为存在条件。此外,没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。
3.3 虚拟
虚拟:是指一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
已知:一个程序需要放入内存并给它分配CPU才能执行。
- Q:为什么可以在4GB内存的计算机上同时执行需要内存为4GB的GTA5、256MB的QQ、256MB的网易云音乐……呢?
- A:使用了虚拟存储器技术。实际上只有4GB内存(物理上的实体),在用户看来运行这些应用需要大于4GB的内存,似乎只有4GB内存的计算机内存明显不够(用户角度:逻辑上的对应物)。
- 这就是虚拟技术中的“空分复用技术”。
- Q:为什么单核计算机可以执行多个程序呢?
- A :使用了虚拟处理器技术。实际上只有一个单核CPU,在用户看来似乎由多个CPU在同时为自己服务。
- 这就是虚拟技术中的“时分复用技术”,微观上处理机各个微小的时间段内交替着为各个进程服务。
3.4 异步
异步:在多道程序情况下,允许多个程序并发执行,但是由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。只要运行环境相同,操作系统就须保证多次运行进程前后都能获得相同的结果。
异步技术的优势:
- 提高并发性:异步技术允许多个任务同时进行,而不需要等待其他任务完成。这使得系统能够更有效地利用资源,处理更多的任务,从而提高并发性。
- 增强响应速度:在处理长时间运行的任务时,异步技术可以避免阻塞主线程或进程,从而保持系统的响应速度。例如,在用户界面编程中,异步操作可以避免界面冻结,提高用户体验。
- 资源高效利用:通过异步I/O操作,系统可以在等待I/O操作完成时,继续处理其他任务。这避免了资源的闲置,提高了系统的整体效率。