[Linux] 操作系统 入门详解

news2024/9/21 21:44:38

标题:[Linux] 操作系统

@水墨不写bug



目录

一、冯 . 诺依曼体系结构

1.冯诺依曼体系结构简介 

2.对冯诺依曼体系结构的理解 

二、操作系统定位

1.为什么需要操作系统?

2.操作系统是什么?

三、系统调用和库函数 


正文开始:

一、冯 . 诺依曼体系结构

1.冯诺依曼体系结构简介 

        什么是体系结构?体系结构其实就是一套方法,是用来管理某个问题的方法策略。我们常见的计算机,比如我们身边的笔记本电脑;此外还有我们不太常见的计算机,如服务器,大部分都遵循冯诺依曼体系结构。

        什么是冯诺依曼体系结构

        简单来说,冯诺依曼体系结构可以用上面这样的一幅图来表示。到目前为止, 我们所认识的计算机都是由一个一个相对独立的硬件组成的,比如我们常用的鼠标,键盘,显示器,打印机等。

        其中,根据如图的分类举例如下:

        输入设备:比如键盘,鼠标,扫描仪,书写板,硬盘等;

        输出设备:比如显示器,打印机,音响,硬盘等;

        中央处理器(CPU):含有运算器和控制器等;

2.对冯诺依曼体系结构的理解 

        我们由常识可知:CPU的速度非常快(纳秒级),输入输出设备(通常是硬盘)速度相对于CPU非常慢(毫秒级),这就导致了速度的代差,最终导致整机的效率表现为输入输出设备的效率。冯诺依曼体系的存储器的存在就是为了缓解这样的问题,存储器一般就是内存。

        你一定听说过存储金字塔

        根据存储金字塔,我们发现内存就是在硬盘和CPU之间的 “缓解矛盾”的中间人。内存通过预加载硬盘中的数据来为高速的CPU提供运算需要的数据;同时,内存也暂时接收保存CPU运算产生的数据结果,以便提供给慢速存取的硬盘使用。内存类似于CPU和硬盘之间的一个缓冲区,这样一来,整机的速度就可以提升到接近于内存的速度了。 

