首页 > 代码库 > 计算机基础之操作系统
计算机基础之操作系统
一、为何要有操作系统
操作系统(Operating System)是控制计算机硬件和软件资源的控制程序。我们知道,应用程序要通过操作系统才能对硬件进行操作,计算机由主板、硬盘、内存、cpu、声卡、网卡、鼠标、键盘等硬件组成,每个硬件的正常运行都需要控制器和驱动程序。如果用户需要操作硬件的时候,还要在手动编写或者加载这些程序或驱动,那就太浪费时间了。所以为了提高计算机的使用效率,计算机安装了一层系统软件,它能管理刚才提到的那些硬件,为用户程序提供一个更简单,更有效,更人性化的计算机模型,让用户在一个更容易使用的模型上使用。所以,有了操作系统,用户就不用费力气去了解学习复杂繁琐的管理硬件的知识,可以把更多的精力用在需求上。
二、操作系统的位置
操作系统位于计算机硬件和软件之间,本身也是一个软件。操作系统由操作系统的内核和系统调用两部分组成,其中内核部分运行于内核态,用来管理硬件资源;系统调用则运行于用户态,为应用程序提供系统调用接口。
三、操作系统的功能
简单来说,操作系统的功能可以理解为以下两个部分:
1.管理硬件调用接口,为用户提供更简单,更人性化的操作界面,程序员不用承受操作硬件的繁琐过程,因而有更多的精力去实现自己的期望。比如我们常见资源管理器是NTFS文件系统,这就是操作系统提供给我们的。我们很多人从开始使用电脑到现在,一直都是以文件为操作单位的,如果没有文件系统,而是采用块为基本单位,那种生活是无法想象的。操作系统为程序员提供了一种简单的模型,而我们通过程序员编写出来的应用程序,更方便的使用计算机。
2.将应用程序对硬件资源的竞态请求变的有序化。怎么理解呢,我们电脑上有很多应用程序,但是硬件系统只有一套,所以其实是所有的应用程序共享一套硬件,但是当应用程序对硬件发出操作请求时,就需要操作系统来协调这些请求,使得计算机能完成应用程序的请求且不会产生混乱无序。操作系统的这个功能又叫多路复用。
四、操作系统的发展
1.第一代计算机(1940~1955):真空管和穿孔卡片
lowa州立大学的john Atanasoff教授和他的学生Clifford Berry建造了据认为是第一台可工作的数字计算机。该机器使用300个真空管。大约在同时,Konrad Zuse在柏林用继电器构建了Z3计算机,英格兰布莱切利园的一个小组在1944年构建了Colossus,Howard Aiken在哈佛大学建造了Mark 1,宾夕法尼亚大学的William Mauchley和他的学生J.Presper Eckert建造了ENIAC。这些机器有的是二进制的,有的使用真空管,有的是可编程的,但都非常原始,设置需要花费数秒钟时间才能完成最简单的运算。
这些所谓的计算机没有操作系统的概念,所有的程序都是有机械语言编写的。
在这个时期计算机只能供一个程序员同时使用,所以当一个程序员拿着他的插件板到机房时,其他人都得排队耐心等待,他一个人独享整个计算机资源。后来出现了穿孔卡片,可以将程序写在卡片上而不用插件板。
优点是程序员在使用计算机资源时,可以即时调试自己的程序,出现bug的时候可以即时处理。
缺点是这种方式对计算机资源是极大的浪费,且此阶段在计算机中同一时刻只有一个程序在内存中,被CPU调用执行。
2.第二代计算机(1955~1965):晶体管和批处理系统
由于当时计算机造价昂贵,第一代计算机的工作方式过于浪费,所以为了节省成本,采用了批量处理的方式。
出现了操作系统的概念,此时的操作系统是人和计算机结合的系统,设计人员,生产人员,操作人员,程序人员和维护人员有了明确的分工,计算机被锁在专用的空调房间里,有专业的操作人员运行。同时也有了程序设计语言:FORTRAN语言或汇编语言。
工作过程:
把好几个人的输入攒到一起,一起写入磁带中,然后操作人员将磁带送入机房里并装到磁带机上,操作员装入一个特殊的程序(操作系统的前身),这个程序从输入的磁带上读取第一个作业并运行,将输出写入到另一个磁带上但不打印,当这批作业全部结束后,操作人员取下输入和输出磁带,将下一批作业再次装到磁带机上,并把输出磁带拿到另一台机器上脱机打印。
虽然第二代计算机将一批需求一起处理,但是仍然是顺序计算。虽然节省了时间,但批处理的过程中无法及时调试程序,极大地影响了程序的开发效率。
3.第三代计算机(1965~1980):集成电路芯片和多道程序设计
第二代计算机存在几个问题需要改进:
第一个问题:第二代计算机存在两种完全不兼容的计算机,一种是面向字的大型科学计算机,另一种是面向字符的商用计算机。IBM公司试图通过引入system360系列来同时满足科学计算和商业计算,这是第一个采用了(小规模)芯片(集成电路)的主流机型,与之前采用晶体管的计算机相比,性价比有了很大提升。同时这也是现代服务器的前身。
第二个问题,第二代计算机还需要有专门的操作员来操作,为了解决这一问题,出现了一种SPOOLING技术,该技术同时用于输入输出,从而不在需要操作员在中间来回搬运磁带。
第三个问题:第二代计算机仍然采用串行执行,内存中同时只能放一个数据,第三代计算机中产生了一种关键技术:多道技术,下面将在第五章中详细介绍。
第四个问题:第三代计算机仍然采用批处理,所以程序员是很怀念独享计算机资源的时代,为了解决这一问题,出现了分时操作系统:多个联机终端+多道技术。由于客户提交的一般都是剪短的指令,很少有耗时长的,索引计算机能够为大部分用户提供快速的交互式服务,所有的用户都以为自己独享了计算机资源。
4.第四代计算机(1980至今):个人计算机
现在出现了大规模集成电路计算机,采用集成度更高的半导体,运算速度大大提升,同时个人计算机发展迅速,现在工艺可以制造出体积更小,性能更强悍的计算机。另外,互联网技术,数据库管理技术发展迅速,并得到了广泛应用。
五、多道技术
多道技术中的多道指的是多个程序,上文中提到当多个程序共享同一个硬件资源时存在有序调度问题,多道复用的出现就是为了解决这一问题。多道复用分为时间上的复用和空间上的复用。
空间上的复用:将内存分为几个部分,每个部分放入一个程序,使他们在系统中并发执行,共享系统中的资源,当一道程序暂停时,CPU立即转去执行另一道程序。
这里存在的最大问题是:内存必须分割,并且是硬件层面的分割。如果不分割的话,一个程序可以访问另一个程序的内存,这将会造成安全性和稳定性上的隐患。
时间上的复用:当一个程序在等待I/O时,另一个程序可以使用CPU,如果内存大到可以存放足够多的程序,那么CPU的利用率可以接近100%,这时就需要操作系统来统筹程序使用cpu的顺序及使用时间。
其实操作系统的功能就是多路复用的体现:处理来自多个(多路)程序发起的多个共享资源(复用资源)的请求。
计算机基础之操作系统