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

操作系统体系结构和OS

1.冯·诺依曼计算机体系

关于冯·诺伊曼系统,在这里我只是简单讲一讲,更加详细的内容可以看我的计算机组成系列。

常见的笔记本、台式机,不常见的服务器、工作站,大部分都遵守“冯·诺依曼体系”,因此该计算机体系就是现代计算机的哲学指导。

1.1.早期冯诺依曼体系

1.2.现代冯诺依曼体系

注释1:实线为数据传输线,虚线为控制线。

注释2:这里的存储器指的是内存,因此个人觉得这个存储器不太严谨,但是碍于很多教科书都是如此书写,只能得续用。

注释3:磁盘设备其实反倒是可以理解为输出设备,因为文件数据是会写到磁盘内部的……同理磁盘也可以作为输入设备使用。

注释4:控制器的作用是响应外部事件,比如:拷贝数据到内存,实际上控制器做的很多事情都是把一个数据移动到某个位置。

注释5:输入设备到内存的步骤为input,内存到输出设备的步骤为output,也就是I/O的过程,因此程序要运行,也就必须要加载到内存中。

注释6:实际上很多的硬件设备都是具有存储数据能力的,只不过是存储量的大小不一罢了。而所谓的硬件之间进行交流,也就是利用各个硬件中的存储空间,来进行数据的拷贝/迁移。

注释7SSD是固态硬盘,比磁盘的读写速度快,但是价格也比普通的磁盘要贵,因此有很多企业还会购买大量的磁盘来使用,减少成本(一般存储效率高的存储硬件要更贵)。

注释8:现代很多的CPU只能对内存进行读写,不能直接和外设(输入输出设备)进行数据交流。根据“木桶效应”,由于速度最慢的就是CPU和外设直接数据交互,导致整机效率降低(所以CPU一般为了高效,一般只和内存打交道)。

注释9:内存可以理解为大的缓存空间。

2.操作系统概念与定位

2.1.OS的概念

为了使计算机更好发挥每一个硬件的最大功能(更好符合冯诺依曼结构,提高硬件交互效率),现代的许多计算机内部都包含一个基本的程序集合,称为操作系统(即OS),最基本的操作系统至少应该包括:

  1. 内核(进程管理、内存管理、文件管理、驱动管理)

  2. 其他程序(函数库、shell外壳程序等)

2.2.OS的目的

OS是一款“搞管理”的软件,主要目的是“管理硬件和软件”。和面向对象语言类似,操作系统必须“先描述被管理对象,再组织被管理对象”,进而实现:

  1. 和硬件交互,协调管理所有的软硬件资源
  2. 为用户程序(应用程序)提供一个良好的执行、开发环境

补充:在C语言中,实际体现管理和组织时:

  1. 管理:使用struct结构体来描述硬件或者软件
  2. 组织:使用链表等高效数据结构组织struct结构体的实例化

2.3.OS的管理

那么OS的“管理”具体的结构是怎么样的呢?下面有一张图您可以简单看一下。

补充1:系统调用和库函数的概念

  1. 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。

  2. 系统调用在使用上功能比较基础,对用户的使用要求比较高,开发者可以对部分系统调用进行适度的封装,从而形成了库(例如C库)。有了库,就有利于上层用户或者开发者进行调用开发,也就是通过库来间接调用系统调用。

补充2Linux内核内部有很多驱动程序,基本都是用C语言写的,也有少部分使用汇编(这部分连偏向底层的C都没有办法书写)。

上面这张图您可能只知道表面,无法知道更加深层次的细节,但是在以后的学习中,您就会逐渐体到这张图的意义。

相关文章:

操作系统体系结构和OS

1.冯诺依曼计算机体系 关于冯诺伊曼系统,在这里我只是简单讲一讲,更加详细的内容可以看我的计算机组成系列。 常见的笔记本、台式机,不常见的服务器、工作站,大部分都遵守“冯诺依曼体系”,因此该计算机体系就是现代…...

Flutter ☞ 常量

常量 只能被定义一次,并且不可修改的值叫做常量。 在 Flutter 中有两种常量修饰方法 finalconst 相同点 类型声明可以省略 final String a 123; final a 123;const String a 123; const a 123;初始化后不能再赋值 final a 123; a abc; // 错误const a …...

C++ 配置VSCode开发环境

C配置VSCode开发环境 简介 Visual Studio Code (VSCode) 是一款开源的轻量级代码编辑器。它支持许多编程语言,包括C。本文档将详细介绍如何在Windows环境下配置VSCode的C开发环境。 安装步骤 1. 安装Visual Studio Code 首先,你需要下载并安装Visua…...

Arduino_STM32整理贴

Arduion-STM32 stm32duino 让stm32 在arduino中使用 源代码:https://github.com/stm32duino/Arduino_Core_STM32 busybox文件位置 stm32duino 下有个stm32tool 项目,内含有busybox.exe 使用usb转TTL烧写 使用 PA9 PA10 端口 PA9接 RX ,PA10接 TX …...

MoeCTF 2023 Web+Jail wp

----------签到---------- hello CTFer 给了一个URL,是赛博厨子解码base64的flag,flag直接给了。 远程端口转发: 这次比赛估计好多大师傅都没参加,题目环境是在本机内网上的(比如localhost:52005)导致请…...

494.目标和 474.一和零

