冯诺依曼体系架构以输入、输出、存储、运算器和控制器五大部件为核心强调数据与指令存于内存CPU仅访问内存。为提升效率采用分级存储结构缓存与内存协同工作。操作系统作为软硬件中介通过进程、内存、文件、设备管理实现资源调度与抽象向上提供系统调用接口由库函数封装简化使用。系统调用是内核服务入口保障安全与效率体现“管理即数据结构”的核心思想。目录一、冯诺依曼体系架构1.1 数据为什么要存在内存1.2 CPU的核心地位二、操作系统2.1 操作系统的概念2.2 为什么要有OS下文OS都指狭义的OS2.3 OS的管理作用2.4 系统调用与库函数OS的对外接口一、冯诺依曼体系架构冯诺依曼体系由五大核心硬件组成分别是输入设备存储器输出设备运算器及控制器输入设备包括键盘鼠标扫描仪等输出设备如显示器喇叭网卡等输出与输入设备统称为外设运算器有两种运算算术运算以及逻辑运算控制器协调各个组件工作控制指令执行顺序和运算器共同组成CPU存储器存储数据和指令其实就是内存需要注意的是磁盘是外存是外设不考虑缓存情况这里的CPU只能对内存进行读写不能访问外设外设输入或输出设备要输入或者输出数据也只能从内存中读取1.1 数据为什么要存在内存概括为一句话的话是要存储的数据很多比如照片等等但是并不是每个照片或文件都是当下需要用到的为了加快检索速度将临时需要的数据和程序放在内存而硬盘速度很慢不能直接给 CPU 拿来计算。其实是牺牲速度的容量法与牺牲容量的速度法数据在计算机内部流动CPU不和外设打交道CPU要数据只从内存中读取写数据也只写入内存存储是分级的距离CPU越近越快容量越贵1.2 CPU的核心地位运算器和控制器共同组成CPU,是计算机的大脑现代CPU会集成多级缓存L1、L2、L3存储层次关系从快到慢成本从高到低CPU 寄存器 → 高速缓存 → 内存 → 本地磁盘 → 远程存储。二、操作系统任何计算机系统都包含一个基本的程序集合称为操作系统OS笼统的理解操作系统是一个进行软硬件资源管理的软件操作系统包括内核进程管理内存管理文件管理驱动管理其他程序例如函数库shell程序等2.1 操作系统的概念操作系统的定义可以分为广义与狭义两种广义OS操作系统 核心应用软件狭义OS操作系统内核直接管理硬件、进程、内存、文件、设备向上给应用提供系统调用运行在最高特权级。他们的关系可以用下面这张图来表示。2.2 为什么要有OS下文OS都指狭义的OSOS在计算机架构中处于中间的管理层的位置起到对下管理硬件对上服务应用的作用通过驱动来起到管理的作用对硬件封装复杂硬件细节统一管理 CPU、内存、磁盘对程序给应用提供简单接口不用直接操作硬件对资源调度分配资源多程序并发运行、隔离保护对用户提供易用的使用环境。2.3 OS的管理作用功能模块核心职责解决什么问题主要对象进程管理进程的创建、撤销、调度、同步与通信让多个程序能并发运行公平分配 CPU 时间进程、线程内存管理内存的分配与回收、地址映射、内存保护多进程同时驻留内存且互不干扰合理利用内存物理内存、虚拟地址文件管理文件的创建 / 读写 / 删除、目录管理、磁盘空间分配让用户和程序方便地持久存取数据文件、目录、磁盘设备管理设备的驱动、分配、启动、I/O 控制、中断处理屏蔽硬件差异统一管理各种外设键盘、显示器、磁盘等 I/O 设备系统调用接口向用户程序提供访问内核功能的统一入口应用无需直接操作硬件安全使用系统资源应用程序管理的本质是对数据做管理被管理者身上的相关有效数据才是管理的核心。OS管理硬件分为两步用struct结构体描述被管理的对象因为操作系统是用C写的用链表或其他高效的数据结构组织结构体而操作系统本身其实是数据结构的集合。2.4 系统调用与库函数OS的对外接口如果直接让用户访问内核数据结构会存在安全风险因此给用户提供接口来规避这样的问题用户如果想要访问系统只能通过系统调用的方式。OS通过两层接口向应用提供服务降低使用门槛系统调用内核直接提供底层接口如fork创建进程open打开文件功能基础权限高但使用复杂库函数对系统调用的封装简化使用提供额外功能如缓存错误处理• 在开发角度操作系统对外会表现为⼀个整体但是会暴露自己的部分接口供上层开发使用 这部分由操作系统提供的接口叫做系统调用。• 系统调用在使用上功能比较基础对用户的要求相对也比较高所以有心的开发者可以对部分系统调用进行适度封装从而形成库有了库就很有利于更上层用户或者开发者进行二次开发库函数与系统调用函数是上下层的关系系统调用是内核提供的底层接口运行在内核态库函数是用户空间的函数运行在用户态。很多库函数封装了系统调用例fopen封装open、printf封装write帮我们简化逻辑、增加缓存、错误处理。不是所有库函数都包含系统调用部分纯计算类库函数strlen全程在用户态执行不会触发系统调用系统调用是 OS 真正的服务入口库函数只是上层包装不是必须的你也可以直接用系统调用编程库函数存在的意义在于减少用户使用操作系统的成本