为秀
  • 首页
  • 新闻
  • 软件
  • 笔记
  • 问答
笔记

操作系统设计,鲜为人知细节

祥林 ⋅ 2年前

我们已经知道,操作系统是一个极其复杂和庞大的软件系统,操作系统本身以及它所管理的对象都是并发的系统,因而操作系统设计有着不同于一般应用系统设计的特征。那么一个操作系统的设计开发会有什么问题呢?本文就操作系统的设计开发所面临的问题、操作系统的设计阶段、设计目标以及操作系统的结构设计做一些探讨,对操作系统的设计开发问题的探讨,有助于读者全面地理解掌握操作系统的本质。

首先讨论在操作系统设计过程中,面临的主要困难。在操作系统设计的过程中主要困难有:设计复杂程度高、正确性难以保证和研制周期长等问题。下面分别进行简要的分析。

设计复杂程度高

操作系统的复杂程度主要表现在:程序长,有的功能模块包含数百万条指令;接口信息多,各个组成部分之间的信息交换很多,而且错综复杂;动态性强,程序本身包含较多的动态部分;并行性强,不同部分之间可以同时操作。下面我们简要地叙述操作系统可能面临的各种复杂问题。

操作系统是一个很大的程序,现代的UNIX操作系统有超过100万行的代码,Windows 2000有超过2900万行的代码。在操作系统中,各种子系统,如文件系统与内存系统之间的相互作用是不可预测的。操作系统必须处理同步机制,管理同步比管理顺序执行要难得多,而且会产生死锁等一系列问题。操作系统要提供用户之间共享信息和资源的机制,同时还要保证共享的安全。而在应用程序的设计中就不会有这类问题。

一个操作系统存在的时期非常长,UNIX操作系统和Windows操作系统已经存在了数十年。因此,操作系统的设计者必须考虑到将来硬件等情况的变化,并为这些变化做好准备,以支持不断推陈出新的各种I/0设备,同时还要解决可能出现的硬件冲突问题。这些问题在应用程序中是不必考虑的。

另外,操作系统必须有一定的通用性和对以前版本的兼容性,即新版本要支持老版本原有的一些功能。不能因为操作系统的版本上的一点更新,就要求用户把计算机硬件和应用软件也都升级。这样,考虑到操作系统的通用性,对以前的版本兼容性,系统就可能对字长、文件名或其他各方面都有严格的限制。

操作系统的设计者并不详细知道他们的系统在用户中将被如何使用,所以操作系统要具有一定的适应性,来保证每个用户的需要。

操作系统还是防止外部用户入侵的屏障,必须采取措施防止来自外部的入侵,而一些应用软件通常就不必考虑这些问题。

正确性难以保证

操作系统包含的功能成份很多,各种外部设备的接口复杂,导致操作系统源代码的正确性较难以保证。尽管有不少单位在进行软件正确性证明的研究,而且也取得了不少进展,但是从实践上看,操作系统的正确性主要还是依靠软件工程的规范来保证。

由于操作系统是一个大型软件,参与开发的人员的基数也较大。这样也加大了保证整个软件的正确性的难度。

解决这一问题的途径就是发展良好的操作系统结构,采用先进的开发技术、工程化的管理方法,并使用高效的开发工具。

研制周期长

一般的软件研制开发周期包括:需求分析,由用户提供软件的需求,并根据需求制作软件规格说明书;设计者根据软件规格说明书进行软件设计;实现者编写程序,调试、测试并整理各种开发文档,然后提交给用户使用,在应用的过程中不断改进和提高软件的品质。操作系统的研发也基本遵从这样的过程范式,但是因为上述两个原因,操作系统的研制周期比较长。一个操作系统的研制周期一般为5年左右。例如,微软的Windows NT从1988年提出设计目标到1993第一个可用的版本WindowsNT3.1发布经历了将近5年的时间,而它的第一个被广泛应用的版本WindowsNT4.0则到1996年后半年才正式发布。由此对操作系统开发的难度可见一斑。

# 操作系统
- THE END -
0 0 share
本文由 @祥林 修订发布于 2020-11-15。
本文系作者 @祥林 原创发布在 为秀。未经许可,禁止转载。
PREV
分布式操作系统,速度更快更经济的操作系统
NEXT
操作系统的设计过程,一个高大上神奇的步骤
相关文章
  • 深入理解计算机系统
  • 进程的状态与转换
  • ReentrantLock和synchronized两种锁定机制的对比
  • 计算机系统结构、计算机组成和计算机实现
  • 计算机系统的层次结构
  • 数据库系统的结构
评论 (0)
祥林 不忘初心,方得始终
标签
API (1) Atlassian (1) DAU (1) Elasticsearch是什么 (1) ElasticSearch集群健康 (1) ES是什么 (1) ES集群 (1) ES集群健康 (1) HTTPS (1) Jira (1) MAU (1) PV (1) QPS (1) raspberry-pi-CM4 (1) RestAPI (1) Spring Initializr (1) start.spring.io (1) TPS (1) UV (1) X11-forwarding (1) X协议 (1) 云端知识库 (2) 云计算 (2) 互连 (1) 关系数据库 (2) 内存 (1) 吞吐量 (1) 并发 (1) 并发数 (1) 搭建start.spring.io (1) 操作系统 (41) 数据库 (6) 树莓派 (3) 泛型 (1) 禅道 (1) 线程安全 (2) 网络分类 (1) 网络协议 (2) 计算机系统层次结构 (2) 计算机系统结构 (3) 计算机组成 (1) 计算机网络 (6) 软件测试 (1) 进程 (2) 项目管理 (2)
Copyright © 2020-2023 为秀. All rights reserved. 川公网安备 51019002002633号 蜀ICP备20007773号