【ostep】01 操作系统 intro

操作系统

操作系统是什么

操作系统就是运行在硬件之上的软件,夹在硬件和上层应用程序之间。为硬件统筹和管理资源,同时为应用程序提供抽象。

要做到这一点,操作系统主要利用一种通用的技术,我们称之为虚拟化(virtualization)。 也就是说,操作系统将物理(physical)资源(如处理器、内存或磁盘)转换为更通用、更 强大且更易于使用的虚拟形式。因此,我们有时将操作系统称为虚拟机(virtual machine)。

很久之前,操作系统有另一个名字 —— “主控程序”,如果没有这个"主控程序",软件(机器指令)也可以运行,但"主控程序"让软件运行地更高效和方便。

最早的时候,操作系统仅仅提供一些 API,或者说一组函数。例如程序员不需要手动编写对硬盘的 I/O 程序,而是直接调用操作系统提供的特定函数即可。

后来,操作系统超越了简单的库所能提供的功能 —— 他将硬件保护了起来。系统调用(system call)的概念诞生了,相应的系统调用不仅仅是做了对硬盘的 I/O 程序,同时还控制了应用程序不能随意进行更加原子的操作(不能完全访问系统硬件),因为这种行为可能会危害系统。

再后来,UNIX 系统出现了,操作系统开始同时运行多个程序,这时候引入了并发的概念,操作系统开始在两个进程之间保护内存。

最后,就是 Windows、mac OS 和 Linux 的天下了。

虚拟化、并发和持久性

虚拟化,或者叫抽象,例如进程就是一个最基本的抽象,机器指令序列本身没有生命周期,我可以选择在任何时候,任何位置开始执行,而操作系统要做的就是决定在何时何处开始执行。于是就抽象出了进程,通过不断地在不同的内存空间切换,为上层提供了进程的抽象。

并发是一个问题,这个问题很普遍,以至于在更高层的抽象中、现代的开发过程中,这个问题还在被大量地讨论。

他来自于系统的调度逻辑和原子操作,由于我们无法预知操作系统在何时切换当前执行的应用程序,必须解决多个线程间(在操作系统中讨论的是进程)的对公共资源访问的冲突问题(在高层抽象中,我们针对的是线程并发问题,而在操作系统的实现中,我们讨论的是进程并发问题)。

持久性很简单,可以简略理解为存储,其体现就是操作系统的文件系统,例如将一个文件存储在硬盘上,涉及到对硬盘的 I/O 操作。不过他远没有说的那么简单。

猜你喜欢

转载自blog.csdn.net/qq_16181837/article/details/112295513