【Linux】进程(1):冯诺依曼体系结构+操作系统

目录

[一 冯诺依曼体系结构](#一 冯诺依曼体系结构)

1概念区分

[2 计算机的模块化](#2 计算机的模块化)

[3 计算机的标准](#3 计算机的标准)

[4 计算机的硬件组成,为什么要存在内存?](#4 计算机的硬件组成,为什么要存在内存?)

[5 通过两个场景 理解冯诺依曼结构](#5 通过两个场景 理解冯诺依曼结构)

[二 操作系统 (Operator System)](#二 操作系统 (Operator System))

[1 概念](#1 概念)

​编辑

[2 设计操作系统(OS)的目的](#2 设计操作系统(OS)的目的)

[3 操作系统是如何进行软硬件资源管理的](#3 操作系统是如何进行软硬件资源管理的)

[4 核心功能](#4 核心功能)

[5 如何理解管理](#5 如何理解管理)

[6 系统调用和库函数概念](#6 系统调用和库函数概念)

[7 承上启下](#7 承上启下)


一 冯诺依曼体系结构

1概念区分

我们日常使用的电脑,比如笔记本,以及不太常见的服务器,绝大多数都采用冯・诺依曼体系结构 。英特尔的处理器就是典型的冯・诺依曼架构代表。

不过,除了冯・诺依曼体系之外,还有其他架构,例如哈佛架构。哈佛架构常见于嵌入式系统、一些小型设备,甚至早期的手机处理器中

需要注意的是,"电脑的体系架构" 和 "计算机的体系结构" 这两个概念并不完全相同。如果问题问的是具体的处理器架构,通常指的是英特尔、ARM 这类;如果问题问的是计算机的基本结构,则通常指的是冯・诺依曼体系结构。

2 计算机的模块化

计算机的模块化,是指将整个计算机系统拆解为功能独立、接口标准的硬件或软件模块,这些模块可以像积木一样单独设计、制造、升级和替换,最终组合成完整的系统。

模块化的核心优势

✅ 易维护性:某个模块损坏时,只需更换该模块,不用整机报废。

✅ 可扩展性:需要更高性能时,单独升级 CPU / 显卡即可,无需重新购买整机。

✅ 降低成本:厂商可以批量生产标准化模块,用户也能按需付费,避免浪费。

✅ 加速创新:不同厂商专注于优化某一类模块(如显卡厂商专注图形性能),推动技术迭代。

3 计算机的标准

计算机能实现模块化,依赖统一的硬件与软件标准。就像秦始皇统一度量衡消除了交流障碍,硬件标准让不同厂商的 CPU、内存、显卡等模块可以无缝组合,软件标准让不同程序能在同一系统上运行。

4 计算机的硬件组成,为什么要存在内存?

截至目前,我们所认识的计算机,都是由⼀个个的硬件组件组成

输入单元 :包括键盘,鼠标,扫描仪,写板等

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

输出单元:显示器,打印机等

cpu不能直接由输入设备读取数据,也不能直接把数据输出到输出设备

IO是外部设备和内存之间的

所有设备都只能直接和内存打交道

为什么要存在内存?

1 数据在体系结构中流动

2 存储分级的问题

3 内存

第一点我们在图中已经解释了,下面来看后面两点

5 通过两个场景 理解冯诺依曼结构


二 操作系统 (Operator System)

1 概念

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

• 内核(进程管理,内存管理,文件管理,驱动管理)

• 其他程序(例如函数库,shell程序等等)

狭义操作系统:只聚焦于操作系统本身

2 设计操作系统(OS)的目的

对下,与硬件交互,管理所有的软硬件资源
对上,为用户程序(应用程序)提供⼀个良好的执行环境

操作系统要访问底层硬件,要通过驱动程序控制,操作系统和硬件不直接关联

3 操作系统是如何进行软硬件资源管理的

4 核心功能

在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的"搞管理"的软件

5 如何理解管理

我们用一个例子理解管理

校长(操作系统) :真正的管理者,不需要直接接触学生(硬件),只需要通过数据来做决策和管理。
辅导员(驱动程序) :执行者,负责收集学生的信息并传递给校长,是管理者与被管理者之间的桥梁。
学生(硬件) :被管理的对象,他们的各项信息(成绩、考勤等)就是核心数据。

管理的本质是数据驱动
管理者不需要与被管理者面对面,真正需要的是反映被管理者状态的有效数据 。管理的核心就是对这些数据进行收集、分析和决策,最终落实到对特定数据结构的增删查改操作上。
数据的传递依赖 "执行者 "

管理者之所以能获取到被管理者的数据,正是因为有 "辅导员" 这样的执行者在中间负责信息的采集与传递。
现实问题→计算机问题的转化

原本用 Excel 表格做的人工管理工作,现在可以交给计算机完成。这一过程本质上是把现实中的管理问题,建模成对数据结构(比如链表)的增删查改操作,也就是先描述、再组织的过程。

总结

计算机管理硬件---->先描述,再组织

  1. 描述起来,⽤struct结构体

  2. 组织起来,⽤链表或其他⾼效的数据结构

6 系统调用和库函数概念

之前我们是从操作系统向下看,剖析它如何通过驱动程序管理底层硬件;现在转为向上看,讲解操作系统如何通过系统调用接口、用户操作接口,为用户提供安全可控的交互方式

操作系统不允许用户直接访问内核,核心原因是为了安全。如果用户可以随意修改内存大小等关键资源,会破坏系统稳定性,甚至引发恶意攻击。

为了高效管理各类资源(如进程、内存、文件),操作系统内部会大量使用结构体和数据结构,这和我们之前用链表管理学生信息的思路是一致的。

1 库函数的定位

库函数的核心价值是 "降低用户使用操作系统的成本 ",它提供了更易用的封装接口。但并非所有库函数都对应系统调用 ------ 有些功能仅在用户态即可完成,无需请求内核介入。
2 操作系统的实现基础

绝大多数操作系统由 C 语言开发,这决定了其接口设计天然遵循 C 语言的 "传参 + 返回值" 模式,系统调用也不例外。
3 内核访问的唯一入口
用户程序若要访问操作系统内核的数据或资源,只能通过系统调用,没有其他途径

后面我们用 "银行小窗口" 的故事:用户(程序)不能直接进入银行后台(内核),只能通过柜台窗口(系统调用)办理存款、取款(访问内核资源)等业务,这既保证了安全,也规范了交互流程。

printf是一个库函数,它的主要工作是格式化字符串。为了完成最终的打印,它会封装并触发对应的系统调用,由操作系统内核负责与硬件交互,完成实际的输出操作

用户程序无法直接操作硬件,必须通过系统调用请求内核提供服务。这个过程就像你想向屏幕 "写" 数据,必须先把请求交给操作系统,再由操作系统驱动显示器完成显示。

第二个故事

我们可以用这个银行存款的故事,来更生动地理解操作系统的设计思路:

1银行的核心需求有两个:

提供服务:要让客户能正常办理存款、取款等业务。

保障安全:绝对不能让客户直接进入金库或后台,因为存在坏人破坏、窃取资产的风险。

如果让客户自由进出银行内部,安全就无法保障;但完全拒绝客户,又失去了服务的意义。

  1. 解决方案:柜台小窗口

银行的应对方案是开设柜台窗口,这是客户办理业务的唯一合法通道:

客户只能在窗口外提交请求,由银行工作人员(系统调用的执行者)在内部处理。

工作人员会验证请求的合法性,再进行存款、取款等操作,确保整个过程在可控、安全的前提下完成。

  1. 对应到计算机系统

这个场景完美对应了操作系统的工作原理:
银行 → 操作系统内核:管理着最核心的资源(金库对应内存、硬件等)。
客户 → 用户程序:需要访问内核资源来完成功能。
柜台窗口 → 系统调用:用户程序访问内核的唯一合法接口,确保安全与可控。
大堂经理 → 库函数(如printf):为用户提供更友好的引导,简化操作流程。

对不熟悉银行流程的客户(比如大字不识的老大爷)来说,直接面对柜台窗口(系统调用)会非常吃力,甚至无法完成业务。

大堂经理(库函数)的作用就是降低用户的使用成本:他会引导客户填单、排队,把复杂的流程拆解成简单步骤,让客户能顺利办理业务。

对应到开发场景
柜台窗口 = 系统调用:这是操作系统提供的底层接口,功能基础但要求用户对底层机制有一定了解。
大堂经理 = 库函数:它封装了系统调用,提供更易用的接口,让上层开发者不用关心底层细节,就能高效完成功能开发

7 承上启下

那在还没有学习进程之前,就问⼤家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把进程组织起来

相关推荐
cooldream20094 小时前
Vim 报错 E325:swap 文件冲突的原理、处理流程与彻底避免方案
linux·编辑器·vim
i建模4 小时前
在 Rocky Linux 上安装轻量级的 XFCE 桌面
linux·运维·服务器
Data_Journal4 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销
若风的雨5 小时前
WC (Write-Combining) 内存类型优化原理
linux
YMWM_5 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
zmjjdank1ng5 小时前
restart与reload的区别
linux·运维
哼?~5 小时前
进程替换与自主Shell
linux
Suchadar5 小时前
Docker常用命令
运维·docker·容器
FIT2CLOUD飞致云5 小时前
赛道第一!1Panel成功入选Gitee 2025年度开源项目
服务器·ai·开源·1panel
你才是臭弟弟5 小时前
MinIo开发环境配置方案(Docker版本)
运维·docker·容器