当前位置: 首页 > news >正文

【OS】计算机系统概述|操作系统基本概念|并发|并行|虚拟异步


Blog’s 主页: 白乐天_ξ( ✿>◡❛)
🌈 个人Motto:他强任他强,清风拂山冈!
🔥 所属专栏:C++深入学习笔记
💫 欢迎来到我的学习笔记!

前言

一、操作系统的概念

操作系统(Operating System,OS):控制和管理整个计算机系统的硬件与软件资源(OS是系统资源的管理者),合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合(OS向上层提供方便易用的服务)。操作系统是计算机系统中最基本的系统软件(OS是最接近硬件的一层软件)。

画板

二、操作系统的目标和功能

2.1 OS是系统资源的管理者

例如,我们执行一个动作:打开QQ程序程序进行聊天。

  1. 首先通过一层一层的文件夹、目录找到QQ.exe(可执行程序)。这是操作系统的文件管理功能。
  2. 双击运行QQ.exe。执行一个程序之前需要将该程序放在内存中,才能被CPU处理。因此,操作系统需要将该程序相关数据放入内存,这是操作系统的存储器管理功能。
  3. QQ 程序正常运行。对应的进程被处理机(CPU)管理,这是操作系统的处理机管理功能。
  4. QQ进行视频聊天,操作系统为其分配摄像头资源,这是操作系统的设备管理功能。

2.2 OS向上层提供方便易用的服务

2.2.0 图形化界面(GUI)

  • 计算机最底层是纯硬件(裸机),只能听懂机器语言(二进制指令0、1)硬件对外暴露的就是不友好的交互接口。因此我们在其上方安装上操作系统,让它对外提供有好的交互接口。用户的命令经过操作系统传递给硬件。
  • 这就像汽车一样。汽车底层就是一些复杂的硬件、框架,但是对用户提供的是简单医用的刹车、油门、方向盘……用户不需要关心汽车底层是什么。
  • 这就是一种封装思想:操作系统将一些丑陋的硬件功能封装成简单易用的服务,使用户能更加方便地使用计算机。用户无需关心底层硬件原理,只需对操作系统发出命令即可。

  • 操作系统为了实现封装这一功能,提供了图形化界面这一功能。
  • 操作系统向上层提供了两种接口:命令接口和程序接口。

2.2.1 命令接口

  1. 联机命令接口

联机命令接口又叫做交互式命令接口。早期用户使用命令行的方式与操作系统进行交互。后来有了图形化界面(GUI)。打开GUI的方式:win+R输入cmd回车使用命令行操作……简而言之,就是用户说一句系统就做一句

  1. 脱机命令接口

脱机命令借口又叫做批处理命令接口。搜索打开计算机中的***.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 异步

异步:在多道程序情况下,允许多个程序并发执行,但是由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。只要运行环境相同,操作系统就须保证多次运行进程前后都能获得相同的结果。

异步技术的优势:

  1. 提高并发性:异步技术允许多个任务同时进行,而不需要等待其他任务完成。这使得系统能够更有效地利用资源,处理更多的任务,从而提高并发性。
  2. 增强响应速度:在处理长时间运行的任务时,异步技术可以避免阻塞主线程或进程,从而保持系统的响应速度。例如,在用户界面编程中,异步操作可以避免界面冻结,提高用户体验。
  3. 资源高效利用:通过异步I/O操作,系统可以在等待I/O操作完成时,继续处理其他任务。这避免了资源的闲置,提高了系统的整体效率。

相关文章:

  • Stable Diffusion 的 ControlNet 主要用途
  • 【APM】在Kubernetes中,使用Helm安装loki-distributed 3.1.1
  • 【高效管理集合】并查集的实现与应用
  • 【工具分享】BlackBasta勒索病毒解密工具
  • C语言扫盲
  • 2、Stable Diffusion
  • Latex 自定义运算符加限定条件的实现
  • 2024年7天自学网络安全(黑客技术)进阶手册。
  • 大语言模型之LlaMA系列- LlaMA 2及LLaMA2_chat(上)
  • HAproxy,nginx实现七层负载均衡
  • AMBER学习记录--使用Multiwfn计算有机小分子的RESP电荷--问题及解决
  • 从Midjourney到秒画:探索国产AI绘图的崛起与未来
  • Python Web WebAssembly 与 Python 的协同工作
  • GO语言中make与new的区别
  • 数据库软题1-数据模型+数据库三级模式两级映像
  • Brief introduction of how to 'Call, Apply and Bind'
  • express + mock 让前后台并行开发
  • Magento 1.x 中文订单打印乱码
  • node 版本过低
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP 的 SAPI 是个什么东西
  • Python socket服务器端、客户端传送信息
  • Python语法速览与机器学习开发环境搭建
  • 从setTimeout-setInterval看JS线程
  • 对象管理器(defineProperty)学习笔记
  • 解析带emoji和链接的聊天系统消息
  • 聊聊flink的BlobWriter
  • 如何用vue打造一个移动端音乐播放器
  • 微信小程序:实现悬浮返回和分享按钮
  • 我的面试准备过程--容器(更新中)
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​MySQL主从复制一致性检测
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # C++之functional库用法整理
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #大学#套接字
  • #微信小程序:微信小程序常见的配置传旨
  • $.ajax,axios,fetch三种ajax请求的区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (回溯) LeetCode 40. 组合总和II
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)WLAN定义和基本架构转
  • (转)c++ std::pair 与 std::make
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *2 echo、printf、mkdir命令的应用
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 药厂业务系统 CPU爆高分析
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @DependsOn:解析 Spring 中的依赖关系之艺术