计算机操作系统考研讲义(7)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章操作系统结构和程序设计

7.1 操作系统的编程概念

1、操作系统编程的发展

在九十年代以前,程序员的精力集中于完成任务的过程,而不是用户与该过程的交互方式,过去评价一个软件的好坏往往是注意源程序的短小精悍和执行的快速性。快速的、清晰的编程是许多程序员努力要达到的理想境界。Windows操作系统将用户与计算机的交互方式的设计(即人机界面设计)放到了非常重要的位置。同时,Windows为不同形式的高层次交互提供了相应的机制:应用程序之间、操作系统和应用程序之间、公共的共享代码库和数据库之间。

2、编程语言简史

(1)机器语言:以二进制代码“0”、“1”组成的机器指令集合;

(2)汇编(Assembler)语言:以助记符表示机器指令功能,例如,JOVIAL、forth;

(3)高级语言:接近人类语言(英语)和数学语言的计算机语言,例如,BASIC、FORTRAN、Pascal、C、FoxBASE、ORACLE等;

(4)进程(Process)概念:例如,UNIX Shell、TCL、PERL和Marvel等;

(5)面向对象的语言:例如C++、Visual BASIC、java等;

(6)新范例计算机语言:例如ML、Smalltalk、Eiffel等;

3、不同应用领域的计算机语言

(1)科学研究:

例如:FORTRAN、ALGOL、BASIC、APL、Pascal、C、C++、AUTOCAD等;

(2)商业:

例如:COBOL、C、PL/I、4GLs、和spreadsheet等;

(3)系统:

例如:Assembler、JOVIAL、Forth、C、C++、Ada、java等;

(4)出版:

例如:TeX、Postscript、word、WPS、和processing等;

(5)人工智能(AI,artificial intelligence):

例如:LISP、SNOBOL和Prolog等。

7.2 结构设计的目标

计算机操作系统一般都有两种运行状态,即用户态(user mode)和核心态(kernel mode)。计算机操作系统的结构设计一般包括内结构和外结构两种结构。传统操作系统内结构是指内部程序模块的层次结构,每一层由若干数量不等的程序模块组成。例如,早期的UNIX操作系统版本,如图7-1所示。

图7-1 传统计算机操作系统的内结构(层次结构)

当计算机操作系统内的程序模块运行时,机器处于核心态,其它程序运行时,机器处于用户态,包括操作系统以外的其它系统程序与用户程序一样,都是运行在用户态下而不是运行在核心态下,而可以统称为用户态程序,因而用户程序仅是用户态程序中的一部分。区分用户态和核心态两种运行状态,其目的是使操作系统有一定的特权,使系统运行比较安全可靠。

7.2.1设计目标

(1)正确性:实现功能的正确性;

(2)安全可靠性:系统工作稳定,不容易被破坏,特别是用户的不正常工作状态不致影响系统垮台;

(3)可扩充性和可移植性:能适应较大范围工作的运行环境、硬件平台的要求;

(4)易维护性:系统具有的自动修补能力强。

7.2.2分层原则

1、层次设计方法从两个不同方向进行:

(1)自底向上:底层裸机经某种软件层的扩充形成最终目标系统即宿主系统(操作系统),由底层(0层)扩展到N层顶端。例如,早期是先有微机硬件,再设计合适的操作系统。

(2)自顶向下:已知目标N层用户要求,逐级向下进行设计。例如,Windows的图形控制界面。

2、各层间仅有单向依赖关系,层间独立,结构清晰易懂。一般是有序分层法,例如,上层能调用下层,下层不能调用上层;外层能调用内层,内层不能调用外层,避免产生环路等。其中又可分为:

(1)半序:允许同一层互相调用。

(2)全序:不允许同一层内互相调用。例如THE系统系统共分为6层,如图7-2所示。

图7-2 THE操作系统的分层结构

7.2.3 分块原则

1、分块原则

一般按功能分块,形成简单的相对独立模块,所编写的程序模块接口应有比较明确的通讯规则,模块间形成转接、相互依赖甚至循环。

2进程的观点

用进程的观点进行操作系统设计是继中断概念后的又一重大突破,也就是计算机在执行时不是以一条一条的指令为单元执行,而是以一组特殊指令执行。

3、模块及模块化程序设计

(1)模块及模块化

模块化是为了获得使用上的灵活性和多样性,是采用标准的可兼容的单元构成系统的一种方法。

(2)模块化程序设计

模块化程序设计是把一个大的软件系统划分为若干部分,使各部分之间的交往最少,且各自成为具有一定独立功能的程序模块,然后可以对系统中每一部分单独进行设计。

4、模块化程序设计的目的

(1)使人们确信程序模块的正确性,才能保证所构成的大型软件系统的正确性;

(2)各模块尽可能具有较大的独立性,以便能方便地把不同场合下写成的程序模块组合成软件系统。

5、模块的两个属性和概念

(1)模块程序是相关过程的集合,通常可用树状控制流程来描述;

(2)每个模块可以由它的输入链路接受数据,并以某种方式变换它,把所得的结果经由它的输出链路发送到其它模块。

7.2.4 模块接口法的设计步骤

(1) 按照结构设计的原则,把一个大型软件系统,分成若干个具有一定独立性和大小的模块,每个模块可以解决一部分问题或可实现某种功能,并规定好模块之间的接口。这一步称为系统总体设计。

(2) 进一步明确模块每个模块的内部功能。当模块较大时,同样又可将它进一步细分为若干个子模块。

(3) 当所有的子模块被设计出来后,按照它们的接口关系,把子模块链接在一起组成一个大模块,再链接这些大模块便构成软件系统。

7.2.5 模块接口法的优缺点

1、模块接口法的优点

模块接口法设计方法与非结构设计方法比较,有如下一些优点:

(1)加速了操作系统的研制过程;

(2)促进操作系统的日益完善;

(3)增加操作系统的灵活性。

2、模块接口法的缺点

(1)很难保证模块设计的正确性;

(2)装配的困难性;

(3)模块相对独立性差。

7.3 层次结构设计

相关文档
最新文档