Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我吧!你定不会失望。
本篇导航
- 1. 冯诺依曼体系结构
- 为什么这样设计?
- 2. 操作系统概念
- 为什么我们需要操作系统呢?
- 操作系统怎么进行管理?
计算机是由两部分组成的:硬件+软件.与硬件相关的为冯诺依曼体系结构,与软件相关的为:操作系统.
1. 冯诺依曼体系结构
如今大多数计算机(笔记本,服务器等)大多数都遵守冯诺依曼体系结构.实际中的模型细节较为复杂.这是抽象后的简单模型.其结构模型为:
在这张图中,红色为数据传输信号,而黑色则为控制信号
其中输入设备为:键盘,鼠标,硬盘等设备
输出设备为:显示器,打印机,硬盘等设备
运算器与控制器我们统称为CPU
这里的存储器是指内存,而不是硬盘.
为什么这样设计?
输入设备,输出设备的速度远远慢于CPU的速度.而存储器的速度在这二者之间.
由木桶效应可知.性能往往由短板决定.
若直接由CPU对接输入输出设备,则会造成CPU大多时候都在等待IO设备,CPU并不能被很有效的利用起来.
而加入了存储器这个介质,可以较大程度上解决这个问题.提高CPU的利用率.
那么为什么不选择最快的cache呢?
根据存储金字塔来看,越往上的价格越高,且速度越快.若全部采用最快的cache.计算机就会因为造价昂贵而无法普及了
一句话说:所有的设备都只能跟内存打交道
关于冯诺依曼体系结构,我们可以试着从以下这两个例子来理解
-
你登上qq后跟你的朋友进行聊天.(不涉及网络传输层面)
首先键盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.
发送给你的朋友的电脑.
同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到消息后将消息放到内存中,cpu对消息进行处理后,显示在输出设备 屏幕
-
通过qq来传输文件
首先硬盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.
发送给你的朋友的电脑.
同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到文件数据后将文件数据放到内存中,cpu对文件数据进行处理后,存储在输出设备 硬盘
2. 操作系统概念
操作系统是一款管理的软件,上面的冯诺依曼体系结构展现的是硬件层面.但一个个硬件如何进行协同工作的呢?这就是操作系统的意义所在.
为什么我们需要操作系统呢?
- 帮助用户管理好软硬件资源
- 为了给用户提供一个高效的运行环境.使用电脑的可以粗略的分为两类人,一类是普通用户,一类是程序员.前者使用的大多为程序员开发的软甲.而程序员才是真正使用操作系统的那一部分人.
因为操作系统不相信用户,对自己进行了封装,我们大多时候无法看见它的细节.为了能维护自身安全,也能给用户提供服务,用户只能通过其提供的接口去访问.也就是 系统调用接口
也就是说:**任何访问操作系统的行为,都只能通过系统调用去完成.**这样保证了系统的安全稳定.
操作系统怎么进行管理?
我们先设想一个场景:
在学校中,校长如何管理每一个学生呢?
首先,先描述数据,将每一个学生的信息按照某种特定的格式记录,之后组织数据,将其放入excel表方便管理.之后想要找到某位学生,只要按照特定属性进行寻找即可.
在操作系统中也是一样的,将每一个需要管理的对象先按照特定的格式进行 描述数据,之后通过数据结构在进行组织即可.
所以**,在操作系统中,管理任何对象都可以将其转换为对某类数据结构的增删查改.**
具体怎么做的我们之后再说.
我们之前写过的通讯录不就是,先将每个人描述,在组织起来的过程嘛.其在某种方面上,与操作系统是相同的
//描述
struct Person{int age;int tel;string address;
};
//组织
struct Contact
{Person p[100];
};
当我们在调用printf()函数的时候,在做什么呢?
每一个调用硬件的函数,其内部封装了系统调用的接口,所以也是通过系统调用的接口去访问驱动程序,硬件,最终显示在屏幕上.