注意:此篇文章为我自己的读书笔记,里面所包含的观点可能有些偏差,而且我本人的知识储备可能并不足以讲明白这个。阅读时一定不要被我带进沟里。

较为简单的理解来说,所谓抽象就是通过现象看本质,或者通过个别找一般。

这就是一个总体的概念,但是放在计算机学科来讲,这个概念要更复杂一点,在计算机学科中,抽象也被称为模型化。

我们从编程的角度来看。首先,假定我们是一个阅读别人代码的学习者,那么我们从别人的代码中分析某一段代码的用途,即为一次抽象,在这里,我们是把一段代码抽象成一个功能。之后,我们假定我们是一个开发者,那么我们把自己的目标转化为代码,就是由抽象到“形象”(大概是这个意思)。

那么我们现在可以大致地简单地理解抽象:抽象就是一个“功能”或者一个“需要”,而不用我们去理解底层到底是怎么运行的。就像是你会使用一台咖啡机而不用去管内部是怎么运行的一样,咖啡机所提供的就是“冲咖啡”功能的抽象。

让我们回到计算机的操作系统上来,我们已经知道一个大概念可以分拆成很多个小概念,就像是一台发动机里面有很多很多小零件一样。那么,不同层次的抽象也就组成了一个很大的系统。

对于一个电脑小白来说,他不需要知道电脑底层是怎么运行的,甚至不需要知道电脑内部有什么部件,他只需要知道鼠标左键双击就能打开文件(只是举个栗子)完全不需要知道内部是怎么运行的。那么他所使用的就是最顶层的抽象:计算机。只不过最顶层的抽象下层的抽象以及更下一级的抽象直至最终的硬件设备,共同完成了这个任务(从这个方面来讲的话,所谓人机交互,就是对机器功能的抽象)。

计算机系统提供的一些抽象

现在我们来理解一下图1-18里面的几个抽象。

1. 文件

为什么说文件是I/O设备的抽象呢?这里我想到了一句话:“Linux系统里,万物皆文件”。这里,我们把文件仅仅限定于I/O设备这些硬件设备的文件,而不是我们平常见到的一个个.txt之类的文件。我们电脑上,屏幕,鼠标,键盘,打印机等等大量的与计算机进行数据交换的设备都可以称为I/O设备。而文件是一系列的字节序列,它向应用程序提供了一个统一的视角,来看待系统中各式各样的I/O设备。也就是说,对于操作系统而言,键盘不再是键盘,而是一个可以“产生字符的文件”。所以说,我们要从操作系统的角度来思考这些抽象。

2. 虚拟内存(虚拟存储器)

在不同的书里,对这个概念有不同的翻译,个人更倾向于虚拟内存。从图中可以看到虚拟内存包含主存硬件和I/O设备。那我们就从这点开始着手分析。

虚拟内存定义:https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/101812?fr=aladdin

https://blog.csdn.net/zjf280441589/article/details/43875947

虚拟内存为每个进程提供了一个大的、一致的、私有的地址空间;

它将内存看成是存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存与磁盘中来回交换数据。

为每个进程提供一致的地址空间,简化了存储管理,保护每个进程的地址空间不被其他进程破坏。

这个一致性和私有性是很有意思的,但是我现在还无法理解这里面的精妙之处,只能放下以后研究了。

虚拟内存是Windows 为作为内存使用的一部分硬盘空间。虚拟内存在硬盘上其实就是为一个硕大无比的文件,文件名是PageFile.Sys。当计算机因为内存耗尽而运行缓慢时,虚拟内存便会承担一部分内存的工作(这也就从一定程度上解释了为什么使用固态硬盘的电脑在内存超高占用时速度往往快于使用机械硬盘的,而且固态硬盘性能越强效果越好)。

这么一看,虚拟内存包含主存硬件和I/O设备就很好理解了。

3. 进程

进程是操作系统对正在运行的程序的一种抽象。一个系统可以运行多个进程,而每个进程好像在独占使用硬件。一段程序的运行最少需要三个基础硬件:CPU,内存,I/O设备。在一个进程运行的时间段内,进程在操作系统看来就是一个“程序”,对于计算机操作者来说,我们看到一个正在运行的程序,但是我们完全不用在意它的内部是怎么运行的。

任务管理器中的进程

因为操作系统已经借由“进程”这个抽象为我们做了这些工作。

4. 虚拟机

简单来讲,如果我们在具有了“进程”这个抽象所包含的所有东西的前提上,又有了操作系统,那么我们就拥有了一台“计算机”。虚拟机提供的是对整台计算机的抽象,包括操作系统,处理器和程序。

让我们来回忆一下我们是怎么创建一个虚拟机的:下载ISO镜像-》使用Vmware或者Virtualbox来安装镜像-》分配硬件给虚拟机-》安装自己需要的程序。我们就像是使用一台真正的电脑那样来使用自己的虚拟机,甚至我们把虚拟机当做真实的电脑,而电脑只是为了启动虚拟机而已。

总是感觉抽象就像是一台巨大机器上的一个小小的交互窗口,所有的功能皆汇集于一个小小的操作界面上。抽象真是一个抽象的概念呢。

你这人说话怎么自带emoji啊。–by 栋梁哥。

我TM这一千多字都写的是个啥啊,只有我自己才能看懂吧!!!!!!!23333
算了,反正也没人看。