一、前言
上一篇博文操作系统与操作系统内核整理并分析了操作系统与操作系统内核区别,通过对操作系统内核的解释:内核是操作系统的一组子程序,主要用于与计算机硬件组件打交道。同时也通过引用另一篇博文说明了操作系统的发展历史,但这没有具体说明操作系统与内核的具体发展过程,这篇文章做进一步阐述。
二、操作系统的发展
总的说来,操作系统的发展经历了串行处理系统、简单批处理系统、多道程序设计批处理系统、分时系统。
1、串行处理系统
串行处理系统在计算机时期扮演者重要的作用,在串行处理系统时期,程序员都是直接与计算机硬件打交道的,也就是说这个时期还没有操作系统这个概念,在那个时候,没有程序员都是一个操作系统。串行处理系统中给每个程序(作业)分配一个(预计的)固定作业时间,在这个时间内,这个程序可以使用这台计算机,完成从代码输入、运行和结构打印的过程,但由于I/O操作的时间比较慢,这就影响了串行处理系统的效率,也就是在整个程序的运行过程中,真正的执行代码的时间是比较短的。
特点:没有提到操作系统的概念、同一时间处理一个程序(作业)、有人工完成专业调度、程序准备时间(即I/O时间)长。
2、简单批处理系统
为了解决串行处理系统的低效率问题,发明了简单的批处理操作系统,所谓“批处理”是指当作业数量达到一定程度之后再集中处理,把所有作业放进一个作业队列,依次顺序执行,在批处理系统中有一个程序专门用来调度作业并执行,也就是说作业队列中一个作业执行完成之后,就由该程序加载下一个作业并执行,这就是操作系统的基本雏形。但是尽管批处理系统简化了在串行处理系统中的作业调度问题,但是它其实并没有提高处理的效率,因为处理的执行速度相比I/O是快很多的,所以就算是批处理,处理器在大多数情况下还是处于空闲状态下的。
特点:具有简单操作系统模块(完成作业调度)、执行效率任然低下
3、多道程序设计批处理系统
多道程序设计结构的出现,在本质上解决了简单批处理程序效率低下的瓶颈,同时多道程序设计也是现代操作系统设计的核心思想。所谓多道程序设计是允许多个程序(部分或整个程序)同时驻留在内存中并运行,不管是串行处理系统还是简单批处理系统,他们的内存中一般只有一个程序,就算是简单批处理系统中可以允许内存中多个程序,它在一个程序的执行期间是不允许另外的程序插队允许的,必须等到当前允许的程序运行完成,才有可能运行下一个程序,即使当前程序一直等待I/O输入。而多道程序设计的批处理系统核心是允许多个程序同时在内存中同步运行,所谓“同步运行”指的是“协同”运行,举个简单的例子,比如现在内存中同时有两个程序A和B驻留,当前运行的程序是A,而现在A在等待I/O操作,也就是说现在处理器是空闲的,那么程序A你就等待好了,我(处理器)可以去执行程序B,等你(A)好了再来通知我,然后我再去执行你剩下的代码。如果把程序A和程序B看做是两个进程,那这个过程就是一个简单的进程切换的过程。
特点:多个程序在内存中同时驻留、多个程序同步协同执行、提高处理器运行效率
4、分时系统
通过使用多道程序设计,可以使批处理变得更加有效,但是这种有效的代价是用户(即我们这些使用计算机的人)还是需要把整个程序交付给操作系统,由操作系统完成整个程序,中途我们不能进行过多的干预(除了需要我们进行I/O操作等),所以为了提供一种用户可以直接与计算机交互的工作模式,人们有发明了分时操作系统。分时系统的核心是将处理器操作时间进行固定时间分片,给每个用户分配一个同样大小的时间片,某一个用户使用完自己的时间片,就得等待处理器分配给他的下一个时间片。如有n个用户同时向一台计算机请求服务,则这台计算机就将其处理器时间分为n等分,所以每个用户就得到了1/n的操作时间,所以这n个用户轮流占有一次处理器就成为一个周期,注意这里说的是轮流占有,也就是说尽管操作系统进行了时间分片处理,但是在一个处理周期内,任一时刻,处理器还是只能为某一个用户服务,只是在这整个处理周期内完成所有用户请求之间的切换,这种切换是很快的,用户根本感觉不到,所以用户就感觉自己是独占的在使用这台计算机,其实不是。
特点:提供用户与计算机的交互、同时保证处理器的执行效率
三、操作系统基本理论
1、进程
对进程进行概念性的总结为:
(1)进程是正在执行的程序;
(2)正在计算机上执行的程序实体;
(3)能分配处理器并由处理器执行的实体;
(4)进程是一个具有:一组指令序列的执行、一个当前状态和相关的系统资源集等特征的活动单元。
上述概念可以说明进程由3部分组成:一段可执行的程序、程序所需要的相关数据、程序的执行上下文。在这三部分中,第三点程序的执行上下文又称作进程状态,是操作系统用来管理和控制进程所需的内部数据,而这种内部数据是和进程本身分开的,因为操作系统不允许进程直接访问其内部数据,也就是说上述三部分中第一、第二部分与第三部分是分开的。同时,又操作系统管理的进程的执行上下文是一个固定的数据结构,里面包括了进程的一些必须属性,具体这些属性主要包括:进程ID、进程优先级、进程状态(是否正在运行)、程序计数器、内存指针、上下文数据、I/O状态信息、记账信息等。
2、内存管理
操作系统的主要作用就是进程管理和资源分配,而对于资源来说,最常用的有处理器、内存、I/O设备。而其中内存资源是操作系统要管理的另外一个重要资源。内存管理需要达到两个目标:一是地址保护,即一个程序(进程)不能访问另一个程序(进程)的地址空间(这是进程管理的工作,不属于内存资源分配的工作)。二是地址独立,即程序发出的地址应该与物理主存地址无关(虚拟地址映射)。关于内存管理的相关知识可以转至这篇博文,个人感觉写的非常好的操作系统核心原理-5.内存管理(上):基本内存管理
3、信息保护和安全
信息保护与安全是指对计算机系统的控制访问和其中保存的信息,大多是与操作系统相关的安全和保护问题可以分为4类:可用性、保密性、数据完整性、认证。
4、调度和资源管理
在内存管理中已经说明了,操作系统的主要作用就是进程管理和资源分配,也就是进程的调度的计算机各种资源的管理,而关于资源分配和调度策略都必须考虑三个因素:
(1)公平性:即对于多个进程进行竞争的同一资源的分配要提供几乎相等和公平的访问机会,当然这可以根据一些特权机制如进程优先级来打破这种公平性
(2)有差别的响应性:即在保证公平性的同时也需要进行动态的决策与调整,保证所有进程对资源申请的响应实时性
(3)有效性:即需要报账操作系统能尽可能多的响应经常请求。
5、系统结构
一个功能完善的操作系统的大小和它所能处理的任务的困难性,导致了4个让人遗憾但又普遍存在的问题。第一、正式发布的操作系统表现出习惯性的落后;第二、需要不断进行补丁修复;第三、总是无法满足预期的要求;第四、不可能开发出真正完整和安全的操作系统。综上所述,所以要尽可能追求操作系统结构上的完整性。