news 2026/5/9 6:18:17

【Linux】操作系统的认识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux】操作系统的认识

设计OS的目的

  • 对下,与硬件交互,管理所有的硬件资源。
  • 对上,为用户提供良好(稳定,高效,安全)的执行环境。

但是这里的用户是指程序员,而不是普通人、用户,因为普通用户使用的app软件和客户端是由程序员开发的,并不会接触到操作系统;而程序员开发软件等,必然会接触到操作系统。所以此处的用户指的是程序员。

在这里插入图片描述


三、对上,对下解析

1. 底层硬件

我们肉眼可见的计算机就相当于计算机的底层硬件,如CPU,RAM,显示屏等等,如下的表格,看似他们很多,很乱,但是他们是遵守冯·诺依曼体系结构的:输入设备到内存,然后通过中央处理器(CPU)处理后返回到内存,然后到输出设备。

在这里插入图片描述

分类

具体硬件

操作系统管理方式/作用

处理器(CPU相关)

CPU、寄存器、时钟/定时器、ALU、FPU

任务调度、上下文切换、时间片管理、运算执行

存储与管理

主存(RAM)、Cache(L1/L2/L3)、ROM/BIOS/UEFI、MMU

内存分配、虚拟内存、内存保护、地址转换

输入输出设备

磁盘/SSD、键盘、鼠标、显示器、打印机、USB设备等

通过设备驱动与 OS 交互,抽象为文件/事件/图形输出

总线与控制器

系统总线(PCIe、AMBA 等)、I/O 控制器、DMA 控制器

提供数据传输通道、管理外设通信、实现高效 I/O

特殊硬件

中断控制器(PIC/APIC)、GPU、网卡(NIC)、TPM安全模块

中断管理、图形处理、网络收发、安全加密支持


2. 操作系统

但是单单只有硬件是不够的,我们还需要有一个软件来对这些硬件进行管理。例如,内存何时从输入设备读取数据?读取多少数据?内存何时刷新缓冲区到输出设备?是按行刷新还是全刷新?这些都是由软件进行管理的,而这个软件就是操作系统(Operator System)。

在这里插入图片描述

而操作系统又主要进行着四项管理:分别是内存管理,进程管理,文件管理和驱动管理。

  • 内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
  • 进程管理:其工作主要是进程的调度。
  • 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
  • 驱动管理:对计算机设备驱动程序的分类、更新、删除等操作。

3. 驱动

但是我们直接让操作系统和底层硬件打交道吗?如果我们使用操作系统来对输入内容进行读取操作,那么当我们改变键盘的输入模式,会导致读取的方式改变,我们操作系统内核的源代码就需要重新进行编译,这样对操作系统的维护成本太高了,所以我们需要一个驱动层。

在这里插入图片描述

而驱动层的主要工作就是单独去控制底层硬件的。例如,键盘有键盘驱动,网卡有网卡驱动,硬盘有硬盘驱动,磁盘有磁盘驱动。驱动简单来说就是对应去访问某个硬件,访问这个硬件的读、写以及硬件当前的状态等等,驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的,或是由操作系统相关的模块进行开发的(例如网卡)。此时操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了,也就是完成了操作系统与硬件之间的解耦。


4. 用户层

而操作系统往上就是面向普通用户的用户层,用户可以通过命令行和图形用户界面与操作系统进行交互。而背后所有的硬件管理与资源分配都由操作系统的内核层来完成。

在这里插入图片描述


5. 系统调用接口

如果用户直接访问操作系统的话(尤其是内核),会破坏其安全性,稳定性和隔离性,可能导致系统崩溃、数据丢失甚至安全漏洞。因此现代操作系统都采用 用户态 / 内核态隔离,只允许通过受控的 系统调用接口 来访问内核。

在这里插入图片描述


6. 用户操作接口

操作系统提供的底层硬件接口通常非常复杂且具体,直接操作这些底层资源对于普通用户和开发者来说不现实。用户操作接口(如系统调用、库函数、命令行和图形界面)提供了一种 抽象层,使得开发者和用户不需要关心复杂的硬件细节,而可以通过简单的指令或函数调用来实现目标。 例如:通过 printf 输出文本,而不需要了解字符如何通过硬件发送到显示器。

在这里插入图片描述


四、理解操作系统的“管理”

精髓:先描述,再组织!

