1. 冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系
1.1 输入输出设备(IO设备)
是数据处理系统的关键外部设备之一,可以和计算机本体进行交互使用
1. 输入设备:键盘,鼠标,网卡,磁盘,摄像头,话筒…
2. 输出设备:显示器,磁盘,网卡,打印机…
有的硬件是纯的输入设备, 有的硬件是纯的输出设备。有的硬件既是输入设备, 又是输出设备,比如说网卡和磁盘
1.2 存储器
存储器其实就是我们常说的内存
1.3 *处理器(CPU):运算器 + 控制器
运算器:运算器是计算机中对数据进行计算的, 计算分为算术运算和逻辑运算
控制器:对于计算机来说, 什么时候将输入设备的数据放入到存储器, 什么时候将存储器的数据放到运算器。,什么时候将运算器的数据取出再放回到存储器中, 都是由控制器控制的
二进制程序本质就是一个文件,存储在磁盘当中,任何一个程序在运行的时候,都必须先从磁盘加载到内存
因为代码其实就是数据,数据被CPU进行处理计算,但是CPU只能访问内存,不能直接访问外设
所以,CPU要执行一个程序,必须先由操作系统把输入设备的数据拷贝到内存(存储器)里,然后CPU才能从内存中拷贝数据到内存了,所以这是由冯诺依曼体系结构决定的
1.4 总线
存储器、输入输出设备、运算器、控制器等都是独立的个体, 但是各个硬件单元必须要用“线”连接起来, 这些线叫做总线
总线分为两类:1. IO总线:cpu和存储器, 也就是和内存中进行交互的叫做系统总线
2. 系统总线:外设和存储器交互的叫做IO总线
1. 不考虑缓存情况,CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
2. 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取
3. ⼀句话,所有设备都只能直接和内存打交道
4. 计算机的效率本质就是由计算机的拷贝效率决定的
1.5 软件数据流的理解
我们举个例子:登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗⼝,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送⽂件呢?
答案就是:
QQ程序开始运行就会加载到内存当中,cpu就能从内存当中读取数据进行处理,我们通过键盘把数据传输到内存里,cpu对数据进行处理,然后通过网卡把cpu处理的结果,通过网络发送到对方电脑里,对方的网卡通过网络就可以拿到网络中传输的数据,然后网卡把数据加载到内存,cpu对数据进行处理,把结果写到内存里面,把内存里处理完成的结果在输出到显示器上面,就可以看到消息了
2. 操作系统(Operator System)
2.1 概念
任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS),操作系统也是一个软件
操作系统包括:
1. 内核(进程管理,内存管理,⽂件管理,驱动管理)
2. 其他程序(例如函数库,shell程序等等)
我们谈操作系统一般指的是内核
2.2 设计OS的目的
操作系统对下与硬件交互,进行软硬资源的管理(手段)
操作系统对上为用户程序(应用程序)提供⼀个良好的执⾏环境(目的)
操作系统内核:
1. 内存管理:负责内存的分配、共享、保护和扩展
2. 驱动管理:管理设备驱动的分类、更新和删除
3. 文件管理:处理文件存储、目录组织、操作和保护
4. 进程管理:调度进程运行,分配计算资源
2.3 理解操作系统的核心功能
在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的管理的软件
举个例子:在大学里, 有学生,辅导员,校长
其中校长就是管理者, 学生是被管理者
但是我们都知道,校长对我们进行管理的时候,是不需要见到我们的,但是为什么校长还能把我们管理的很好呢? 因为校长平时只需要知道我们的个人信息, 知道我们有没有犯什么错误, 知道我们的绩点怎么样,那么他就能对我们进行奖惩或者奖励
由此可见:
1. 管理者和被管理者是不需要见面的
2. 管理者在不见被管理者的情况下,只要能够得到被管理者的管理信息, 就可以在未来进行决策
管理的本质是通过对数据的管理, 达到对人的管理
3. 管理者和被管理者都不见面, 管理者是通过辅导员来获得被管理者的数据的
校长是管理者,拥有决策权,辅导员是执行者,学生是被管理者
三者对应下三层,校长对应操作系统,辅导员对应驱动程序,学生对应底层硬件
总结
计算机管理硬件:
1. 描述起来,⽤struct结构体
2. 组织起来,⽤链表或其他⾼效的数据结构
操作系统是一个管理软硬件资源的软件,就是建立了底层硬件设备的属性的结构体,然后根据这些属性创建相应的结构体对象。 通过管理这些结构体对象, 来达到管理硬件的目的
也就是说, 操作系统内部存在大量的数据结构
2.4 系统调用和库函数概念
系统调用有两点:
1. 操作系统要向上提供服务
2. 操作系统不相信任何人,但是它为我们开了一扇窗:系统调用
而这两点就类似于银行
总结:
操作系统对外会表现为⼀个整体,但是会暴露⾃⼰的部分接⼝,供上层开发使⽤,这部分由操作系统提供的接⼝,叫做系统调用
系统调⽤在使⽤上,功能⽐较基础,对⽤⼾的要求相对也⽐较⾼,所以,有⼼的开发者可以对部分系统调⽤进⾏适度封装,从⽽形成库,有了库,就很有利于更上层⽤⼾或者开发者进⾏⼆次开发
库函数和系统调用的关系是上下层,判断库函数底层有没有进行系统调用就看调用库函数时有没有访问硬件,只要访问了硬件就一定会系统调用
未完待续~