1.冯诺依曼体系结构
在外面计算机历史上,常见的计算机都要遵循一个基本的体系——冯诺依曼体系
截⾄⽬前,我们所认识的计算机,都是由⼀个个的硬件组件组成
• 输⼊单元:包括键盘, ⿏标,扫描仪, 写板等• 中央处理器(CPU):含有运算器和控制器等• 输出单元:显⽰器,打印机等
注意:
• 这⾥的存储器指的是内存• 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)• 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。• ⼀句话,所有设备都只能直接和内存打交道。
例子1:
在我们使用QQ或者WX时,在发送数据时就相当于从我的输入设备(键盘)输入,经过我的内存与cpu的交互,转化为相应的信号(加密),再通过输出设备(网卡)。
另一边,输入设备(网卡)拿到数据后,进入自己的内存,再由CPU解码后还给内存,内存发送到输出设备(显示器)。
2.操作系统(Operator System)
首先为了方便理解,我们可以认为:操作系统就是进行软硬件管理的软件。
任何计算机问题都可以通过添加一层软件层来解决。
2.1概念
任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
• 内核(进程管理,内存管理,⽂件管理,驱动管理)• 其他程序(例如函数库,shell程序等等)

2.2设计OS的⽬的
• 对下,与硬件交互,管理所有的软硬件资源• 对上,为⽤⼾程序(应⽤程序)提供⼀个良好的执⾏环境

2.3如何理解系统各个层的功能
光看上面几张图,小伙伴们肯定会觉得懵,这什么玩意呀上来几张图,这谁记得下来,这不胡闹吗?
好的,那我们以一个例子来解释各个阶级扮演的角色。
例子2:
在我们的大学中,宏观来看有三种角色——校长,辅导员,学生。



那么从管理的角度,学生这么多,校长一个人是管不过来的,我们就需要辅导员来帮助校长,在这之中,校长只需要知道每个学生的数据,通过数据来判断这个学生是应该拿奖学金还是应该处罚,校长不需要知道这个学生平时怎么学习,怎么生活这些都是辅导员的活,只需要数据。
好,到这里我们就可以知道——校长只负责管理学生的数据,导员只负责把学生的数据交给校长,学生只需要好好学习。
那么不难理解,在我们下面的图中,校长就是操作系统,辅导员就是驱动,学生就是硬件。

现在逻辑是不是一下就清晰了起来。
好的,还没结束,话说我们的校长以前是程序员出身,一步步走到现在,但是他并没有忘记,当年的技术,他为了管理这些学生数据,他就写了写了一个结构体(struct)把学生的属性描述起来,在通过数据结构(链表)将我们的的结构体组织起来。

至此我们彻底了解了操作系统,这里的数据结构就是我们操作系统中大名鼎鼎的PCB。
结论:操作系统管理一定是——先描述,再组织。
计算机管理硬件1. 描述起来,⽤struct结构体2. 组织起来,⽤链表或其他⾼效的数据结构
2.4系统调⽤和库函数概念
上面我们解释了操作系统对下的管理,接下来我们聊一聊操作系统对上怎么提供服务。
也是一样,我们通过一个例子来说明。
例子3:

在银行里,如果我们直接让客户存钱和取钱直接去金库里面操作,这样难道不是省事省力吗?为什么还要设置这么复杂的银行系统?
显然这样是可以省时省力,但是也有一个问题——群众里面有坏人!!!如果任意随意进入金库,那不是乱套了,到处乱取钱,银行就不用干了,分分钟倒闭。
为了解决这种问题,银行设置了柜台,相当于金库的外壳。客户的任何问题都可以在柜台解决。这样不就可以完美解决了。
但同时,还有一个问题,假设一个老大爷来了,找不到柜台,不会使用怎么办?
简单,我们银行设置了大堂经理,老大爷一进来大堂经理就给他安排的明明白白。
至此,故事中的金库就是操作系统,银行柜台就是外壳程序,银行体系就是系统调用接口,客户就时我们的用户,老大爷就是计算机小白,大堂经理就是库函数。

在开发⻆度,操作系统对外会表现为⼀个整体,但是会暴露⾃⼰的部分接⼝,供上层开发使⽤,
这部分由操作系统提供的接⼝,叫做系统调⽤。
系统调⽤在使⽤上,功能⽐较基础,对⽤⼾的要求相对也⽐较⾼,所以,有⼼的开发者可以对部
分系统调⽤进⾏适度封装,从⽽形成库,有了库,就很有利于更上层⽤⼾或者开发者进⾏⼆次开
发。