操作系统简介
一、为什么要有操作系统:
我们现代用的计算机是由多个CPU、内存、硬盘、主板、显卡、打印机等还有多种的输入输出设备组成的,现代的程序原来编写应用程序基本不用考虑各种硬件的底层的运行机制是怎么实现各自功能的,也就是基本不用硬件的各个驱动的问题,因为硬件厂商在生产硬件的同时,已经开发出了适应各种操作系统的硬件驱动。
但是在计算机初期的发展时代,那时候的计算机并没有现在的计算机那么高级的硬件,程序员在计算机中开发能运行自己程序的同时,必须要首先解决一个很大的问题,那就是适应自己程序的硬件驱动,这大大的增加了程序员的困扰,并且程序员不可能把硬件的每一个细节都了解清楚,从而,随着计算机的发展,人们不得不开发一套系统,硬件的操作交由那个系统来完成,这样很大程度上解决了大部分程序员自己开发硬件驱动的困扰,使得程序员的开发效率大大的增加,这也就是操作系统的由来。
二、什么是操作系统:
2、操作系统的功能:
操作系统的功能可以分为两大部分:
(1)为程序员提供系统调用的接口,让应用程序员不再考虑硬件那些繁琐的操作过程,比如:应用程序员开发一个往硬盘上面写文件,就不用考虑硬盘内部磁头处于什么位置什么状态等等,这样大大解放了应用程序员的开发效率;
(2)有效管理系统资源,提高系统资源使用效率,如何有效地管理、合理地分配系统资源,提高系统资源的使用效率是操作系统必须发挥的主要作用。资源利用率、系统吞吐量是两个重要的指标。计算机系统要同时供多个程序共同使用。操作解决资源共享问题!!如何分配、管理有限的资源是非常关键的问题!如:划分CPU时间,内存空间的开辟,调用打印机等。
3、操作系统的发展:
(1)第一代计算机(1940~1955):真空管和穿孔卡片
第一代之前人类是想用机械取代人力,这一代计算机只能进行简单的运算,所有的程序设计都是有纯粹的机器语言编写的,需要通过成千上万根电缆街道插件板上连成电路来控制机器的基本功能,并没有操作系统的概念。后来出现了穿孔卡片,可以将程序写在卡片上,然后读入机不用插件板。
其优缺点显而易见,有点事程序员能够在使用的时间段内独享整个资源,能够即时的调试自己的程序,如果有bug能够即时处理;缺点便是对供应商来说就会造成一种时间上的浪费,如果租用了两个小时,但是只用了一个小时就完成了任务,剩余的时间就是大大的浪费,从程序角度来说,一次只能执行一个程序任务,如果想执行另一个任务,那必须等到前一个任务执行完成后才能够执行,也就是说多个任务执行过程是串行进行的。
(2)第二代计算机(1955~1965):晶体管和批处理系统
因为当时的计算机是非常昂贵的,人们为了减少实际的浪费,发明了第二代计算机的系统,那就是批处理系统。
此时已经有了操作系统的概念,并且已经对设计人员、生产人员、操作人员、程序人员和维护人员直接有了明确的分工,这就是大型机。这时的计算机必须有人力的参与才能完成如下图:
第一代计算机和人之间的交互过程是这样的:输入-》计算-》输出(如果是10个人的话,就操作10次这个过程)
第二代的交互过程改进为:
第一步:把一堆人的输入攒成一大波输入;
第二步:然后顺序计算(这是有问题的,但是第二代计算也没有解决);
第三步:把一堆人的输出攒成一大波输出。
它的优缺点是:优点是批量处理,节省了大量时间;缺点是在整个的操作流程中,需要人的参与控制,需要把磁带搬来搬去,计算过程仍然是串行进行的,再有就是程序员没有了独享计算机的时间,必须等待批量处理的运算结果,大大降低了程序员的开发和调试程序的效率。
(3)第三代计算机(1965~1980):集成电路芯片和多道程序设计
为了解决第二代计算机的问题出现了一种新的技术叫同时的外部设备联机操作(SPOOLING),是将卡片拿到机房后能够很快的将作业从卡片信息读入磁带,于是任何时刻当一个作业结束时,操作系统就将一个作业从磁带中读出,装进空出来的内存区域运行,这时就再也不用IBM1401机了,也不必将磁带从计算机之间搬来搬去了。
第三代计算机解决了第二代计算机的又一个问题就是采用了多道技术。
多道技术中的多道就是指多个程序,为了解决多个程序共享一个资源(CPU等)的有序调度问题,采用了多路复用的解决方式,多路复用分为时间上的复用和空间上的复用。
空间上的复用:将内存分成几个部分,每个部分放一个程序,这样,在同一个时间内存中就又了多个程序。注:因为程序直接的内存分割是在硬件层面实现的,由操作系统控制,如果不分割的话,一个程序将可以访问另一个程序的内存空间,所以空间上的复用有两大弊端就是:安全性的丧失,比如你的QQ程序可以访问操作系统的内存,就意味着QQ可以拿到操作系统的所有权限;其次就是稳定性的丧失,比如某个程序崩溃时,系统将会把别人的的内存一同收回了,有可能将系统自身占用的内存收回,这时操作系统也会崩溃。
时间上的分复用:当一个呈持续等待I/O时,另一个程序可以使用CPU,如果内存中看看一同时存放足够多的作业,那么CPU的利用率能够达到100%,类似于我们小学数学所学的统筹方法。
解决了第二代计算机的第三个问题,那就是程序员不能独享计算机的问题。这时采用的分时操作系统,比如20个客户端同时加载到内存,有17个在思考,3个在运行,此时CPU就采用多道的方式处理内存中存放的这3个正在运行的程序,由于客户提交的一般都是简短的指令而且很少有耗时长的,索引计算机能够为许多用户提供快速的交互式服务,所以用户都以为自己是独享了计算机的资源。
CTTS:麻省理工(MIT)在一台改装过的7094机上开发成功的,CTSS兼容分时系统,第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,分时系统才开始流行。
后来一位参加过MULTICS研制的贝尔实验室计算机科学家Ken Thompson开发了一个简易的,单用户版本的MULTICS,这就是后来的UNIX系统。基于它衍生了很多其他的Unix版本,为了使程序能在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植的操作系统接口Portable Operating System Interface)
后来,在1987年,出现了一个UNIX的小型克隆,即minix,用于教学使用。芬兰学生Linus Torvalds基于它编写了Linux
(4)第四代计算机(1980~至今):个人计算机
OS/2采用图形界面,它本身是一个32位系统,不仅可以处理32位OS/2系统的应用软件,也可以运行16位DOS和Windows软件。它将多任务管理、图形窗口管理、通信管理和数据库管理融为一体。
Windows是Microsoft公司在1985年11月发布的第一代窗口式多任务系统,它使PC机开始进入了所谓的图形用户界面时代。Windows 1.x版是一个具有多窗口及多任务功能的版本,但由于当时的硬件平台为PC/XT,速度很慢,所以Windows 1.x版本并未十分流行。1987年底,Microsoft公司又推出了MS-Windows 2.x版,它具有窗口重叠功能,窗口大小也可以调整,并可把扩展内存和扩充内存作为磁盘高速缓存,从而提高了整台计算机的性能,此外它还提供了众多的应用程序。
1990年,Microsoft公司推出了Windows 3.0,它的功能进一步加强,具有强大的内存管理,且提供了数量相当多的Windows应用软件,因此成为386、486微机新的操作系统标准。随后,Windows发表3.1版,而且推出了相应的中文版。3.1版较之3.0版增加了一些新的功能,受到了用户欢迎,是当时最流行的Windows版本。1995年,Microsoft公司推出了Windows 95。在此之前的Windows都是由DOS引导的,也就是说它们还不是一个完全独立的系统,而Windows 95是一个完全独立的系统,并在很多方面做了进一步的改进,还集成了网络功能和即插即用功能,是一个全新的32位操作系统。1998年,Microsoft公司推出了Windows 95的改进版Windows 98,Windows 98的一个最大特点就是把微软的Internet浏览器技术整合到了Windows 95里面,使得访问Internet资源就像访问本地硬盘一样方便,从而更好地满足了人们越来越多的访问Internet资源的需要。Windows 98已经成为目前实际使用的主流操作系统。
从微软1985年推出Windows 1.0以来,Windows系统从最初运行在DOS下的Windows 3.x,到现在风靡全球的Windows 9x/Me/2000/NT/XP,几乎成为了操作系统的代名词。