说起计算机,先看如下数学模型:
针对计算机来说,中间一块就是CPU中的运算器,那么我们的计算机模型应该是这样:
所以才说中央处理器CPU、存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
然后我们开始演进~~
First :
一开始只需要CPU和寄存器就可以搞基,各种high;
可是后来发现寄存器完全装不下东西,所以我们搞个内存,可以放各种参数之类的。
second:
由于寄存器芯片过贵,在考虑成本下我们的内存都采用的比较慢速的设备。那内存完全跑不赢CPU啊,CPU总是等啊等,花儿都谢了。
所以我们在CPU和内存之间,采用运算速度较强的内存,即高速缓存。现今计算机架构来说,基本使用的是三级缓存。
Third:
内存太小了啊,完全装不下这个大千世界了啊。并且严重的是内存一般为电容性器件,关机则消失,比如DRAM。
所以我们的外存登场,当然现在我们经常看到的就是磁盘了。
Fouth:
本来相对于CPU,内存就够慢了,天啊,这磁盘什么的简直慢到睡着了。
DMA出马,代替CPU完成读取写入等待等工作,和磁盘交互。
Sixth:
设备好多,没法最开始那样一对一了,所以就来个总线对接下吧。
这么多设备和CPU打交道,信号过来我都不知道谁的,所以加个ID标识吧。
Seventh:
磁盘慢?其实还有很多更慢的I/O等设备。CPU需要和这么多设备打交道,那如何是好,不可能一直等,所以想到了切换,通过中断技术实现。
Eighth:
内存和磁盘直接对接,也出现了速度不匹配的问题,所以缓存再次出现,再次以空间换取时间。
Nigth:
内存虽然够大了,但是很多时候还是无法放下进程的临时数据啊,对,我们总是觉得电脑或者手机怎么越用越卡,就这出了问题。
但是磁盘很大啊,所以我们可以考虑先把一半部分数据放入磁盘,window叫虚拟缓存,linux叫交换空间。
可是磁盘的读取速度很慢啊,CPU直接从内存读取多快,哎,这可难办了啊
天啊!就这么简单的介绍,管理起来就够麻烦了。我玩计算器,莫非还要我懂这些才能玩?显然不是,那么就得让人管理啊,因此操作系统出现了。
操作系统作为大管家,管理着时间和空间,带领硬件大小朋友们,和你一起走向了人生巅峰!
模式切换
操作系统本质也是一段程序,同样需要在CPU和内存上运行才行。
所以我们把操作系统在CPU上运行时候,叫内核模式(内核空间);将CPU运行其他程序叫用户模式(用户空间)。
这里我们将遇到继中断后的第二个切换,我们将CPU轮换的工作在内核模式和用户模式,叫模式切换。
并且规定只有操作系统才能使用特权命令(四级命令中的0级),使用硬件设备。
如果其他程序需要使用硬件,必须向操作系统申请,即系统调用。
内存也相应的做了照顾,将低位区除了DMA区,专门独享给内存。
备注:CPU资源为时间;内存资源为空间;CPU指令集初始为0~3等级,后面还有-1级。
进程切换
针对每个程序任务,操作系统给他们统一取了个名叫:进程。
通过windows任务管理器你会看到若干进程在运行,实际上同一时间CPU上只有一个进程在运行,而其他进程都在等待。
运行进程在超过一段时间或者自己退出后,轮换到等待的进程,叫进程切换,这是第三种切换。
就是操作系统会不断切换应用程序来使用CPU。
目的有两个:减少等待时间,比如磁盘读数据这种;
让人感觉所有任务是同一时间运行的,比如你在打字和屏幕上显示字,本来属于两个进程来完成,但操作系统不会等你把所有字打完了再显示出来。
线程
线程的特点是继承但不超过父进程的硬件权限,实际就是被阉割了一部分系统调用的权限。但由于共享资源,大大减少了进程(线程)切换的代价,从而提升了速率。
如此尔尔~~~下文分解!