关于冯诺依曼体系结构,需要强调:

        1.这里的存储器就是指内存;

        2.不考虑缓存情况,CPU能且只能对内存进行读写,不能访问外部设备(输入输出设备)

        3.外设(输入输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

总结成一句话:所有设备只能直接和内存打交道。


具体情景:

(1)如果你通过QQ给家人发送消息,数据是如何流动的?

        

        其实每一步都是按照上述图片结构体系运行的:

在发送端:

        首先,我们通过输入设备(键盘)输入数据(消息),这些数据被加载到内存中,接下来,QQ信息数据通过CPU的加密,压缩处理后再次被写入内存,最后通过网卡设备发送出去。

在接收端:

        首先通过网卡设备接受到数据,随后被加载到内存中,这些数据需要通过CPU的解压缩,解码处理后再次被加载到内存中,然后存储在输出设备(硬盘)中。(因为接受的聊天消息记录不会因为关机而消失,所以可以确定接受的消息是存储在硬盘中的) 

(2)如果发送的是文件,数据又是如何流动的? 

        首先,我们将文件拖入对话框的过程就是把文件从硬盘加载到内存的过程,接下来,文件数据通过CPU的处理后,重新写入内存,然后通过网卡设备发送出去。

        接受时,通过网卡设备接受,接下来写入内存中,通过CPU的处理后重写入内存,最终存放在硬盘中。 


二、操作系统定位

1.为什么需要操作系统?

        因为用户不善于直接操作硬件设备。你一定见过单片机吧,你能够直接在物理上操作电位的高低来直接控制单片机吗?这不太现实,然而计算机就是一个比单片机复杂的多的冯诺依曼的体系结构,如果仅仅给你几个硬件设备,你几乎无法直接控制操作这些硬件设备,更别说让它们协调起来一起工作了。

        而操作系统就是为了给用户提供一个使用和管理下面的软件和硬件资源的中间层:

        操作系统协助用户,管理好下面的软硬件资源;同时,给用户提供一个良好(稳定,高效,安全)的运行环境。

2.操作系统是什么?

        操作系统是一款进行软硬件管理的软件。

        操作系统内部维护有各种各样的数据,但是操作系统不相信任何用户!但是操作系统还是要帮用户的忙,为用户管理资源,提供服务。所以,操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口,以此来获取操作系统内部的数据。

        操作系统提供的调用接口,就是系统调用。Linux是用C语言实现的,所以系统调用就是一个个的C语言的函数。所有访问操作系统的行为,都是通过系统调用来实现的。

         但是你可能会有疑问,既然有系统调用,那么C语言的库函数又是什么?C语言的库与系统调用的接口又是什么关系?

        接下来,就需要具体分析上面这一副图了:

向下,操作系统管理硬件: 

        操作系统内部进行着内存管理,进程管理,文件管理,驱动管理;驱动管理对接于下层的驱动,操作系统也无法直接管理硬件资源,对硬件资源的直接管理的是各种驱动:操作系统通过管理驱动,间接管理各种硬件资源。

向上,系统调用 封装程度低,门槛高,难以使用:

         所以为了便于专业人员进行软件开发,一些大佬就写出来各种库,于是就有了我们常常使用的stdio.h,string.h的等等的库。比如C语言就有各种各样的函数库,这些库的实现本质就是为了方便后人在C语言的基础上进行软件开发;除此之外,其他计算机语言如:C++也是如此。

        但是系统调用与此又有什么关系?其实,库里面的函数本质上就是通过调用系统调用接口来实现的。各种语言的函数库就是对系统调用接口的封装。

三、系统调用和库函数 

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

        系统调用在使用上,功能比较基础,对用户的要求相对也比较高。所以,有心的开发者可以对部分系统调用进行适度封装,从而形成,有了库,就很有利于更上层用户或者开发者进行二次开发(图片来源于网络)


完~

未经作者同意禁止转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可交互、会学习、自成长机器人——李德毅院士

在以“农业无人农场”为主题的中国工程科技论坛上,中国工程院院士、欧亚科学院院士、中国人工智能学会和中国指挥与控制学会名誉理事长,中科原动力首席科学家李德毅院士应邀做题为《机器具身交互智能》的演讲。李德毅院士表示,智能机器不但把…

CentOS7单机环境安装k8s集群

目录 1、环境准备 2、安装依赖工具 3、配置 Kubernetes 的国内 Yum 源 4. 安装 Kubernetes 组件 5、初始化 Kubernetes 集群 1. 容器运行时没有正常运行 1.1. 可能的原因 1.2. 解决办法 2. 初始化拉取镜像卡住 2.1. 使用国内的镜像源(无法解决问题&#x…

机器学习之监督学习(二)二元逻辑回归

机器学习之监督学习(二)逻辑回归(二元分类问题) 1. 分类 classification2.二元分类逻辑回归 binary-classified logistic regression模块1: sigmoid 激活函数 sigmoid function模型公式模块2: 决策边界 decision boundary代价函数梯度下降欠拟…

【Redis】Redis 主从复制原理与配置详解:解决单点故障与性能瓶颈的最佳方案

目录 主从复制配置建立复制断开复制安全性只读传输延迟 拓扑⼀主⼀从结构一主多从结构树形主从结构 原理复制过程数据同步 psync全量复制部分复制实时复制 小结 主从复制 这部分相关操作不需要记忆!!! 后续⼯作中如果⽤到了能查到即可. 重点理解流程和原理. 单点问题&#xff1…

onvif应用--IPC鉴权(认证)

一、鉴权原理 1)onvif的用户验证,是基于WS_UsernameToken,所谓的WS_UsernameToken加密,就是将用户名、密码、Nonce、Created都包含在了header里面 参数 意义 username待认证的用户名Nonce客户端随机产生的字符串Created请求认证…

arXiv风评被害?

arXiv “风评被害”? arXiv是一个在学术界具有重要影响力的开放预印本论文网站,自三十多年前创立以来,它已经成为了物理学、计算机科学、统计学等科学论文最重要的发布平台之一,同时也是众多科研人员分享和交流研究成果的重要渠道…

单片机工程师:创新与挑战之路

摘要:本文全面深入地探讨了单片机工程师这一职业角色。详细阐述了单片机工程师的职责范围、所需技能,包括硬件设计、软件编程、调试与测试等方面。分析了单片机在不同领域的应用,如工业控制、消费电子、智能家居等。同时,探讨了单…

【计算机组成原理】计算机系统的基本组成

文章目录 计算机硬件的基本组成早期的冯诺依曼机冯诺依曼结构冯诺依曼机的特点 现代计算机现代计算机的结构 各硬件的工作原理主存储器主存储器的基本组成 运算器运算器的基本组成 控制器控制器的基本组成 计算机软件 计算机硬件的基本组成 早期的冯诺依曼机 冯诺依曼在研究 …

图纸文件怎么加密?2024六款图纸加密软件推荐,个个好用不踩雷!

想象一下,公司的设计图纸被无意间泄露,结果对手提前推出了相似的产品。为了避免这种令人头疼的情况发生,图纸加密就显得尤为重要。 别担心,今天我们就带你了解2024年六款超好用的图纸加密软件,让你的图纸“安全感”爆…

业务复杂度治理方法论--十年系统设计经验总结

一、复杂度综述 1、什么是复杂度 软件设计的核心在于降低复杂性。 --《软件设计的哲学》 业界对于复杂度并没有统一的定义,斯坦福教授John Ousterhout从认知负担和工作量方面给出了一个复杂度量公式   子模块的复杂度cp乘…

快充协议方案的工作原理及场景应用

快充协议芯片是支持各种快充快充协议的芯片,它们能智能识别插入的设备类型,并根据设备的需求调整充电电压和电流,从而实现快速充电。 XSP08Q芯片是内置快充功能的协议芯片,它基于先进的充电技术,通过协商电压和电流&a…

【数据结构】二叉树顺序存储结构堆的应用以及解决TOP-K问题

文章目录 前言1. 堆的应用1.1 堆排序1.2 TOP-K问题 2. 结语 前言 前面我们学习了堆这个数据结构,这种数据结构是一种顺序结构存储的完全二叉树,现在我们来看一看堆的应用。 1. 堆的应用 1.1 堆排序 版本一:基于已有数组建堆、取堆顶元素完…

Linux CentOS 部署Docker

1. yum 配置 (1)更新yum yum update -y 如果不升级更新yum 可能在后续docker部署后再更新容器会出现oci runtime error等 (2)安装yum工具类准备 yum install -y yum-utils device-mapper-persistent-data lvm2 (3&…

不再为存储‘分家’烦恼,teamOS让你的数据全家桶,一键即达

在数字化浪潮下,数据管理已成为企业运营的核心环节。作为企业管理者,我深知数据的重要性,也明白数据管理所面临的种种挑战。 最近开始使用企业网盘,在体验了一段时间后,目前来说,让我比较满意的就是可道云…

C盘红了怎么办?C盘快满了怎么办?如何提高电脑运行速度?

在电脑的日常使用中,C盘红了(也就是C盘满了),那是常有的事,本文将详述一下,C盘红了之后的多种处理方法,只要你看完了,就必有一款适合你。 一、系统自带的磁盘清理 当你的C盘红了&…

vue3 置空a-select数据

置空a-select数据 项目中遇到需求&#xff0c;选择第一个下拉框后&#xff0c;发请求获取数据第二个下拉框数据&#xff08;第二个下拉框已选的情况下需要置空&#xff09;。 解决方法&#xff1a;formData.value.checkUser {value: “” ,label:“”} <a-col :span"…

Win32中的字符串

ANSI字符和Unicode字符 在Visual C中&#xff0c;用CHAR来表示8位ANSI字符&#xff0c;用WCHAR来表示16位Unicode字符&#xff08;宽字符&#xff09; 1 typedef char CHAR 2 typedef wchar_t WCHAR 一般常用的定义如下 TypedefDefinitionCHARcharPSTR or LPSTRchar*PCSTR o…

一个跨平台的换源工具,一键更换操作系统上的软件源或镜像源

大家好&#xff0c;今天给大家分享的是一个全平台通用换源工具chsrc&#xff0c;旨在为各种软件在不同平台上提供从命令行进行换源的功能。 项目介绍 chsrc支持 Linux&#xff08;包括麒麟、openEuler、deepin 等&#xff09;、Windows、macOS、BSD 等多种操作系统&#xff0c…

MySQL数据类型-介绍

MySQL 支持多种数据类型&#xff0c;这些数据类型可以根据它们所存储的数据类型大致分为几类&#xff1a;数值类型、日期和时间类型、字符串&#xff08;字符&#xff09;类型、空间数据类型以及JSON数据类型。 一、数据类型 1.整数类型 TINYINT&#xff1a;非常小的整数。例…

第 2 章:AJAX 的使用

AJAX 的使用 核心对象&#xff1a;XMLHttpRequest&#xff0c;AJAX 的所有操作都是通过该对象进行的。 1. 使用步骤 创建 XMLHttpRequest 对象 var xhr new XMLHttpRequest(); 设置请求信息 xhr.open(method, url);//可以设置请求头&#xff0c;一般不设置 xhr.setReques…