计算机基础之操作系统
一 为什么要有操作系统
在介绍计算机硬件时,已说明了我们为什么要学习计算机基础知识,也提到了操作系统。现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成,它是一个复杂的系统,我们无法把所有的硬件操作细节都了解到(如果需要掌握所有的硬件操作,需要花费大量的时间,严重影响开发效率),同时,管理这些硬件并且加以优化使用也是非常繁琐的工作,所以,产生了操作系统,这些繁琐的工作就是操作系统来干的。有操作系统,我们就不在需要关系这些繁琐的工作,只需要考虑应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件,从而大大提高了开发效率。
二 什么是操作系统
上面也提到了,操作系统让我们的开发变得更简单,更高效,那它具体是什么呢?
精简来说,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统在计算机系统中所处的位置如下图:
注意:操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。
操作系统的两大作用:
- 为应用程序提供如何使用硬件资源的抽象
- 把多个程序对硬件的竞争变得有序化(管理应用程序)

三 操作系统与普通软件的区别
1. 应用程序我们可以随意安装卸载;操作系统由硬件保护,不能被用户修改。
2. 操作系统是一个大型、复杂、长寿的软件:
- 大型:linux或windows的源代码有五百万行数量级。按照每页50行共1000行的书来算,五百万行要有100卷,要用一整个书架子来摆置,这还仅仅是内核部分。用户程序,如GUI,库以及基本应用软件(如windows Explorer等),很容易就能达到这个数量的10倍或者20倍之多。
- 长寿:操作系统很难编写,如此大的代码量,一旦完成,操作系统所有者便不会轻易扔掉,再写一个。而是在原有的基础上进行改进。(基本上可以把windows95/98/Me看出一个操作系统,而windows NT/2000/XP/Vista则是两位一个操作系统,对于用户来说它们十分相似。还有UNIX以及它的变体和克隆版本也演化了多年,如System V版,Solaris以及FreeBSD等都是Unix的原始版,不过尽管linux非常依照UNIX模式而仿制,并且与UNIX高度兼容,但是linux具有全新的代码基础)
四 操作系统发展史
第一代计算机(1940~1955):真空管和穿孔卡片
特点:没有操作系统的概念,所有的程序设计都是直接操控硬件
优点:程序员独享,可以即时地调试自己的程序(有bug可以立刻处理)
缺点:浪费计算机资源,一个时间段内只有一个人用。同时,同一时刻只有一个程序在内存中,被CPU调用执行,多个程序的执行是串行的
第二代就算机(1955~1965):晶体管和批处理系统
特点:有了操作系统的概念把代码都赞到一块,让一个CPU共享,但是还是一个一个的去运行,还是顺序算法(串行)
优点:批处理,节省了机时
缺点:计算的过程仍然是顺序计算(串行);程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)
第三代计算机(1965~1980):集成电路芯片和多道程序设计
第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道程序设计
多道程序设计:所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
单道程序的运行过程:
在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

多道程序的运行过程:
将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。

多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。
单处理机系统中多道程序运行时的特点:
- 多道:计算机内存中同时存放几道相互独立的程序;
- 宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
- 微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。
补充:
实现多道技术的解决方式为多路复用。多路复用分为时间上的复用和空间上的复用。
1. 空间上的复用:将内存分为部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
2. 时间上的复用:当一个程序在等待I/O时,另一个程序可以使用CPU,如果内存中可以同时存放足够多的作业,则CPU的利用率可以接近100%,类似于小数数学多学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢CPU的执行权限。这种切换不仅会在一个进程遇到I/O时进行,一个进程占用CPU时间过长也会切换,或者被操作系统夺走CPU的权限)。
空间上的复用最大的问题是:
程序之间的内存必须分割,这种分割需要在硬件层面实现,有操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存。
首先丧失了安全性,比如:你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿走操作系统的所有权限。
其次丧失了稳定性,某个程序崩溃时可能把别的程序的内存也给回收了,比如:把操作系统的内存给回收了,则操作系统崩溃。
第四代计算机(1980~至今):个人计算机



浙公网安备 33010602011771号