Linux操作系统从入门到实战(十六)冯诺依曼体系结构,操作系统与系统调用和库函数概念

  • 前言
  • 一、冯诺依曼体系结构
    • 1. 冯诺依曼体系是什么?
    • 2. 核心部件有哪些?
    • 3. 数据是怎么跑的?
    • 4. 发文件的流程也一样
    • 5. 为什么程序(比如C/C++写的软件)必须先加载到内存才能运行?
  • 二、操作系统
    • 1. 什么是操作系统?
    • 2. 为什么要设计操作系统?
    • 3. 操作系统的核心功能:
    • 4. 怎么理解“管理”?
  • 三、系统调用和库函数概念
    • 1. 先回忆个前提
    • 2. 什么是系统调用?
    • 3. 系统调用的特点
    • 4. 库函数又是什么?
    • 5. 系统调用和库函数的关系


前言

在前文中,我们围绕 Linux 环境,系统讲解了 Git 版本控制系统的核心知识,也展开了 GDB/CGDB 调试器的全方位使用详解

  • 本篇博客将聚焦于冯·诺依曼体系结构与操作系统概念

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

一、冯诺依曼体系结构

在这里插入图片描述

1. 冯诺依曼体系是什么?

简单说,现在我们用的笔记本、公司的服务器,几乎都在遵循一个“规矩”——冯诺依曼体系。这个规矩规定了:电脑要干活,得靠几个核心部件配合,而且它们的“沟通方式”是固定的

2. 核心部件有哪些?

冯诺依曼体系主要有3类核心部件

  1. 输入单元:负责把我们的操作“告诉”电脑。比如键盘(敲字)、鼠标(点图标)、扫描仪(扫文件),都是输入设备——你操作它们,数据就进电脑了。

  2. 中央处理器(CPU):电脑的“大脑”,负责真正干活。里面有两个关键角色:

    • 运算器:算数学题、比较大小(比如1+1=2,判断“a和b谁大”);
    • 控制器:指挥其他部件干活(比如“让键盘把输入的字送过来”“让显示器显示结果”)。
  3. 输出单元:负责把电脑的结果“告诉”我们。比如显示器(显示画面、文字)、打印机(打印文件),都是输出设备——电脑处理完,结果通过它们给我们看。

冯诺依曼体系里,有个绝对不能破的规矩,也是理解的核心

  • 所有部件(输入、输出、CPU)都不能直接“私聊”,必须通过一个“中间人”——内存(存储器)

具体说:

  • CPU(大脑),只认内存。它要读数据、写数据,只能找内存,绝对不直接碰键盘、鼠标、显示器这些外设(输入/输出设备)。
  • 外设(键盘、显示器等)也一样,想给电脑传数据(比如你敲的字),或者想显示电脑的结果,只能先把数据放到内存里,或者从内存里拿数据,不能直接找CPU。

3. 数据是怎么跑的?

光说规矩太抽象,我们拿“用QQ和朋友聊天”来看看数据是怎么按这个规矩流动的——

  1. 你发消息时

    • 你在键盘上敲字(输入单元工作),敲的内容先传到内存;
    • CPU从内存里拿你敲的字,处理一下,处理完再放回内存;
    • 内存再把处理好的消息传给网络设备(也算外设),通过网络发给朋友。
  2. 朋友收到消息时

    • 朋友的电脑通过网络设备(外设)收到消息,先存到他电脑的内存;
    • 他电脑的CPU从内存里拿消息,处理一下(比如“显示在聊天窗口”),再放回内存;
    • 内存把消息传给显示器(输出单元),朋友就看到你的消息了。

4. 发文件的流程也一样

比如你给朋友发一个Word文档:

  • 文档本来存在你的硬盘里(硬盘也是外设),发文件时,硬盘先把文档数据读到内存(给前台);
  • CPU处理一下(比如“打包文件”“标记收件人”),再放回内存;
  • 内存通过网络设备把文件发出去;
  • 朋友收到后,文件数据先到他的内存,CPU处理后,再从内存写到他的硬盘(存起来),或者直接在显示器上打开

5. 为什么程序(比如C/C++写的软件)必须先加载到内存才能运行?

  • 因为CPU只认内存
    程序平时是存在硬盘里的(硬盘是外设),就像文件存在抽屉里

CPU要“执行”程序,必须让程序先到内存里——就像你要读抽屉里的文件,得先拿到桌面上(内存)才能看。这是冯诺依曼体系的硬性规定

二、操作系统

1. 什么是操作系统?

在这里插入图片描述

你可以把操作系统(简称OS)理解成电脑/手机里的“大管家”

  • 任何电脑、手机、甚至智能手表,都得有这么个“管家”才能正常干活。

这个“管家”主要由两部分组成

  • 内核:相当于管家的“大脑”,管着最核心的事儿,比如:

    • 进程管理:同时开着微信、浏览器、游戏,内核得协调它们谁先占用电脑的“算力”(CPU),别打架;
    • 内存管理:电脑的“临时仓库”(内存)就那么大,内核得分配好空间,保证每个程序都有地方放数据,用完了还能及时收回来;
    • 文件管理:我们存的照片、文档、视频,内核得给它们“编好号、分好类”,让我们想找的时候一点就能打开(比如Windows的文件夹、手机的文件管理);
    • 驱动管理:电脑外接的打印机、鼠标,手机连的耳机、充电器,内核得懂它们的“语言”(通过驱动程序),不然设备插了也用不了。
  • 其他程序:相当于管家的“助手”,帮着内核干活,比如:

    • 函数库:一些现成的“工具包”,比如计算、画图的基础功能,手机APP或电脑软件可以直接拿来用,不用自己从零开发;
    • Shell程序:我们和操作系统沟通的“翻译官”,比如Windows的命令提示符(输入dir看文件)、苹果的终端,你输入指令,它传给内核去执行。

在这里插入图片描述

2. 为什么要设计操作系统?

简单说,就是为了“上下讨好”:

  • 对下(管硬件):电脑里的CPU、内存、硬盘、显卡,手机里的芯片、摄像头、电池,这些硬件本身“很笨”,不知道该干啥。操作系统就负责指挥它们:“CPU,你先处理一下微信消息;硬盘,把这张照片存到D盘去”,让所有硬件高效配合,不乱跑。
  • 对上(服务软件和用户):我们用的微信、王者荣耀,或者电脑里的Excel,这些应用程序不想操心“怎么调用CPU”“怎么存文件”——操作系统就提供一个“舒适的环境”,应用程序只需要告诉操作系统“我要干啥”,剩下的交给操作系统处理就行。

3. 操作系统的核心功能:

  • 操作系统它就干一件事:管理

就像学校里的教务处,不管上课、不管改作业,但负责排课表、管教室、安排考试——让老师能好好教书,学生能好好上课。

操作系统也一样,管好硬件资源,让应用程序能顺利运行,用户能用得舒服

4. 怎么理解“管理”?

  • 被管理的对象:比如学校里的学生(对应电脑里的“资源”,像运行的程序、内存空间、文件等)。
  • 怎么管理?
    1. 描述对象:先得知道每个学生的情况——比如记下来“张三,高一2班,成绩A”(对应操作系统里的“数据结构”,记录每个程序的状态、内存用了多少、文件存在哪);
    2. 组织对象:把学生分好类、排好序——比如按班级分组,按学号排队(对应操作系统里的“调度”,比如给程序排个运行顺序,给文件分个文件夹);
    3. 协调对象:辅导员(对应操作系统的具体模块,比如进程管理器)负责日常管理,校长(对应内核)统筹全局,确保整个学校(电脑)有序运行。

三、系统调用和库函数概念

1. 先回忆个前提

  • 前面说过,操作系统(OS)是管理电脑所有硬件(CPU、内存、硬盘等)的“大管家”

  • 硬件这东西很“金贵”,不能随便让外面的程序(比如微信、浏览器)直接碰——万一程序乱操作,可能把硬盘里的文件删了,或者占满内存让电脑卡崩。

  • 所以,所有想操作硬件的需求,都得经过操作系统同意,由操作系统来“代劳”。那程序怎么跟操作系统“沟通”呢?这就要用到“系统调用”了

2. 什么是系统调用?

系统调用可以理解成:操作系统给上层程序(比如APP、软件)开的“官方接口”

  • 就像你想让物业帮你修水管,不能直接闯进物业办公室瞎指挥,得通过物业提供的“报修电话”(官方接口)才行。
  • 程序想让操作系统帮忙做一些底层操作(比如读硬盘里的文件、申请内存空间、打印东西),也得通过这些“官方接口”——也就是系统调用。

举个例子:

当你用记事本写了一段话,点“保存”的时候,记事本程序不会自己直接去操作硬盘(它也没这权限),而是会通过一个系统调用,告诉操作系统:“请帮我把这些数据写到硬盘的XXX位置”。操作系统收到请求后,会自己去操作硬盘完成保存,然后告诉程序“搞定了”。

3. 系统调用的特点

  • 系统调用是操作系统直接提供的,功能很基础、很底层,能完成所有核心操作(比如读写文件、管理进程)。
  • 但它有个缺点:对使用者(程序员)要求比较高

比如你想通过系统调用读一个文件,可能需要自己处理很多细节:先检查文件是否存在、申请内存缓冲区、处理读写错误(比如文件被删了)……步骤多,容易出错。

4. 库函数又是什么?

  • 库函数可以理解成:程序员对系统调用做的“封装和优化”,目的是让开发者用起来更方便。

就像物业的“报修电话”虽然能解决问题,但步骤繁琐(要报地址、报问题、等确认),于是有人专门做了个“便民报修小程序”,把这些步骤简化成“选地址+选问题+提交”,你用起来就简单多了。这个“小程序”就相当于“库函数”。

举个例子

C语言里有个库函数叫fopen(打开文件),它的底层其实就是调用了系统调用。但fopen帮你处理了很多细节:比如自动检查文件是否存在、默认申请了内存缓冲区、出错了会返回统一的错误码……程序员用fopen打开文件,比直接用系统调用简单10倍。

5. 系统调用和库函数的关系

简单说:很多库函数是基于系统调用实现的,是系统调用的“升级版”

  • 系统调用是“底层基础”,是操作系统直接提供的“官方接口”,功能全但繁琐;
  • 库函数是“上层工具”,是对系统调用的封装,更易用、更适合日常开发。

承上启下:和进程管理的关系

  • 前面说过,操作系统管理进程的逻辑是“先描述,再组织”(用结构体描述进程,用链表组织进程)。
    • 那程序怎么创建一个新进程、结束一个进程呢?其实也是通过系统调用!比如操作系统会提供“创建进程”的系统调用,程序通过它告诉操作系统“帮我建个新进程”,操作系统就会用结构体描述这个新进程,再把它加到链表中管理。后面学进程的时候,我们会具体看到这些系统调用是怎么工作的

以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容

我的个人主页

欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92811.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92811.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92811.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广东省省考备考(第七十二天8.10)——言语理解与表达、判断推理(强化训练)

小模考(言语、常识) 错题解析 本题可从第二空入手。转折前后语意相反,转折前指出“投资对经济拉动只能发挥短期的作用”,故转折后应表达“最终消费对经济拉动才能发挥长期的作用”。A项“持久”、D项“长期”均符合文意&#xff0…

数据库删除术:逻辑删除 vs 物理删除,选错毁所有

你以为删除数据就是点个按钮?背后藏着数据安全的生死抉择! 本文揭秘两种删除方式的本质区别,用真实案例教你避免灾难性数据丢失。一、删除的本质:数据消失的两种方式 🧪 #mermaid-svg-pVylRd9e5p4VE5G0 {font-family:"trebuc…

【Python 小脚本·大用途 · 第 3 篇】

1. 痛点 100 字 硬盘里散落着 IMG_2024(1).jpg、IMG_2024(1) (1).jpg、下载目录里同名但大小不同的视频…… 手动比对既耗时又容易误删。今天用 30 行 Python 脚本,基于「内容哈希」一键找出并删除重复文件,支持多目录递归、白名单、空目录清理。2. 脚本…

【网络与爬虫 52】Scrapyd-k8s集群化爬虫部署:Kubernetes原生分布式爬虫管理平台实战指南

关键词: Scrapyd-k8s, Kubernetes爬虫部署, 容器化爬虫管理, 云原生数据采集, 分布式爬虫集群, Docker爬虫, K8s工作负载, Scrapy部署自动化 摘要: 本文深入解析Scrapyd-k8s这一革命性的Kubernetes原生爬虫管理平台,通过费曼学习法从传统部署痛点出发,详…

Spring WebSocket安全认证与权限控制解析

一、认证架构设计 1.1 WebSocket安全认证流程 #mermaid-svg-23pyTyZe6teZy3Hg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-23pyTyZe6teZy3Hg .error-icon{fill:#552222;}#mermaid-svg-23pyTyZe6teZy3Hg .error-t…

复现论文《多无人机协同任务分配算法设计与实现》

1. 论文标题 多无人机协同任务分配算法设计与实现 The Design and Implementation of Multi-UAVs Cooperative Task Assignment Algorithm 2. 内容概括 该论文针对异构多无人机协同执行多目标多类型任务时的分配问题展开研究。首先提出“两阶段”任务分配结构:第一阶段通过…

MCU-基于TC397的启动流程

TC397的启动流程(Start Sequence) 整体启动流程包括固件启动(Boot Firmware)和 Bootloader 和软件启动(Application start-up software)三个阶段。 1. Boot Firmware:是芯片上电后最开始执行的代码,代码由英飞凌供应商固化在BootRom中的,不可编程,没办法对BootRom中的…

单片机毕业设计模板|毕设答辩|毕业设计项目|毕设设计|单片机物联网毕业设计|基于STM32单片机的纱管图像识别系统设计

