目录

一.计算机硬件结构——冯诺依曼体系

1.组成:

2.工作流程和关系

二.操作系统的概念

1.组成

2.定义

3.如何管理各种资源

4.系统调用和库函数的理解


一.计算机硬件结构——冯诺依曼体系

1.组成:

1.组成部件

运算器(ALU):算术运算(加减)、逻辑运算(与或非)。

控制器(CU):取指令→译码→发控制信号,协调全机;含程序计数器 PC(存下条指令地址)。

存储器(主存):即内存,统一存程序 + 数据;一维线性地址空间,按地址访问。

输入设备:键盘、鼠标、网卡、磁盘等,将信息转为二进制。

输出设备:显示器、打印机、网卡、磁盘等,结果转出。

2.组成链接部件的总线

分类(按照总线的功能)

数据总线 DB传真实数据、指令,双向传输

地址总线 AB传内存地址,找数据放哪,单向

控制总线 CB传控制命令(读、写、启停、同步)

各部件依赖的总线:

1.控制器依靠控制总线指挥所有设备,发命令

2.运算器靠数据总线拿数据、传结果 

3.主存储器(内存)同时连数据 + 地址 + 控制三大总线,总枢纽
4.输入/输出设备靠数据总线从内存输入/输出数据

简化一下:

 CPU(运算器 + 控制器) ←三总线→ 内存内存 ←数据总线→ 输入 / 输出设备

我们根据总线的位置来分类:

外部:IO总线

内部:系统总线

2.工作流程和关系

结构关系特征:

我们可以根据冯诺依曼系统的结构特点可以得出:内存将计算机分割为计算机内部——cpu和计算机外部——外设。现在有一个问题是:为什么要这样分割?为什么直接不让外设直接和cpu交互?

1. 速度差距天差地别(最主要)

CPU:纳秒级,运算极速 

外设:毫秒 / 微秒级,慢到极致如果外设直接连 CPU,CPU 会全程等待外设,99% 性能直接废掉

内存做缓冲:CPU 全速跑,外设慢慢传,互不耽误

2.次原因

外设太多,线太多太复杂,直接连cpu上会爆炸。。。

信号电压、频率、通信规则不一样,无法直接对接

外设只是负责录入 / 输出,无权直接指挥 CPU 执行指令(不能让手脚指挥大脑)

而且为了让外设跟上cpu的速度,单纯的内存是不够的,我们还需要寄存器——CPU 三级高速缓存 L1/L2/L3,层层逐级提速、逐级缓冲

寄存器特点就是:空间小,速度快,价格贵

工作流程:
数据传输:数据在内外部流动

二.操作系统的概念

1.组成

两大组成部分

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

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

2.定义

操作系统是管理计算机软硬件资源、控制程序运行、为用户和应用程序提供服务接口的系统软件,是硬件与应用软件之间的中间层。

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

1.软硬件体系结构层状结构

2. 访问操作系统,必须使用系统调用 -- 其实就是函数,只不过是系统提供的

3. 我们的程序,只要你判断出它访问了硬件,那么它必须贯穿整个软硬件体系结构

4. 函数库可能在底层封装了系统调用      

3.如何管理各种资源

1.管理目标:

对内:

 进程管理 

 存储管理(内存)

 设备管理 

 文件管理 

对外: 用户管理

2.管理方式:

其实就是先把软硬件各种核心属性用一个结构体 “打包”,就可以对应填入各种数据了,然后将所有的软硬件各自的结构体组织起来(可以用不同高效合适的数据结构组织),就可以实现统一管理了。

抽象出来就是:先根据其数据进行描述其属性,再使用合适的数据结构将其组织起来,这样就方便增删查改(管理)了。阶段说就是:先描述,再组织。

4.系统调用和库函数的理解

1. 系统调用

 定义:操作系统内核向用户程序暴露的、访问硬件 / 系统资源的唯一接口,是用户态进入内核态(切换系统操作的对象(对用户(shell),还是对硬件(IO)))的 “入口”。

功能:整理所有资源,方便用户使用并且更加高效,防止用户直接接触设备,造成混乱,就像是银行不会让客户自己去金库取钱。

2.函数调用

定义:更加便利的使用工具(系统调用还是太复杂了)

分类:

1.封装了系统调用的库函数:比如 C 标准库的printf、fopen,底层会调用write、open系统调用

2. 纯用户态的库函数:比如strlen、memcpy,完全在用户态执行,不触发系统调用   

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