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

目录

前言

操作系统与驱动程序

是什么,为什么

怎么做

[system call](#system call)

用户操作接口

总结


前言

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

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

操作系统与驱动程序

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

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

是什么,为什么

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

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

怎么做

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

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

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

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

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

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


system call

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

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

用户操作接口

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


总结

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

相关推荐
海绵宝宝转agent15 分钟前
操作系统八股开源笔记分享
java·面试
程序猿老A29 分钟前
从入门型到企业型:云服务器开放共享型到独享型规格升级
运维·服务器
殷色玫瑰33 分钟前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
忆挽篱笙歌1 小时前
gcc,g++
linux
时间的拾荒人1 小时前
Qt 文件操作详解:从基础类到读写实战
开发语言·qt·面试
l1t2 小时前
修复WSL CreateInstance/E_UNEXPECTED和 mounted read-only 错误
linux·windows·wsl
Ruiery2 小时前
Linux 6.6内核 CPU 深度解析(九):时钟与 TSC — 内核怎么从 PIT/HPET 切到 TSC
linux·运维·服务器
吴声子夜歌2 小时前
Nginx应用与运维——Nginx日志管理
java·运维·nginx
打工仔折腾 AI2 小时前
用UU远程把家里电脑变成AI Agent常驻服务器:CLI、端口映射与代理实测
运维·服务器·人工智能·后端·python·电脑·ai agent 实战
91刘仁德2 小时前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp