【Linux】从冯诺依曼到操作系统:理解计算机运行的基本脉络

进程是操作系统的核心抽象之一。在进入进程的细节之前,有必要把底层硬件架构和操作系统的角色串起来------否则概念容易飘在空中,缺乏锚点。

1. 冯诺依曼体系:所有设备都围着内存转

今天大部分的计算机,从笔记本到云服务器,都遵循冯诺依曼体系结构。它把硬件分成五个部分:

  • 输入设备:键盘、鼠标、网卡等

  • 输出设备:显示器、打印机等

  • 存储器 :这里特指内存

  • 运算器 + 控制器 :合称 CPU

这个架构的核心约束只有一句话:CPU 只能直接读写内存,不能直接访问外设;外设也只能和内存打交道。

举个例子:当你在聊天软件里发送一条消息,数据并不是直接从键盘流进网卡。键盘输入先被放入内存,CPU 从内存中读取、处理,处理后写回内存,网卡再从内存中取走数据发送。发送文件也一样,硬盘的数据要先流经内存,由 CPU 调度,最终才由网卡发出。

这个设计的本质是用内存作为所有数据交换的中转站。CPU 计算速度极快,但外设的 I/O 速度极慢,内存作为缓冲层,隔离了速度差异。

2. 操作系统:管理硬件资源的"管家"

硬件之上是一个基础的软件集合,就是操作系统(OS)。它包含内核(进程管理、内存管理、文件系统、设备驱动)以及一些辅助程序(shell、函数库等)。

操作系统的定位很明确:

  • 向下,管理好所有硬件资源。

  • 向上,为应用程序提供一个稳定、统一的运行环境。

怎么理解"管理"?管理无非两件事:描述 和组织 。操作系统用结构体来描述每一个被管理的对象------比如用 struct task_struct 描述一个进程,用 struct mm_struct 描述内存空间------然后把这些结构体用链表、红黑树等数据结构组织起来,方便增删改查。所谓的"管理算法",就是在这套数据结构上施加的策略。

用户程序不能直接操作硬件,必须通过操作系统提供的接口------系统调用 。系统调用很基础,比如 open、read、fork,程序员直接使用它们门槛较高。于是有人将常用的系统调用封装成库函数(如 libc 中的 printf、malloc),让开发更友好。这就是系统调用和库函数的关系。

进入进程话题之前,一个自然的问题是:操作系统怎么管理进程?答案还是那两个字------先描述,再组织。接下来就是这个思想的具体展开。

相关推荐
强哥聊算力2 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Initialize-le2 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
砚凝霜4 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根5 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
数字新视界5 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
U-Mail邮件系统6 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特7 小时前
Linux基础指令3
linux·服务器
Smoothcloud润云7 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
天远数科7 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化