avatar

AMoon丶的博客

天行健,君子以自强不息。

  • 首页
  • 分类
  • 标签
  • 归档
Home Linux系统编程(1)--简单了解OS
文章

Linux系统编程(1)--简单了解OS

Posted 2025-04-30 Updated 28 days ago
By AMoon丶
8~11 min read

冯诺依曼体系结构

我们的计算机硬件方面:

  • CPU=运算器+控制器+其他(图中没有体现)

CPU有自己的一套二进制代码指令集,其功能简单来说就是执行别人下发的指令并计算别人提供的数据。

  • 输入设备(如磁盘、键盘),输出设备(如网卡、显示器)相对于CPU和内存而言相当于外设。

从上述结构图中,我们可以了解到一个关键信息:

在数据层面,CPU只和内存交互,不和外设交互。外设中数据时,只能载入到内存;同时内存中数据,也只能写出到外设。数据在内存和外设中交互,称为IO(INPUT/OUTPOUT)。

故:程序要运行必须先加载到内存,因为CPU只从内存访问数据。

随之而来的问题就是:为什么需要使用内存,而不直接将数据从输入设备给到CPU,再由CPU写出到输出设备?

内存是临时的数据存储,即断电数据丢失,硬盘是永久存储设备,但内存的读写速度比硬盘快多个数量级,这是物理层面上决定的。CPU的计算速度极快,和硬盘的读写速度及其不匹配,为了缓解两者的速度差异,提高整机性能,便使用内存作为一层缓存层。

操作系统

在上述物理架构的基础上,需要数据将数据从外设加载到磁盘,CPU才能访问数据。那么“什么时候加载数据?”、“每次加载多少数据?”、“内存中的数据CPU不使用了又该如何处理?” ,这样类似的多种问题,便需要操作系统(OS)来帮我们进行各种策略。

操作系统本质上是:进行软硬件管理的软件。

首先我们需要先对"管理"有一个充分的理解:管理者做决策,被管理者做执行,而管理者和被管理者并不需要直接的交互,管理者依然能够管理被管理者。好比在公司中,上层老板是管理者,下层员工是被管理者,而老板对公司的管理,对员工的管理,并不需要直接和员工交互(或者说咱底层员工其实见不到大老板几面😂)。

管理者的决策要有依据,依据便是数据。虽然员工不和大老板交互,但是员工的数据,如干了多久、多大年龄、多少产出...,大老板都能知道。

故,管理的本质是对数据的管理。

当数据过多时,又应该如何更好的管理数据?

所有的管理,其本质逻辑方法:先描述(成结构/类),再(使用对应的数据结构)组织。

故在操作系统中,对软硬件的管理,也就转化为了对其描述出的数据结构的管理。

该图中,OS往下通过驱动对硬件进行管理,按照“先描述,再组织”的管理方法,我们大致可以猜到OS内核中大概会有类似这样的代码来管理硬件:

struct dev {
  struct dev* next;
  int type;
  int status;
  ...
} // 先描述硬件设备

list dev_list; // 再使用链表结构进行管理
struct dev disk_dev;
struct dev keyboard_dev;
dev_list.insert(dist_dev);
dev_list.insert(keyboard_dev);

OS对下要保证自身和底层设备的安全,所以OS不能相信任何用户。好比一家银行系统不会相信任何一个用户,其不可能让用户直接去他们的仓库直接取钱或者存钱,但银行又必须为用户提供服务,故其提供了银行柜台窗口来为用户提供接口式的服务。OS同理,OS保证自身安全的同时,又必须为上层用户提供服务,故OS为上层提供了OS接口,这些接口也就称为系统调用。

故,系统调用本质上就是:OS通过C语言提供的函数调用。

而要求用户直接使用系统调用及其麻烦,也就出现上层的多种工具封装了系统调用如shell(提供指令操作),c/cpp的库(提供编程操作),图形化界面等来简化用户使用OS的难度。

Linux系统编程
License:  CC BY 4.0
Share

Further Reading

Apr 30, 2025

Linux系统编程(1)--简单了解OS

冯诺依曼体系结构 我们的计算机硬件方面: CPU=运算器+控制器+其他(图中没有体现) CPU有自己的一套二进制代码指令集,其功能简单来说就是执行别人下发的指令并计算别人提供的数据。 输入设备(如磁盘、键盘),输出设备(如网卡、显示器)相对于CPU和内存而言相当于外设。 从上述结构图中,我们可以了解

OLDER

NEWER

读书随笔-EXPLAIN、 optimizer trace

Recently Updated

  • 读书随笔-EXPLAIN、 optimizer trace
  • Linux系统编程(1)--简单了解OS

Trending Tags

Halo

Contents

©2025 AMoon丶的博客. Some rights reserved.

Using the Halo theme Chirpy