毕业设计题目:基于STM32单片机的纱管图像识别系统设计1. 需求分析目标用户:纺织行业,自动化生产线,质量检测等。核心功能:实时识别和检测纱管的外观缺陷(如破损、色差等)。提供数据记录和报告功…

谷歌DeepMind发布Genie 3:通用型世界模型,可生成前所未有多样化的交互式虚拟环境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

202506 电子学会青少年等级考试机器人二级理论综合真题

更多内容和历年真题请查看网站:【试卷中心 -----> 电子学会 ----> 机器人技术 ----> 二级】 网站链接 青少年软件编程历年真题模拟题实时更新 2025年6月 青少年等级考试机器人理论真题二级 第 1 题 如图,这是中国古代发明的指南车模型&am…

【YOLO11改进 - C3k2融合】C3k2融合EBlock(Encoder Block):低光增强编码器块,利用傅里叶信息增强图像的低光条件

YOLOv11目标检测创新改进与实战案例专栏 文章目录: YOLOv11创新改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例 专栏链接: YOLOv11目标检测创新改进与实战案例 文章目录YOLOv11目标检测创…

MACBOOK M1安装达梦8数据库

前提已安装好了docker 然后通过docker-compose安装 version: 2.1 services:DM8:image: qinchz/dm8-arm64:8.1.8.128container_name: dm8ports:- "52330:5236"mem_limit: 2gmemswap_limit: 2genvironment:- TZAsia/Shanghai- LANGen_US.UTF-8volumes:- /Users/a1/dock…

2013年考研数学(二)真题

一、选择题(1)考点:低阶无穷小定义、高阶无穷小定义、同阶无穷小定义、等阶无穷小定义、移项变形/极限存在并且分母→0时则分子也→0方法一:方法二:(2)考点:说不清楚的思路/凑导数定义式、洛必达法则、隐函数求导方法一&#xff1…

WinForm 复合控件(用户控件):创建与使用指南

目录 添加流程示意图 复合控件的核心价值 与自定义控件的区别 创建步骤 建好的示例控件 ​使用方法(代码示例) 设计原则 添加流程示意图 点击添加 添加成功 每更新一次复合控件的内容,就需要生成一次 ↓ 添加好复合控件后点这里更新一…

随机向量正交投影定理(Orthogonal Projection Theorem, OPT)_学习笔记

前言 随机向量正交投影定理(Orthogonal Projection Theorem, OPT) 是理解和推导卡尔曼了滤波(Kalman Filtrering, KF) 重要理论工具,简化卡尔曼最优滤波方程推导过程并提供数学严密性。本文介绍该定理内容及证明过程&a…

11-netty基础-手写rpc-支持多序列化协议-03

netty系列文章: 01-netty基础-socket02-netty基础-java四种IO模型03-netty基础-多路复用select、poll、epoll04-netty基础-Reactor三种模型05-netty基础-ByteBuf数据结构06-netty基础-编码解码07-netty基础-自定义编解码器08-netty基础-自定义序列化和反序列化09-n…

艾体宝产品 | 从“被看见”到“被信任”:GWI 协助洞察消费者,重构品牌认知

简介:本文介绍了基于消费者洞察构建品牌认知策略的核心方法。通过深度理解受众,GWI Spark 快速获取真实洞察,指导信息与渠道选择。GWI 帮助追踪情感与认知效果,避免无效曝光陷阱,最终帮助品牌实现从“被看见”到“被信…

Redis高级

目录 一、Redis主从 1. 主从集群结构 2. 主从同步原理 2.1 全量同步 2.2 增量同步 3. 主从同步优化 4. 总结 二、Redis哨兵 1. 哨兵工作原理 1.1 哨兵作用 1.2 状态监控 1.3 选举新的master节点 2. 总结 三、Redis分片集群 1. 散列插槽 2. 故障转移 四、Redis…

正点原子esp32s3探测土壤湿度

开发板使用&#xff1a;正点原子ATK_DNESP32S3 V1.3 IDE: VSCODE PLATFORMIO 土壤湿度检测传感器模块如下图&#xff1a; 引脚&#xff1a; 传感器VCC --> ESP32[3.3V] 传感器GND --> ESP32[GND] 传感器A0 --> ESP32[GPIO20] 代码如下&#xff1a; #include <…

一篇文章解决 Win10 同时部署多个版本的Tomcat

文章目录所用到的文件夹Tomcat服务端口修改Tomcat参数修改环境变量配置验证环境是否配置成功可能遇到的问题问题一&#xff1a;startup.bat闪退问题二&#xff1a;startup.bat成功启动&#xff0c;但仍打不开服务器总结最近在学习JavaWeb的时候&#xff0c;想安装新版本的Tomca…