操作系统概述
在计算机应用的过程中,人们接触最频繁的是操作系统,例如磁盘操作系统DOS、易于使用的图形界面操作系统Windows、开放源代码的操作系统Linux等。但是,操作系统往往是比较复杂的系统软件,相对于使用而言,要掌握它的运行机制就不是那么 容易。
1.1认识操作系统
可以从不同的角度来认识操作系统。从使用者的角度看,操作系统使得计算机易于使用。从程序员的角度看,操作系统把软件开发人员从与硬件打交道的繁琐事务中解放出来。从设计者的角度看,有了操作系统,就可以方便地对计算机系统中的各种软、硬件资源进行有效的管理。
1.1.1 从使用者角度
人们对操作系统的认识一般是从使用开始的。打开计算机,呈现在眼前的首先是操作系统。如果用户打开的是操作系统字符界面,就可以通过命令行完成需要的操作。例如,要在Linux下复制一个文件,则输入:
cp /floppy/TEST mydir/test
上述命令可以把/floppy目录下的TEST文件复制到mydir目录下,并更名为test。
为什么可以这么方便地复制文件?操作系统为此做了什么工作?首先,文件这个概念是从操作系统中衍生出来的。如果没有文件这个实体,就必须指明数据存放的具体物理位置,即位于哪个柱面、哪个磁道、哪个扇区。其次,数据转移过程是复杂的I/O操作,一般用户无法关注这些具体的细节。最后,这个命令的执行还涉及其他复杂的操作,但 是,因为有了操作系统,用户只需要知道文件名,其他繁琐的事务完全由操作系统去处理。
如果用户在图形界面下操作,上述处理就更加容易。实际上,图形界面的本质也是执行各种命令,例如,如果复制一个文件,那么就要调用cp命令,而具体的复制操作最终还是由操作系统去完成。
因此,不管是敲击键盘或者单击鼠标,这些简单的操作在指挥着计算机完成复杂的处理过程。正是操作系统把繁琐留给自己,把简单留给用户。
1.1.2 从程序开发者角度
从程序开发者的角度看,不必关心如何在内存存放变量、数据,如何从外存存取数据,如何
把数据在输出设备上显示出来,等等。例如,cp命令的C语言实现片段如下:
inf=open("/floppy/TEST",O_RDONLY,0);
out=open("/mydir/test",O_WRONLY,0600);
do{
l=read(inf,buf,4096);
write(outf,buf,l);
} while(l);
close(outf);
close(inf);
在这段程序中,用到四个函数open(),close(),write()和read(),它们都是C语言函数库中的函数。进一步研究可知,这些函数都要涉及I/O操作,因此,它们的实现必须调用操作系统所
提供的接口,也就是说,打开文件、关闭文件、读写文件的真正操作是由操作系统完成的。这些操作非常繁琐,对于不同的操作系统其具体实现也可能不同,程序开发者不必关心这些具体操作。
1.1.3 从操作系统在整个计算机系统中所处位置
如果把操作系统放在整个计算机系统中考虑,则如图1.1所示。
图1.1 计算机系统层次结构示意图
因为操作系统这个术语越来越大众化,因此许多用户把他们在屏幕上看到的东西理所当然地
认为是操作系统,例如Windows中的图形界面、IE浏览器、系统工具集等,这些都是操作系统的一部分。但是,本书讨论的操作系统是指内核(kernel)。用户界面是操作系统的外在表象,而内核是操作系统的内在核心,由它真正完成用户程序所要求的操作。
从图1.1可以看出,一方面操作系统是上层软件与硬件相联系的窗口和桥梁,另一方面操作系统是其他所有用户程序运行的基础。
下面以一个程序的执行过程为例,看一下操作系统具体起什么样的作用。一个简单的C程序如下所示,其名为test.c。
#include<stdio.h>
main()
{
printf("Hello world\n");
}
用户对上述程序编译、连接后,生成一个可执行的二进制文件,其机器执行过程简述如下:
(1)用户告诉操作系统执行test程序。
(2)操作系统通过文件名到该程序。
(3)检查其类型,检查程序首部,出代码和数据存放的位置。
(4)文件系统到第一个磁盘块。
(5)操作系统建立程序的执行环境。
(6)操作系统把程序从磁盘装入内存,并跳到程序开始处开始执行。
(7)操作系统检查字符串的位置是否正确。
(8)操作系统到字符串被送往的设备。
(9)操作系统将字符串送往该设备。窗口系统确定这是一个合法的操作,然后将字符串转换成像素。
开放源代码意味着什么(10)窗口系统将像素写入存储映像区。
(11)视频硬件将像素表示转换成一组模拟信号,用于控制显示器(重画屏幕)。
(12)显示器发射电子束,在屏幕上显示“Hello world”。
从这个简单的例子可以看出,任何一个程序的运行只有借助于操作系统才能得以顺利完成,因此,从本质上说,操作系统是应用程序运行的基础设施。
1.1.4 从操作系统设计者的角度
操作系统是一个庞大、复杂的系统软件,其设计目标有两个,一是尽可能地方便用户使用计算机,二是让各种软件资源和硬件资源高效、协调地运转。
笼统地说,计算机的硬件资源包括CPU、存储器和各种外设。其中外设种类繁多,如磁盘、鼠标、网络接口、打印机等。操作系统对外设的操作是通过I/O接口进行的。软件资源主要指存放在存储介质上的文件。
假设在一台计算机上有三道程序同时运行,并试图在一台打印机上输出运算结果,这意味着必须考虑以下问题:三道程序在内存中如何存放?什么时候让某个程序占用CPU?怎样有序地输出各个程序的运算结果?这些问题的解决都必须求助于操作系统,也就是说,操作系统必须对内存、CPU进行管理,当然也包括对外设的管理。
因此,从操作系统设计者的角度考虑,一个操作系统必须包含以下几部分:
操作系统接口
CPU管理
内存管理
设备管理
文件管理
综上所述,操作系统的定义:
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合——它们能以尽量有效、合理的方式组织和管理计算机的软、硬件资源,合理的组织计算机的工作流程,控制程序的执行,并向用户提供各种服务功能,使得用户能够灵活、方便、有效地使用计算机,使整个计算机系统能高效、顺畅地运行。
1.2 操作系统的发展
操作系统的发展过程是一个从无到有、从简单到复杂的过程。为了进一步理清思路,下面从操作系统的演变、硬件和软件的各自发展的角度来加深了解。
1.2.1 操作系统的演变
在计算机诞生的初期,硬件价格昂贵,没有操作系统。每一个用户都要自行编写涉及到硬件的源代码。程序通过卡片输入计算机,一次只能完成一个功能(计算、I/O、用户思考/反应),工作效率非常低。
最早出现的操作系统是简单的单道批处理系统,它能串行执行预先组织好的一组任务。这种系统避免了此前系统一次只能运行一个任务,每个任务必须先装入系统,执行完之后才能装
入下一个任务而浪费了装入时间的现象,提高了系统效率。
但是,程序运行到I/O操作期间,CPU总是需要停下来等待数据传输完成,而I/O操作时间比CPU处理数据时间要高出数倍(往往是20倍以上),因此无形中浪费了大量宝贵的CPU时间,也使得任务组中后续程序的执行被延迟,那么,如何避免数据传输等待所带来的时间浪费?能否在传输期间解放CPU,使其可以去执行别的任务?为解决这个问题,单道批处理系统发展成为多道批处理系统。所谓多道,就是指处理器(指单处理器系统)可以交错运行多个程序,在某个任务挂起时运行另一个程序。这样就解决了CPU等待数据传输所浪费的时间,进一步提高了系统效率。
当计算机所处理的任务不再仅仅局限于科学计算,而是越来越多地涉及办公和日常活动时,程序在执行过程中常常需要和用户不断交互,任务执行结果随时都会因为用户的选择而改变,而且往往需要多个用户同时使用系统。由于这种交互模式和共享模式需要任务响应时间尽可能短(如果超过20秒,人的思维就容易被打断或变得不耐烦),为了让多数用户满意,操作系统开始采用分时技术,将处理器的运行时间分成数片,平均或依照一定权重分发给系统中的各用户使用。这种使处理器虚拟地由多个用户共同使用的方法,不但可以满足快速响应要求,也可以使得所有用户产生计算机完全是在为自己服务的感觉。
上面给出了操作系统发展的几个主要阶段:单道批处理——多道批处理——分时系统。除此以外,现在还出现了分布式操作系统、嵌入式系统,不过总体技术思路仍然脱离不了多道、分时等概念。
1.2.2 硬件的发展轨迹
操作系统理论是在计算机的应用中诞生并成长的,它的发展与计算机硬件的发展是密不可分的。表1.1是从硬件角度看操作系统的发展轨迹。
表1.1 从硬件角度看操作系统发展轨迹
年 代 | 硬 件 特 点 | 操作系统特点 | 背 景 |
机械计算机时代(17世纪~20世纪初) | 纯机械结构,低速 只能进行简单的数学运算 | 纯手工操作 | 从计算尺到差分机再到分析机发展了数百年 |
第一代计算机(1946年~20世纪50年代末) 电子管计算机 | 体积大,能耗高,故障多,价格贵 难以普及应用 | 无操作系统 (程序以机器码编写,载体从插件板到卡片与纸带) | 1906年发明电子管; 1946年第一台电子管计算机ENIAC研制成功 |
第二代计算机(20世纪50年代末~60年代中期) 晶体管计算机 | 采用印刷电路 稳定性与可靠性大大提高 批量生产成为可能 进入实际应用领域但数量有限 | 单道批处理系统 操作系统以监督软件形式出现 任务按顺序方式处理 | 1947年发明晶体管 |
第三代计算机(20世纪60年代中期~70年 代初) 集成电路计算机 | 体积减小,性价比迅速提高 小型计算机发展迅速 进入商业应用领域 尚不适合家庭应用的需求 | 涌现大批操作系统,包括多道批处理系统、分时系统和实时系统 奠定了现代操作系统的基本框架 | 1958年发明集成电路;1971年Intel公司发明微处理器 |
第四代计算机(20世纪70年代中期至今) 大规模集成电路计算机 | 性能大幅度提高,价格不断下降 个人计算机成为市场的主流 计算机迅速普及 计算机应用进入高速发展的轨道 | 操作系统的理论基本完善 系统与网络通讯一体化(分布式操作系统和网络操作系统) 人机交互成为设计重点 操作系统性能日渐稳定 | 1981年IBM-PC机诞生;1993年Internet开始商业化运作 |
从表1.1可以看出:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论