【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录

前言

操作系统与驱动程序

是什么,为什么

怎么做

[system call](#system call)

用户操作接口

总结


前言

日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上,在网络中传消息或文件最终作用到网卡上。指令是如何作用到底层硬件的相信很多人都没有了解过,本文将系统地解释指令作用到硬件上的流程。

根据上面的架构图,你也许可以大致认识到指令到底层的步骤。下面将一一介绍各个部分的功能和作用,先从操作系统开始吧!!!

操作系统与驱动程序

关于操作系统,相信很多人都接触过毕竟我们使用的电子设备都需要搭载操作系统,比如最常见windows操作系统,安卓手机的Linux操作系统,苹果的MacOS操作系统......

但是**操作系统究竟是什么,为什么要有操作系统,其功能又是如何实现的?**这三个问题相信很多人都不知道或者说不理解。以下将围绕着操作系统的灵魂三问进行展开,帮助你对操作系统的理解更深入,更透彻。

是什么,为什么

操作系统是一款软件,是一款管理软硬件的软件

搭载操作系统的原因是因为:计算机中各个外设都是独立的,没有任何联系,正是因为这一原因我们可以自己组装电脑,只有选择CPU,显卡,硬盘...... 因为外设之间是独立的,如果不进行管理 计算机内部就"乱成一锅粥了",操作系统就是担起了这一责任:管理软硬件。

怎么做

操作系统是如何管理软硬件的???

先说结论:先描述,再管理;

对应一切人或事物管理的前提是先对事物进行描述,不论是计算机世界还是现实世界都是如此。

操作系统在进行软硬件管理之前需要先对每一个软硬件进行描述 ,将软硬件的属性存储起来再进行管理;Linux操作系统底层使用C语言实现的,所以描述软硬件属性自然就通过结构体进行实现的,操作系统内部为每一种类型的结构体创建对象来实现对不同外设的描述,将这一个个的结构体对象存储到容器中进行管理,因此操作系统只需要对容器进行增删查改,而不必与外设交互即可实现对外设的管理。 在Linux中该容器就是双链表。

上面我们提到操作系统只管理存放软硬件的结构体对象的数据结构,那么操作系统是如何拿到软硬件资源信息的??? 操作系统对数据结构的增删查改必定要作用的软硬件上,他又不与软硬件交互,怎么实现数据的增删查改???

此时就需要驱动程序帮助操作系统来完成,驱动程序将软硬件的属性交给操作系统,当操作系统要对软硬件进行增删查改时就由驱动程序来完成。


system call

操作系统本身使用起来成本很高, 一般人是使用不了的**,并且操作系统是不信任用户的** ,因为操作系统担心用户会进行一些非法的操作,所以操作系统会"封闭"起来,但用户又需要使用操作系统,所以在设计操作系统的时候就对外开放一些接口,用户只能通过特定的接口使用操作系统。这就好比银行,银行是不相信人的,所以在柜台前设有防弹玻璃,但是它又要为人民服务,所以银行就开放了一系列的小窗口为人民进行服务。

这些接口被称为system call系统调用接口。

用户操作接口

系统调用接口在使用上,功能简单,对用户的要求高,所以一些程序员又对系统调用接口进行进一步的封装形成库,有利于更上层的用户进行二次开发,更加方便。对系统调用接口进行进一步的封装就变成了我们日常开发中使用的用户操作接口。


总结

以上就是用户与底层进行交互的所有逻辑,用户在计算机上发送指令,调用操作系统接口向操作系统发送请求,操作系统做出反应通过驱动程序对软硬件资源进行修改。

相关推荐
平行云PVT5 小时前
数字孪生信创云渲染技术解析:从混合信创到全国产化架构
linux·unity·云原生·ue5·图形渲染·webgl·gpu算力
xdscode5 小时前
Linux云服务器安装openclaw,并对接飞书通道
linux·服务器·飞书·openclaw
lswzw6 小时前
win11家庭版 安装 openclaw
服务器
Percep_gan6 小时前
Linux中安装Redis,很详细
linux·运维·redis
七七powerful6 小时前
运维养龙虾--AI 驱动的架构图革命:draw.io MCP 让运维画图效率提升 10 倍,使用codebuddy实战
运维·人工智能·draw.io
枕书6 小时前
实战记录:如何使用 Docker 一键部署长亭 PandaWiki 智能知识库
运维·docker·容器
LegendNoTitle6 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
2401_877274246 小时前
从匿名管道到 Master-Slave 进程池:Linux 进程间通信深度实践
linux·服务器·c++
feng_you_ying_li7 小时前
linux之用户的权限详解(4)
linux·运维·服务器
二进制person8 小时前
JavaEE初阶 --网络编程
linux·服务器·网络