标签:通过 看到了 缓存 英文 钉钉 文件系统 缓冲 计算机系统 mamicode
虚拟化就是无中生有,就是暗度陈仓(狗头保命)。仔细观察整个计算机系统的设计,到处都体现着虚拟化的技术。当然虚拟化就是操作系统设计的要求之一。我们很好理解 CPU 的虚拟化技术,也就是通过进程调度实现多道程序的功能。在“无知的我”看来计算机不止一块CPU呀,因为我可以在打 LOL 的时候和队友 YY语音聊天;也可以在钉钉上网课的同时在 B站看电影!好像我开了几个进程就有几块CPU一样但是实际上我的电脑还真就仅有一块 CPU。是不是感觉被自己的电脑欺骗了~~~当然,除了 CPU 的进程调度外还有一大堆的虚拟化技术,例如虚拟内存技术在逻辑上扩充了内存的空间,虚拟文件系统技术等等。
说了这么些,我就是想表明别看 SPOOLing 看上去那么高大上(我都看不懂这个英文啥个意思),无非也就是个空手套白狼的家伙,无非就是虚拟化技术的一种罢了。
SPOOLing 技术是用于将 I\O 设备进行虚拟化的技术,这个技术可不像 CPU 的虚拟化能欺骗我们人类,它是专门用于欺骗进程的。就拿打印机举栗吧,我就买了一台打印机,但此时我打开了 word 和 pdf,想要打印 word 和 pdf 中的内容;此时计算机中有2个进程,word 进程和 pdf 进程,这两个进程都认为自己拥有一个打印机,那么是否此时我作为计算机的主人就拥有2台打印机了呢?当然不是啊,我又不是睁眼瞎,我就看到了一台打印机啊~~~这就是通过虚拟化技术欺骗了2个无知的进程。
道理我都懂,那么怎么实现欺骗进程的目的呢(也就是怎么实现SPOOLing技术呢)?
首先某一个进程(例如 word)调用了统一的接口,然后进入内核。内核例程负责将 word 想要打印的内容做成一个打印申请表,将这个申请表放入打印输出队列中(这个队列在输出井中)。然后由输出进程从打印队列中取打印申请表,根据表格内容将用户数据从磁盘中取出放入内存输出缓冲区,然后再输出到 I/O 设备中。输出进程会不断的查看打印输出队列,直到队列为空,则输出进程被阻塞。
这篇随笔是我自己阅读了网上关于SPOOLing技术的相关文章后,消化理解的一些浅显的概念。如果有错误的地方请不吝指出,也欢迎大家一起探讨!
标签:通过 看到了 缓存 英文 钉钉 文件系统 缓冲 计算机系统 mamicode
原文地址:https://www.cnblogs.com/Codroc/p/12841295.html