操作系统篇 ———— 开篇[一]
前言
简单整理一下操作系统。
正文
为什么我们学习操作系统呢?
个人看来主要学习一下其设计思想。
操作系统简单的历史:
- 早期提供库
早期主要是一些库。
基本上,它只是一组常用函数库。
列如,不是让系统中的每一个程序员都编写低级i/o处理代码,而是让os提供这样的api。
这个时候,计算模式为批处理阶段,首先由操作员整理好要处理的程序,然后一批一批的运行。
计算机也没有交互方式,只有输入程序,然后输出。
- 超越库阶段
什么是超越库阶段呢?
前期出现了什么问题呢?
就是每一个程序都可以控制整个计算机,这样可能就一个程序错误干死整个计算机,还有一个更为严重的问题,那就是安全,一个程序可以控制整个计算机。
那么这个时候操作系统的作用范围就要增加。
那就是只有操作系统可以进行io请求之类的。
比如说,分为了内核状态和用户状态。
列如:用户状态运行的应用程序通常不能发起对i/o磁盘的请求,不能访问任何物理内存页或在网络上发送数据包。
在发起系统调用时[通常是一个称为陷阱(trap)的特殊硬件指令],硬件将控制转到预先指定的陷阱处理程序(trap handler)[预先操作系统设置的地方],并同时将特权级别提升到内核模式。
在内核模式下,操作系统可以完全访问系统的硬件,因此可以执行比如i/o或者为程序提供更多内存的请求。
当操作系统完成请求的服务后,它通过特殊的陷阱返回(return-from-trap) 指令将控制权交还给用户,该指令将控制权还给用户,并返回到用户模式,同时将控制权交还给应用程序,回到执行的地方。
- 小型机时代
这个时候,操作系统得到了大力发展。
这里的小型机并不是我们的个人计算机,纯粹因为硬件发展,然后变小了,成本也低了。
这个时候基本上都是多道处理程序,不再是,一次执行一个程序,而是多个程序同时运行。
这个时候操作系统要做的肯定是提高计算机利用效率,因为io是很慢的,如果一个程序执行io的时候,另外的程序只能等待,那太痛苦了。
所以操作系统发展多个几个方向,比如说内存保护(一个程序并不能访问另外一个程序的内存),又比如说前面提到的程序并发。
这个时候的主要发展是unix出现了,unix结合了很多操作系统的优点。
- 摩登时代
这个时候个人计算机出现了,一开始一些个人计算机的操作系统,没有内存保护功能,可能是运行成本的原因。
然后就出现了恶意程序的问题。后来操跟人计算机的操作系统就又开始加入小型计算机的操作系统的功能了。
操作系统主要是3个方面的发展:
-
虚拟化(让每个程序好像独占了整个计算机)
-
并发 (如何同时运行多个程序)
-
持久化 (让计算结果能够保存)
结
该篇为开篇,后面主要针对3个方面的发展,看下操作系统做了什么。