概述
操作系统是整个计算机系统软硬件资源的管理者。根本上OS抽象和虚拟化了硬件资源,并为上层软件和用户提供接口的一个平台。
软硬件在逻辑上是等效的。操作系统和高级编程语言的出现,只是简化了对硬件的管理和利用。本质没有改变。
OS的必要性
操作系统基于两个目的产生:
- 安全:防止硬件被失控的应用程序滥用
- 简易:向应用程序提供简单一致的机制来控制复杂的低级硬件设备
所以我们再理解马克思说的人的本质属性是社会关系这个意思。你在与别人交往的过程,就是不停的调用别的进程的服务。或者是社会的服务。
我们可以清晰的感受到,一切调用对象的封装,都是基于安全性和便捷性考虑的。 操作系统作为一个封装自然也不例外。
但同时操作系统在管理和调用硬件资源中,会加快整个多任务的处理。在上面的故事中,我们假设一个场景:如果你去了餐厅,但是还需要等你的女朋友(菜要等你女朋友来点)。但等待的过程中,出来了另一批人。那么厨师会先给别人炒菜,而不会和你一起等待你的女朋友。
南向虚拟化管理
操作系统为实现安全和简易采用的思路:抽象虚拟化。因此OS又被称为虚拟机。
- 在任务管理中,通过异步的方式虚拟化了CPU。实现了从多任务批处理到分时的跨越。
- 进程控制和调度
- 进程同步
- 进程通信
- 在内存管理中,采用虚拟内存的方式,每个进程都拥有个自的内存空间,实现安全。
- 内存分配和回收
- 内存保护
- 地址映射机制和虚拟内存
- 在设备管理中,采用虚拟设备的方式。具体在后文讲到,便捷。
- 缓冲管理:缓冲区机制有效缓解CPU和IO运行速度差
- 设备分配
- 设备处理程序:实现CPU和设备管理器之间的通信,由CPU向设备控制器发出IO指令,要求它完成IO操作;由CPU接收来自控制器发出的中断请求,并迅速响应和处理。
- 在文件管理中,文件本身就是对IO设备的虚拟化,便捷。
- 文件存储空间管理
- 目录管理
- 文件的读写管理和保护
北向接口
- 命令接口:用户接口
- 交互式:GUI图形接口、CLI命令接口
- 脱机:批处理命令接口
*.bat
- 程序接口: 系统调用。操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。操作系统内核对共享资源进行统一管理,并向上提供系统调用,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求,内核进行协调处理
虚拟机
Virtual OS & VMM/Hypervisor
直接用在硬件上,直接分配和控制物理资源,在安装
guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于外核的分配方式,分配未经抽象的物理硬件,性能好,虚拟机数量更多,不需要竞争资源,VMM运行在最高特权级,可以之行最高特权的指令。可迁移性差运行在宿主
OS上,对物理资源依赖Host OS,GuestOS拥有自己的虚拟磁盘,该盘实际上是HostOS文件系统中的一个大文件,GuestOS分配到的内存是虚拟内存,性能差,HostOS本身需要使用物理资源,HostOS上运行的其他进程也需要物理资源,部分运行在内核态,部分运行在核心态,GuestOS发出的系统调用回被VMM截获,转化为VMM对HostOS的系统调用。可迁移性好