目标和 题目 给一个都是正整数的组合,然后你可以在里面任意添加或-,求使得最后结果为 目标和S(target)的有多少种方法? 范围 数组非空,且长度不会超过 20 。初始的数组的和不会超过 1000 。保证返回的…...

模拟电源与数字电源之间的区别

BOSHIDA 模拟电源与数字电源之间的区别 模拟电源与数字电源是两种不同的电源类型,其核心区别在于电源控制方式和输出特性。本文将从这两方面对模拟电源和数字电源进行比较和分析。 电源控制方式: 模拟电源的控制方式以模拟电压和模拟电流为基础。模拟电…...

P5461 赦免战俘

题目描述 现有 2 n 2 n ( n ≤ 10 ) 2^n\times 2^n (n\le10) 2n2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 的发落。kkksc03 决定赦免一些作弊者。他将正方形矩阵均分为 4 个更小的正方形矩阵,每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵…...

【工具】转码silk格式为mp3

【工具】转码slk格式为mp3 前提 安装 ffmpeg 【安装】Linux安装ffmpeg_linux安装ffmpeg4.4_我是Superman丶的博客-CSDN博客 GitHub - kn007/silk-v3-decoder: [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to o…...

蓝桥杯每日一题2023.10.18

题目描述 特别数的和 - 蓝桥云课 (lanqiao.cn) 题目分析 简单枚举每一个可行的数 #include<bits/stdc.h> using namespace std; int flag, ans; int main() {int n;cin >> n;for(int i 1; i < n; i ){flag 0;int x i;while(x){int y x % 10;if(y 2 || y…...

大数据开发中的秘密武器:探索Hadoop纠删码的奇妙世界

随着大数据技术的发展&#xff0c;HDFS作为Hadoop的核心模块之一得到了广泛的应用。为了系统的可靠性&#xff0c;HDFS通过复制来实现这种机制。但在HDFS中每一份数据都有两个副本&#xff0c;这也使得存储利用率仅为1/3&#xff0c;每TB数据都需要占用3TB的存储空间。因此&…...

华为数通方向HCIP-DataCom H12-831题库(单选题:301-310)

第301题 关于配置防火墙安全区域的安全级别的描述,错误的是 A、同一系统中,两个安全区域不允许配置相同的安全级别 B、只能为自定义的安全区域设定安全级别 C、安全级别一旦设定不允许更改 D、新建的安全区域,系统默认其安全级别为1 答案:D 解析: 新创建的安全区域缺省未…...

Vite 踩坑 —— require is not defined

动态require引入图片报错 require 是属于 Webpack 的方法&#xff0c;而我使用的是 Vite&#xff0c;所以我们需要去寻找 Vite 静态资源处理的方法 所以&#xff0c;我们只需要将代码改写以下形式即可。 ​ template <CarouselItem v-for"(item,index) of carous…...

彻底理解操作系统与内核的区别!

通用底盘技术 Canoo公司有一项核心技术专利&#xff0c;这就是它们的通用电动底盘技术&#xff0c;长得是这个样子&#xff0c;非常像一个滑板&#xff1a; 这个带轮子、有电池、能动的滑板已经包含了一辆车最核心的组件&#xff0c;差的就是一个外壳。这个看起来像滑板的东西…...

微信小程序4

一自定义组件应用 1.介绍 微信小程序自定义组件是指开发者可以自定义组件&#xff0c;将一些常用的 UI 元素封装成一个自定义组件&#xff0c;然后在多个页面中复用该组件&#xff0c;实现代码复用和页面性能优化的效果。 2.自定义组件分为两种类型 组件模板类型&#xff1a;…...

OpenCV14-图像平滑:线性滤波和非线性滤波

OpenCV14-图像平滑&#xff1a;线性滤波和非线性滤波 1.图像滤波2.线性滤波2.1均值滤波2.2方框滤波2.3高斯滤波2.4可分离滤波 3.非线性滤波3.1中值滤波3.2双边滤波 1.图像滤波 图像滤波是指去除图像中不重要的内容&#xff0c;而使关心的内容表现得更加清晰的方法&#xff0c;…...

kafka_2.10启动Kafka broker

要启动 Kafka broker&#xff0c;你需要执行以下步骤&#xff1a; 首先&#xff0c;确保你已经安装了 Kafka。你可以从 Apache Kafka 的官方网站下载 Kafka 的二进制发行版&#xff0c;并按照官方文档中的说明进行安装。 在安装完成后&#xff0c;进入 Kafka 的安装目录。 打…...

【配置环境】SQLite数据库安装和编译以及VS下C++访问SQLite数据库

一&#xff0c;环境 Windows 11 家庭中文版&#xff0c;64 位操作系统, 基于 x64 的处理器SQLite - 3.43.2Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 二&#xff0c;SQLite简介 简要介绍 SQLite&#xff08;Structured Query Language for Lite&a…...

Confluence 自定义展示页面

1. 概述 Confluence 作为知识库可通过JS脚本方式&#xff0c;根据登录用户或用户组进行前端页面的自定义 2. 实现方式 Confluence →管理→自定义HTML 嵌入对应JS脚本&#xff0c;示例如下 <script type"text/javascript">jQuery(#footer).html(<div>…...

使用C#的Socket从头实现的带有文件上传和下载功能的HTTP服务器

使用C#和Socket从头实现的带有文件上传和下载功能的HTTP服务器。它支持GET、POST请求方法&#xff0c;并能处理URL参数、请求体以及文件上传和下载。 using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text;class HttpServer {publi…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...