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

【Linux】操作系统的认识

操作系统

  • 1. 冯诺依曼体系结构
  • 2. 操作系统


1. 冯诺依曼体系结构

  1. 冯诺依曼体系结构的介绍

冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在存储器中,实现了可编程的计算机功能,实现了硬件设计和程序设计的分离,大大促进了计算机的发展。所以我们现在常用的计算机大多遵循冯诺依曼体系结构。
在这里插入图片描述

  1. 理解冯诺依曼体系结构

(1)现在计算机由五大基本硬件组成:

存储器:就是内存

输入设备:键盘、摄像头、话筒、磁盘、网卡和鼠标等

输出设备:显示器、播放器、磁盘、网卡等

运算器:对我们输入的数据进行运算(算术运算和逻辑运算)

控制器:读取内存中的指令,翻译解析后向有关硬件发送控制命令

注意
a. 外设是输入设备和输出设备,CPU包括运算器和控制器。
b. 有的设备是纯输入,有的设备是纯输出,有的则是既输入又输出,例如磁盘和网卡。
c. U盘和磁盘是外存(用来存放内存暂时用不着的程序和数据)。
d. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设;外设要输入或者输出数据,也只能写入内存或者从内存中读取。所有设备都只能直接和内存打交道。

问题1
为什么要有内存?CPU不能直接从外设进行读取,再输出到外设吗?
a. 从存储的结构就可以知道,外设离CPU远,输出设备和输入设备与CPU的速度差距太大,当输入设备还在慢吞吞输入数据时,CPU早将数据处理输出到输出设备,输出设备再慢吞吞输出数据,CPU有太多空闲,严重拖累了计算机的执行速度。
b. 内存的速度不也比CPU慢,为什么还要链接内存?内存的速度确实慢于CPU,但两者间的速度差距远小于外设与CPU的速度差距。也就是说内存容量适中、速度适中,是最优解。
c. 内存具有预加载的功能,会预先将输入设备的数据加载到内存,且当CPU在运算时,内存也会不断地存储数据。这样CPU就会不断地从内存中读取和输出数据,提高了计算机的执行速度。此时的内存就是硬件级别的缓存空间。

下面是计算机的存储金字塔。
在这里插入图片描述

问题2
一个程序要运行,必须先加载到内存。为什么?
简单回答
因为冯诺依曼体系结构规定。
详细回答
因为CPU只能从内存中读取数据,不能直接从外设中读取数据。

(2)上面五大设备都是独立个体,各个硬件单元必须用“线”链接起来,这个线就是系统总线和IO总线。CPU与内存之间的是系统总线,内存与外设之间的是IO总线。

(3)场景
请解释,从登录上qq开始和某位朋友聊天开始,数据的流动过程。
在这里插入图片描述
在这里插入图片描述
如果我想要传一个文件(比如文档)给我的朋友,请画出数据流动的过程。
在这里插入图片描述


2. 操作系统

由冯诺依曼体系结构,我们可以知道计算机有很多硬件,这些硬件各有各的功能。这些功能什么时候执行,谁先执行,就需要一个逻辑来管理,所以就有了操作系统。

  1. 什么是操作系统

操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。
简单讲,操作系统是一款进行管理(硬件和软件)的软件。

操作系统包括内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(例如函数库,shell程序等等)。

  1. 为什么要有操作系统

(1)操作系统帮助用户管理好下面的软硬件资源(驱动和底层硬件)。
(2)为了给用户提供良好(稳定、高效、安全)的运行环境。
注意
这里的用户是程序员,而不是普通用户。因为普通用户不是直接使用操作系统,而是使用程序员开发出来的软件。只要保证良好的运行环境,程序员才能为普通用户创建更多的软件。

  1. 用户可以直接访问操作系统吗

操作系统是软件,有大量数据,但用户不能直接访问操作系统,操作系统不相信任何用户。可是操作系统又要为用户提供各种服务,所以操作系统就得提供接口让用户访问内部数据。这是怎么做到的?

操作系统为了保证自己的数据安全,又为了保证给用户提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。

拓展
操作系统是用C语言写的,接口就是操作系统提供的、用C实现的函数调用,这就是系统调用。
总结
所有访问操作系统的行为,都只能通过系统调用完成。

计算机的层状结构
在这里插入图片描述

  1. 操作系统是如何进行管理底层的软硬件资源?

(1)操作系统不直接访问底层的硬件,而是通过驱动程序进行管理的。
(2)操作系统是管理者,而硬件是被管理者。只要有被管理者的信息,就能对被管理者做管理。就像在大学,校长是管理者,而学生则是被管理者,校长不需要见学生就能对学生进行管理,他是通过学生的学号等各种信息进行管理的。同样,操作系统是对硬件的各种信息管理。

所以管理的本质是通过对数据的管理,而不是对人(硬件)的管理
(3)操作系统中是有大量的数据,要如何对每份数据都进行管理?比如在大学中,要在整个年级中找出几名学生、新转学几名学生、退学几名学生,我们可以将每个学生描述成一个结构体,这个结构体中有学生的各种信息(如姓名,性别,学号,成绩等),然后用一个链表把每个结构体链接起来。这样,成功地将学生的管理工作转换成对链表的增删查改。

所以我们可以将底层设备构建成结构体(先描述),再用链表和其他数据结构链接起来(再组织)

(4)操作系统中,管理任何对象最终都可以转化成对某种数据结构的增删查改。
(5)最终答案:先描述,再组织

相关文章:

【Linux】操作系统的认识

操作系统 1. 冯诺依曼体系结构2. 操作系统 1. 冯诺依曼体系结构 冯诺依曼体系结构的介绍 冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在…...

【论文阅读】(2023TPAMI)PCRLv2

