软件工程的基本概念
1.软件的含义
所谓
软件,是指当计算机运行时,能提供所要求的功能和性能的指令和程序的集合,该程序能够正确地处理信息的数据结构;作为
规范软件,还应具有描述程序功能需求以及程序如何操作使用的文档。如果说,硬件是物理部件,那么,软件则是一种逻辑部件,它具有与硬件完全不同的特点。
2. 软件工程的含义
软件工程是指运用系统的、规范的和可定量的方法,来开发、运行和维护软件;或者说,是采用工程的概念、原理、技术和方法,来开发与维护软件,其目的是为了解决软件开发中所出现的编程随意、软件质量不可保证以及维护困难等问题。
传统的操作系统结构
操作系统是一个十分复杂的大型软件。为了控制该软件的复杂性,在开发OS时,先后引入了分解、模块化、 抽象和隐蔽等方法。开发方法的不断发展,促进了OS结构的更新换代。这里,我们把第一代至第三代的OS结构, 称为传统的OS结构,而把微内核的OS结构称为现代OS结构。
1. 无结构操作系统
在早期开发操作系统时,设计者只是把他的注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想。 此时的OS是为数众多的一组过程的集合,各过程之间可以相互调用,在操作系统内部不存在任何结构,因此,这种OS是无结构的,也有人把它称为整体系统结构。
此时程序设计的技巧,只是如何编制紧凑的程序,以便于有效地利用内存、对GOTO语句的使用不加任何限制,所设计出的操作系统既庞大又杂乱,缺乏清晰的程序结构。这一方面会使所编制出的程序错误很多,给调试工作带来很多困难;另一方面也使程序难以阅读和理解,增加了维护人员的负担。
2.模块化OS结构
1)
模块化结构
模块化程序设计技术,是最早(20世纪60年代)出现的一种程序设计技术。该技术是基于“分解”和“模块化”原则来控制大型软件的复杂度的。为使OS具有较清晰的结构,OS不再是由众多的过程直接构成,而是将OS按其功能划分为若干个具有一定独立性和大小的模块。每个模块具有某方面的管理功能,如进程管理模块、存储器管理模块、I/O设备管理模块和文件管理模块等,并规定好各模块间的接口, 使各模块之间能通过该接口实现交互,然后再进一步将各模块细分为若干个具有一定管理功能的子模块,如把进程管理模块又分为进程控制、 进程同步、 进程通信和进程调度等子模块, 同样也要规定各子模块之间的接口。若子模块较大时,再进一步将它细分。图 1-5 示出了由模块、子模块等组成的模块化OS结构。
2)
模块化OS的优缺点
引用
(1)提高了OS设计的正确性、 可理解性和可维护性。
(2) 增强了OS的可适应性。
(3) 加速了OS的开发过程。
模块化结构设计的缺点有二。首先,在开始设计OS时,对模块的划分及对接口的规定并不精确, 而且还可能存在错误,因而很难保证按此规定所设计出的模块会完全正确, 这将使在把这些模块装配成OS时发生困难;其次,从功能观点来划分模块时,未能将共享资源和独占资源加以区别; 由于管理上的差异,又会使模块间存在着复杂的依赖关系使OS结构变得不清晰.
3.分层式OS结构
1) 有序分层的基本概念
从改进设计方式上说,应使我们的每一步设计都是建立在可靠的基础上。我们可以从物理机器开始, 在其上面先添加一层具有一定功能的软件A1, 由于A1是建立在完全确定的物理机器上的,在经过精心设计和几乎是穷尽无遗的测试后,可以认为A1是正确的;然后再在A1上添加一层新软件A2,……,如此一层一层地自底向上增添软件层,每一层都实现若干功能,最后总能构成一个能满足需要的OS.
分层式结构设计的基本原则是:
每一层都仅使用其底层所提供的功能和服务,这样可使系统的调试和验证都变得容易, 例如,在调试第一层软件A1时,由于它只使用了物理机器提供的功能,因此它将与其所有的高层软件A2,……,An无关; 同样在调试A2时,它也只使用了A1和物理机器所提供的功能, 而与其高层软件A3, ……,An无关,这样,一旦发现Ai出现错误时,通常该错误只会局限于Ai,因为它与所有其高层的软件无关,而Ai层以下的各层软件,又都经过仔细的调试。
2) 层次的设置
(1) 程序嵌套。 通常OS的每个功能的实现, 并非是只用一个程序便能完成的,而是要经由若干个软件层才有可能完成。因此在划分OS层次时,首先要考虑在实现OS 的每个功能时所形成的程序嵌套。例如,作业调度模块须调用进程控制模块;在为某作业创建一进程时,进程控制模块又须调用内存管理模块为新进程分配内存空间,可见,进程控制模块应在内存管理模块之上; 而作业调度模块又应在更高层。
(2) 运行频率。在分层结构中,各层次软件的运行速度是不同的,因为A1层软件能直接在物理机器上运行, 故它有最高的运行速度。随着层次的增高,其相应软件的运行速度就随之下降,因而An层软件的运行速度最低。 为了提高OS的运行效率,应该将那些经常活跃的模块放在最接近硬件的A1层,如时钟管理、进程调度,通常都放在A1层。
(3) 公用模块。应把供多种资源管程程序调用的公用模块, 设置在最低层,不然,会使比它低的层次模块由于无法调用它而须另外配置相应功能的模块。例如,用于对信号量进行操作的原语Signal和Wait.
(4) 用户接口。为方便用户(程序),OS向用户提供了“用户与OS的接口”,如命令接口、程序接口以及图形用户接口。这些接口应设置在OS的最高层,直接提供给用户使用。
微内核OS结构
1. 客户/服务器模式(Client-Server Model)
1) 基本概念
为了提高OS的灵活性和可扩充性而将OS划分为两部分, 一部分是用于提供各种服务的一组服务器(进程),如用于提供进程管理的进程服务器、提供存储器管理的存储器服务器提供文件管理的文件服务器等,所有这些服务器(进程)都运行在用户态。 当有一用户进程(现在称为客户进程)要求读文件的一个盘块时,该进程便向文件服务器(进程)发出一个请求;当服务器完成了该客户的请求后,便给该客户回送一个响应。 操作系统的另一部分是内核,用来处理客户和服务器之间的通信, 即由内核来接收客户的请求,再将该请求送至相应的服务器;同时它也接收服务器的应答, 并将此应答回送给请求客户。 此外,在内核中还应具有其它一些机构,用于实现与硬件紧密相关的和一些较基本的功能。
2) 客户/服务器模式的优点
引用
(1)提高了系统的灵活性和可扩充性。
(2) 提高了OS的可靠性。
(3) 可运行于分布式系统中
。
2.面向对象的程序设计技术(Object-Orientated Programming)
1) 面向对象技术的基本概念
面向对象技术是20世纪80年代初提出并很快流行起来的。该技术是基于“抽象”和“隐蔽”原则来控制大型软件的复杂度的。
所谓对象,是指在现实世界中具有相同属性、服从相同规则的一系列事物的抽象,而把其中的具体事物称为对象的实例。OS中的各类实体如进程、线程、消息、存储器等,都使用了对象这一概念,相应地,便有进程对象线程对象、 存储器对象等。
2) 面向对象技术的优点
引用
(1) 可修改性和可扩充性。由于隐蔽了表示实体的数据和操作,因而可以改变对象的表示而不会影响其它部分, 从而可以方便地改变老的对象和增加新的对象。
(2) 继承性。继承性是面向对象技术所具有的重要特性。继承性是指子对象可以继承父对象的属性,这样,在创建一个新的对象时, 便可减少大量的时空开销。
(3) 正确性和可靠性。由于对象是构成操作系统的基本单元,可以独立地对它进行测试,这样,比较易于保证其正确性和可靠性,从而比较容易保证整个系统的正确性和可靠性。
3. 微内核技术
1)微内核技术的引入
所谓
微内核技术,是指精心设计的、能实现现代OS核心功能的小型内核,它与一般的OS(程序)不同, 它更小更精炼,它不仅运行在核心态,而且开机后常驻内存, 它不会因内存紧张而被换出内存。微内核并非是一个完整的OS, 而只是为构建通用OS提供一个重要基础。由于在微内核OS结构中,通常都采用了客户/服务器模式,因此OS的大部分功能和服务,都是由若干服务器来提供的, 如文件服务器、作业服务器和网络服务器等。
2) 微内核的基本功能
微内核所提供的功能,通常都是一些最基本的功能,如进程管理、存储器管理、进程间通信、 低级I/O功能。
引用
(1) 进程管理。
(2) 存储器管理。
(3) 进程通信管理。
(4) I/O设备管理。
分享到:
相关推荐
操作系统结构设计.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
操作系统结构设计的另一个层面是局部结构,涉及数据结构和控制结构的设计。不同的构造方法会产生不同结构的操作系统,如整体式结构将所有功能紧密集成;层次式结构按功能层叠构建;虚拟机结构利用虚拟化技术提供多...
1. 操作系统结构设计概述(1):操作系统的设计呈现出高复杂度、长生成周期和难以保证正确性等特征。例如,CTSS约有32000行程序;IBM OS/360超过百万条机器指令,共有4000个模块组成,花费5000人年;Multics 达到...
本篇文章主要介绍了Windows操作系统的体系结构设计,包括操作系统设计目标、操作系统结构设计、操作系统的设计阶段、操作系统结构等内容。通过对操作系统的研究,可以了解到操作系统的设计目标、设计阶段、结构设计...
计算机操作系统课程设计 计算机操作系统课程设计是计算机科学与技术...计算机操作系统课程设计涵盖了操作系统的基本概念、设计原则、算法实现、系统结构等方面的知识点,为学生提供了系统的操作系统设计和实现经验。
操作系统结构设计是操作系统设计的关键环节,其目标是构建高效、稳定、易于扩展的系统。本篇文章将详细探讨操作系统结构的设计原理和主要组件。 首先,操作系统的整体结构设计包括对操作系统各组成部分的组织方式和...
操作系统结构设计多样,常见的有单体结构、微内核结构、层叠结构和客户-服务器结构。单体结构将所有组件紧密集成,微内核只包含最基本的服务,其他功能作为独立模块;层叠结构将系统按功能划分层次;客户-服务器结构...
文件的分配表和目录结构设计为树形结构,每个目录项不仅包括文件或目录的名称、属性,还要有指向文件数据所在位置的索引。学生还需设计和实现磁盘模拟,这里使用两个文件来代表磁盘的C和D分区,采用链式结构分配文件...
操作系统 课程设计 文件系统 代码
《系统概要设计 数据结构设计》 在系统概要设计阶段,数据结构设计是一个至关重要的环节,它涉及逻辑结构设计和物理结构设计,以及E-R图的转换。首先,我们来详细探讨逻辑结构设计。 逻辑结构设计的目标是将基本的...
操作系统课程设计中的模拟文件系统是一项复杂而有意义的任务,它涵盖了操作系统的核心概念,如文件管理、内存分配、磁盘调度以及I/O操作等。这个压缩包包含的资源是完成这一任务的重要参考资料,它提供了详细的设计...
"64位操作系统的设计与实现" 本文的目的在于设计并实现一个高效的 64 位操作系统,以适应当前计算机硬件的发展和软件需求的增长。该操作系统将具有以下特点:支持 64 位地址空间和处理器架构;提高系统运行效率和...
本章节主要探讨了操作系统的编程概念、计算机语言的历史以及操作系统结构设计的目标和方法。 首先,操作系统编程概念随着计算机技术的发展经历了显著变化。在早期,程序员关注的是程序的效率和简洁性,而现代操作...
通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 二、实验题目 1.编写并调试一个树型目录结构的文件系统,...
"操作系统原理与Linux实践-操作系统的结构设计" 操作系统的结构设计是操作系统原理与Linux实践的重要组成部分。操作系统的结构设计主要涉及到操作系统的主要构件、操作系统的结构和操作系统运行模型三个方面。 一...
操作系统课程设计是计算机科学教育中的一个重要实践环节,旨在让学生深入理解操作系统的原理并掌握实际编程技巧。本项目基于华工计算机学院的课程设计要求,主要实现了简单的文件管理系统,模拟了LINUX环境下的二级...
1. **文件系统结构**:设计的文件系统需具备多用户多级目录结构,允许用户在不同目录中创建、管理文件。每个目录项包含文件名、物理地址、长度等信息,并支持文件的读写保护。 2. **内存中的虚拟磁盘**:在内存中...
操作系统课程设计报告 本课程设计报告的主要目的是分析设计 Linux 源代码,进行系统级的程序设计。通过本次课程设计,熟悉了关于 Linux 下 C 语言的系统软件程序设计,可以比较深入的了解和掌握基本 GCC、Vim 等...
5. **物理结构设计**:物理结构设计关注数据库在特定数据库管理系统(如SQL Server、Oracle或MySQL)中的实际存储和访问方式。这包括选择适当的存储引擎、决定表的分区策略、索引优化以及考虑备份和恢复策略。物理...