这里我们举一个例子来了解管理,我们有学生、辅导员和校长三个角色。显然,校长在这三个人当中是管理者,学生是被管理者,那么辅导员充当什么角色?

  1. 其实我们完成任何一件事情都需要经过两个过程,第一个是决定要不要做这件事或者如何做这件事(相当于做决策);第二是付出行动的做这件事(相当于执行)。如上述例子,校长是管理者,管理学校的学生,校长就是那个做决策的人,但是他做决策后并不需要自己去执行(因为他是校长,哈哈哈),所以我们辅导员的作用就是去充当做执行的校色。所以辅导员的主要任务就是执行管理者的决策,称之为执行者。
  2. 虽然校长是管理者,但是我们学生身为被管理者在学校一般能看到校长人吗?所以校长是如何做到在我们看不到的情况下对我们进行管理的呢?

举个例子,现在校长要求辅导员将电子信息工程02班成绩排名前十的学生的各科资料以及平时表现记录拿过来,他将从这十名同学之中选出三名学生参加本次的全国电子设计大赛,当辅导员将资料拿来后校长选出三名学生说:“就这三个了,你找个老师对这三名学生进行一下强化训练,然后参加本次的大赛。”然后校长就什么也不管了。

  1. 在这个过程中,校长根本没有见过这三名同学,就对其进行了管理,他根据的是什么?没错,他根据的是数据。
  2. 实际上,学校将我们每个学生的各种信息都进行了管理,基本信息、成绩信息以及健康信息等等。
  3. 每一套信息就描述了一名学生,校长通过对这些信息的管理就能做到对学生的管理。这么一套信息在C语言当中我们称之为抽象结构体,而在C++当中又叫做面向对象。
  4. 当学生的数量多起来了,校长就可以将全部学生的信息组织起来,当然组织的方式有很多种(链表、顺序表、树),而每种组织方式都有其自己的优势,于是就有了一门课程专门教我们管理数据的方式,那就是数据结构。这里我们假设校长以双链表的形式将学生的信息组织起来。
  5. 此时校长对各个学生的管理,实际上就变成了对双链表的增删查改。当有新生时直接向该双链表加入一个结点,当学生毕业后直接将学生信息从该双链表当中移除即可。

总结

操作系统的核心价值在于对下管理硬件、对上提供接口。通过内核、驱动和用户接口三层递进,操作系统既保证了硬件的高效利用,又为用户和开发者提供了友好、简洁的交互方式。同时,操作系统的管理精髓在于对复杂资源的抽象与组织,这与我们在数据结构中学习到的思想相一致。掌握操作系统,不仅是理解计算机如何工作的关键,也是进一步深入编程、系统开发和计算机科学的必经之路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 2:55:52

Java SpringBoot+Vue3+MyBatis 经方药食两用服务平台系统源码|前后端分离+MySQL数据库

系统架构设计### 摘要 随着中医药文化的普及和健康意识的增强,经方药食两用服务逐渐成为人们关注的焦点。传统的中医药服务模式存在信息分散、查询不便、个性化推荐不足等问题,亟需通过信息化手段提升服务效率和质量。本系统旨在构建一个基于现代技术的经…

作者头像 李华
网站建设 2026/5/9 6:16:53

Spring Boot与微服务核心技术面试实战解析

Spring Boot与微服务核心技术面试实战解析 场景设定: 谢飞机是一名初入职场的Java程序员,正在参加某互联网大厂的面试,面试官是一位严肃且专业的技术专家。 第一轮:Spring Boot基础与项目构建 **面试官(严肃脸&…

作者头像 李华
网站建设 2026/5/9 1:24:23

2601,写个kde语法高亮文件

提示:如果想写一个高亮语法文件,XMLCompletion插件可能会很有帮助. 这里概述了KDE4中高亮定义XML格式.基于如下,它将描述主要组成部分及其含义和用法. Kate高亮定义文件的主要部分 在language.dtd文件中也就是DTD,保存正式定义,应该在你的系统目录安装,即$KDEDIR/share/apps/ka…

作者头像 李华
网站建设 2026/5/9 1:23:51

2601C++,复制超文本格式

超文本的剪切板格式 超文本有自己的剪切板格式(叫超文本格式(CF_HTML),可用来向其他应用助手(如Excel,Word或其他办公应用复制)提供数据. CF_HTML是包含说明,环境和该环境中的片段完全基于文本的格式.生成要发送到剪切板的数据时,必须包含数据说明,以指示剪切板版本及环境和片…

作者头像 李华
网站建设 2026/5/9 1:24:22

OTG数据充电交互讲解

随着科技的飞速发展,智能移动设备已成为我们生活中不可或缺的一部分。而在这些设备的连接与数据传输中,Type-C接口以其高效、便捷的特性逐渐占据了主导地位。OTG(On-The-Go)技术则进一步扩展了Type-C接口的功能,使得设…

作者头像 李华