目录 AbstractMethodMethodnsU-Net中的特征金字塔多尺度像素恢复多尺度特征比较从多剪切到下剪切训练目标 总结 Abstract 现有方法及其缺点:最近的SSL方法大多是对比学习方法,它的目标是通过比较不同图像视图来保留潜在表示中的不变合判别语义&#xff…...

大数据学习(17)-mapreduce task详解

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

HCIA --- DHCP服务、路由器、网络部署及基本配置

带宽计算公式: 速率 约等于 (带宽/8)*85% 网线分类: RJ-45双绞线 非屏蔽线 最佳距离100M; 民用 1000M/S 商用100000M/S 数字 光纤 光信号 RJ-11 电话线 模拟信号 同轴电缆 数字信号 光信号 数字信号--二进制 …...

手把手入门Node框架Egg.js

0.介绍 Egg.js 是一个面向企业级应用开发的 Node.js 框架,它建立在 Koa.js 之上,提供了一种更简单、灵活的开发方式。Egg.js 提供了一些默认约定和最佳实践,可以帮助开发者快速构建可靠、可扩展的应用程序。 基于 Koa.js:Egg.js …...

百度智能云推出,国内首个大模型全链路生态支持体系

在10月17日举行的百度世界2023上,百度智能云宣布,百度智能云千帆大模型服务平台已服务17000多家客户,覆盖近500个场景。 同时,新的企业和开发者还正在不断地涌入千帆,大模型调用量高速攀升。平台上既有年龄仅14岁的小…...

CUDA学习笔记(八)Branch Divergence and Unrolling Loop

Avoiding Branch Divergence 有时,控制流依赖于thread索引。同一个warp中,一个条件分支可能导致很差的性能。通过重新组织数据获取模式可以减少或避免warp divergence(该问题的解释请查看warp解析篇)。 The Parallel Reduction …...

Android MQTT连接阿里云使用Json解析数据

Android Studio 连接阿里云订阅主题然后使用JSON解析数据非常好用 导入MQTT的JAR包1、在项目中添加依赖然后使用Studio 去下载库2、直接下载JAR包,然后作为库进行导入 环境验证:给程序进行联网权限XML布局文件效果如下: MainActitive.java 主…...

生成二维码

Qt本地生成二维码-第三方库Libqrencode Chapter1 Qt本地生成二维码-第三方库Libqrencode一、功能简介二、本地生成二维码三、在线生成二维码 Chapter2 Qt生成二维码图片方法QRCode二维码简介如何选定QR码版本?主要方法(1) 下载qrencode源码(2) 将qrencode源码移植到…...

【C++入门 一 】学习C++背景、开启C++奇妙之旅

目录 1.什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域1. 操作系统以及大型系统软件开发2. 服务器端开发3. 游戏开发4. 嵌入式和物联网领域5. 数字图像处理6. 人工智能7. 分布式应用 3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 4. 如何学习C4.1 别人怎么学…...

oracle 表空间详解以及配置操作

Oracle 数据库是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个 表空间中。表空间对应于若干个数据文件,即表空间是由一个或多个数据文件构成的。 1、常用表空间: 系统表空间 (system tablespace) 是每个 Oracle 数据库都必须具备的。…...

php判断是否是email格式

要判断一个字符串是否是有效的电子邮件地址,你可以使用正则表达式和PHP内置函数来完成。以下是一个示例代码: $email "exampleexample.com"; // 你要检查的电子邮件地址// 使用正则表达式检查电子邮件格式 if (filter_var($email, FILTER_VA…...

AJAX与JSON

1.AJAX 1.AJAX概述 AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML 本身不是一种新技术,而是多个技术综合。用于快速创建动态网页的技术 一般的网页如果需要更新内容,必需重新加载个页面。 而 Ajax通过浏览器与服务器…...

1024常玩到的漏洞(第十六课)

1024常玩到的两个漏洞(第十六课) 漏洞扫描工具 1024渗透OpenVas扫描工具使用(第十四课)-CSDN博客 流程 一 ms12-020漏洞分析 MS12-020漏洞是一种远程桌面协议(RDP)漏洞。在攻击者利用该漏洞之前,它需要将攻击者的计算机连接到受害者的计算机上。攻击者可以通过向受害者计算…...

【Edabit 算法 ★★★★★★】【两个大整数相加】Recursion: Sum of Two Numbers (With A Twist!)

Recursion: Sum of Two Numbers (With A Twist!) Instructions This is an “expert” challenge!!! Why is a sum of two numbers an “expert” challenge!!! Well, the numbers can have 1000 digits or even beyond such count… So, what’s the twist? You have to do …...

电容屏物体识别手工制作

电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在,成千上万的应用程序中有多种设备和屏幕格式,但我们只找到…...

13JVM进阶

JVM内存模型 1、线程私有的数据区 1)、程序计数器 我们知道,线程是CPU调度的基本单位。在多线程情况下,当线程数超过CPU数量或CPU内核数量时,线程之间就要根据 时间片轮询抢夺CPU时间资源。也就是说,在任何一个确定的时刻&#…...

java与c++中的交换方法

最近在写算法的时候,遇到一个问题。 java中编写swap(交换)方法还需要传入一个数组,但是在c中则不需要。 可以看到,在没有传入数组进行交换数组元素的时候,交换前与交换后的值是一样的。 而在c中&#xff…...

OpenCV中world模块介绍

OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使…...

IMX6ULL板开发——第一个应用程序

实现第一个应用程序&#xff1a;在IMX6ULL开发板上运行程序hello.c #include <stdio.h>/* 执行命令: ./hello weidongshan* argc 2* argv[0] ./hello* argv[1] weidongshan*/int main(int argc, char **argv) {if (argc > 2)printf("Hello, %s!\n", arg…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...