初识操作系统

2025博客之星年度评选已开启 10w+人浏览 1.2k人参与


个人主页

🎬 个人主页Vect个人主页

🎬 GitHubVect的代码仓库

🔥 个人专栏: 《数据结构与算法》《C++学习之旅》《Linux

⛺️Per aspera ad astra.


1. 冯诺依曼体系结构

我们常见的计算机,都遵循冯诺依曼体系结构

image-20251217203308021

  • 输入设备: 键盘、鼠标、网卡、磁盘、话筒…
  • 输出设备: 显示器、磁盘、网卡、打印机…
  • 存储器: 内存,和磁盘外存相对应

所有的数据流转都遵循以下原则:

CPU在数据层面,不和外设直接交互,只能和存储器(即内存)交互!!!

举个例子:一个二进制文件运行在显示器上显示的过程:

二进制可执行文件–>磁盘–>存储器–>CPU–>存储器–>显示器

任何程序要运行,必须从磁盘加载到内存之后,经过CPU处理才能运行!!!——这是冯诺依曼体系结构决定的!!!

为什么要设计存储器?

外设IO处理效率极低,CPU处理效率极高,二者运行效率不是一个量级的,内存作为链接二者的巨大缓存

如果跳过内存:

image-20251217172703694

根据木桶效应,整个系统效率取决于效率低的模块,而这样设计,不合理

再来看一下存储金字塔:

image-20251217192020590
为什么不投入设计CPU呢?对于上层寄存器和三级缓存,制造成本极高,造假昂贵,而对于内存、硬盘价格就会越来越便宜,所以,冯诺依曼体系结构是个伟大的发明,让普通人也能用上计算机。

我们再举个例子理解一下冯诺依曼体系结构的数据流向:

从登录上qq开始和某位朋友聊天开始,数据的流动过程:假设发送“hehe”,此时不考虑网络层

  1. 键盘键入消息“hehe”,经过输入设备输入到存储器
  2. 存储器将消息“hehe”传输到CPU
  3. CPU经过处理,解密翻译,重新输出到存储器内
  4. 存储器将处理过的数据输出到网卡

此时,发送消息完成,经过网络层到达某位朋友的网卡

  1. 网卡接收到“hehe”数据,输入到存储器中
  2. 存储器将消息“hehe”传输到CPU
  3. CPU经过处理,解密翻译,重新输出到存储器内
  4. 存储器将处理过的数据输出到显示器上

2. 操作系统相关概念

广义上来讲,OS包括外壳程序和内核两部分

狭义上来讲,OS一般只谈内核

image-20251217201053266

这样设计的目的是:

  • 对上层,给用户程序提供稳定、高效、安全的运行环境
  • 对下层,能稳定、高效、安全地管理硬件设备

image-20251217202624250

所以,操作系统的核心是管理,管理好上层和下层,围绕先描述,再组织的核心思想:

  • 对上层:
    • 用户/应用不会直接操作OS的内部模块,二通过OS提供的简化接口来提需求:比如开发者在代码里调用lib的“文件读取函数”,这些操作会通过“系统调用接口”传给OS
    • 简单来说:OS把进程、内存分配等复杂逻辑藏起来,给上层用户/应用提供简单易懂的操作入口
  • 对下层:
    • 不同硬件的工作逻辑差异很大,OS不直接操作硬件,而是通过调用对应的驱动程序来控制硬件:比如要保存文档到硬盘,OS的文件管理模块不会直接和硬盘交互,而是调用“硬盘驱动”,让驱动按照硬盘的设计完成数据写入
    • 简单来说:OS把“不同硬件的复杂操作”抽象成统一的管理逻辑,向下统一管理各种硬件

根据上述:OS是中间连接层

  • 向上:通过 “接口封装”,把复杂的系统功能简化成用户 / 应用能轻松用的操作
  • 向下:通过 “硬件抽象”,把多样的硬件操作统一成系统能管控的资源

最终实现的效果是:用户不用懂 OS 内部逻辑,硬件不用管上层需求,OS 靠 “上下管理” 让整个系统有序运行

### Linux 操作系统入门教程 #### 掌握基本命令 对于初学者而言,熟悉并熟练掌握Linux的常用基础命令至关重要。这些命令构成了日常操作的基础,使用户能够高效地管理和操作文件、目录以及其他资源[^1]。 例如,`ls`用于列出当前目录下的文件和子目录: ```bash ls -l ``` 此命令会以长列表的形式显示详细信息。 另一个重要命令是`cd`,它允许用户改变工作目录: ```bash cd /path/to/directory ``` 这有助于导航到不同的位置执行其他任务。 #### 系统管理及应用 系统的有效管理涉及多个方面,包括但不限于启动过程、账户创建与维护、进程监控以及安全策略实施等。大多数情况下,这些都是借助于各种命令来完成配置文件或编写脚本来实现自动化处理流程。 比如添加新用户的指令如下所示: ```bash sudo adduser username ``` 该命令可以用来增加新的登录账号,并设置初始密码和其他属性。 查看正在运行的服务状态可以通过下面的方式获取: ```bash ps aux | grep service_name ``` 这条语句可以帮助识别指定名称的相关程序实例及其占用资源情况。 #### 学习源码 鉴于Linux内核是由C语言编写的这一事实,深入理解其内部机制往往意味着要阅读大量高质量的开源项目文档资料。这对于那些已经具备一定UNIX经验的人来说可能更加轻松一些,因为他们能更快地上手理解和修改底层逻辑结构。 为了更好地适应实际应用场景需求,在个人计算机上搭建实验平台是非常必要的。考虑到双系统共存带来的不便之处,利用虚拟化技术如VMware Workstation Pro构建独立的操作环境成为了一种理想的选择方案[^2]。 通过上述几个方面的努力,相信读者能够在较短时间内建立起扎实的知识体系框架,为进一步探索高级特性打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值