解码冯・诺依曼:操作系统是如何为进程 “铺路” 的?
目录
1. 冯诺依曼体系结构
结构介绍
深入理解
2.操作系统
2.1概念
2.2设计OS的目的
2.3理解操作系统
核心功能
如何理解管理
3.系统调用和库函数
1. 冯诺依曼体系结构
结构介绍
输入设备: 键盘,鼠标,话筒,摄像头,磁盘等。
输出设备:显示器,磁盘,网卡,打印机等。
CPU=运算器+控制器
存储器:内存
深入理解
1.读文件把磁盘文件读到内存,同时我们也能向磁盘写文件,可以成为IO(Input/output)-》站在内存的角度。
2.软件运行,必须先加载到内存?程序运行之前,在哪里?磁盘->文件
3.CPU获取,写入,只能在内存中来进行。CPU在数据层面,只和内存打交道,外设只和内存打交道。
4.程序加载的本质是IO
这都是体系结构决定的。数据是从一个设备“拷贝”到另一个设备。体系结构的效率:由设备的“拷贝”效率决定。
操作 | 输入设备 | 内存交互 | 运算器/控制器 | 输出设备 |
---|---|---|---|---|
键盘输入 | 键盘 | 写入内存 | 控制器解析字符输入 | - |
文本发送 | 鼠标/控件 | 控件数据 → 网络缓冲 | 控制器调用协议栈 | 网卡发送 |
消息接收 | 网卡 | 网络数据 → 应用内存 | 控制器通知显示模块 | 显示器 |
文件发送 | 文件/磁盘 | 读取文件 → 内存 | 控制器分包压缩发送 | 网卡 |
文件接收 | 网卡 | 接收 → 存内存 | 控制器写文件操作 | 磁盘 |
2.操作系统
2.1概念

2.2设计OS的目的

1.软硬件体系结构是层状结构,体现高内聚低耦合。
2.层的理解可以类比C++的继承
3.访问操作系统,必须使用系统调用->其实就是函数,由系统提供的
4.我们的程序,只要判断访问了硬件,那么它必须贯穿整个软硬件体系结构,要系统调用。向printf函数都封装了系统调用
5. 库可能在底层封装了系统调用
2.3理解操作系统
核心功能
如何理解管理

即先描述在组织,在面向对象中就是类和容器的关系应用。
在不了解进程时,对进程管理也是先描述在组织。对文件也是如此。
3.系统调用和库函数
操作系统要向上提供对应的服务。操作系统不相信任何人或者用户,那么如何提供服务?通过系统调用。
向银行通过相关窗口提供服务。
操作系统一般是C语言写的,系统调用相当于C实现的函数,大多数的函数有输入参数和返回值,输入参数是用户给操作系统的,返回值是操作系统给用户的。
系统调用的本质是用户和操作系统进行某种数据交互。
在开发角度,操作系统对外表现为一个整体,但是会暴露自己的部分窗口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对于用户要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。