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

目录

前言

操作系统与驱动程序

是什么,为什么

怎么做

[system call](#system call)

用户操作接口

总结


前言

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

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

操作系统与驱动程序

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

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

是什么,为什么

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

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

怎么做

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

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

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

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

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

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


system call

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

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

用户操作接口

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


总结

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

相关推荐
Johny_Zhao4 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
哈里谢顿6 小时前
1000台裸金属并发创建中的重难点问题分析
面试
哈里谢顿6 小时前
20260303面试总结(全栈)
面试
over69711 小时前
从 LLM 到全栈 Agent:MCP 协议 × RAG 技术如何重构 AI 的“做事能力”
面试·llm·mcp
SuperEugene12 小时前
Vue状态管理扫盲篇:如何设计一个合理的全局状态树 | 用户、权限、字典、布局配置
前端·vue.js·面试
Sailing14 小时前
🚀 别再乱写 16px 了!CSS 单位体系已经进入“计算时代”,真正的响应式布局
前端·css·面试
SuperEugene17 小时前
Vue状态管理扫盲篇:Vuex 到 Pinia | 为什么大家都在迁移?核心用法对比
前端·vue.js·面试
Hilaku17 小时前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试
前端Hardy17 小时前
别再用 $emit 满天飞了!Vue 3 组件通信的 4 种正确姿势,第 3 种 90% 的人不知道
前端·vue.js·面试
我叫黑大帅17 小时前
前端如何利用 GitHub Actions 自动构建并发布到 GitHub Pages?
前端·面试·github