系统功能性/非功能性需求

1 操作系统的系统需求

1.2 软件系统的需求分析

人们从软件系统的外部对软件系统提出的诸多期望

  • 软件系统能够提供的服务;
  • 软件系统在提供这些服务时,需要满足的限制条件;
  • 软件系统具有适应某些变化的能力;

可以看出来,系统需求的第一点,是后两点系统需求赖以生存的基础,所以我们称之为软件系统的功能性需求,后两类则是非功能性需求

1.2 操作系统的功能性需求

1.2.1 OS的功能性需求

  • 1.2.1.1 计算机用户需要的用户命令

用户需要通过一些指令来达成操作硬件或者是操作系统提供的功能,那么,由OS实现的所有用户命令所构成的集合常被人们称之为OS的 Interface(用户接口),有时候也被称之为命令接口。

命令的表示形式一般分为三类:字符形式,菜单形式,图形形式
命令的使用方式一般分为两类:脱机使用方式(不在系统控制下),联机使用方式(在系统控制下)

  • 1.2.1.2 应用软件需要的System Call(系统调用)

这个就很差熟悉啦,不管是C++,JAVA,Python, 我们都见过各种各样语言本身为我们提供的一些封装好的接口。与这些接口类似,在这些接口内部,很有可能也使用了系统本身的接口。 由OS实现的所有系统调用所构成的集合被称之为 程序接口 或 应用编程接口(API),在应用软件运行过程中可以引用的系统服务

常见的两种API:POSIX.1, WIN32 API

某种意义上来说,程序接口对于一台计算机来说,它就是一台虚拟计算机,它包含了一组抽象概念以及这组抽象概念相关的系统服务。

1.3 OS的非功能性需求

相对于功能性需求,我们更多的是讨论OS的非功能性需求。

  • 性能(效率)
    这是我们目前一直在追求的一项指标,通过不断地优化来达成这一目标。那么性能具体表现在哪些地方呢?

最大化OS的吞吐量(throughput):单位时间里系统完成的任务
最小化响应时间(response time):通常,系统在接收到我们的命令时(如鼠标点击),并不是立即执行的,而是采用中断式。
在分时系统中,要尽量满足接纳尽量多的用户:在硬件系统允许的情况下,不要因为操作系统而限制我们的用户数。尽量让操作系统配合我们的硬件设施。

  • 公平性
    在我们设计出来的系统调度算法也好,系统本身也好,我们要考虑到整个系统对于所有类型的应用的公平性。不能偏袒与某一类型的应用,而应该一视同仁。

  • 可靠性

  • 安全性

  • 可伸缩性(可配置性,可扩展性):能够适应新的外部设备的增长

  • 可移植性

1.4 OS对硬件平台的依赖

为了实现操作系统的功能性与非功能性的需求,我们应该在哪种硬件平台下实现呢?例如,我们做分时系统,那么我们的硬件要求中,计时器就是必不可少的硬件要求。其他常见的还有输入/输出设备,CMA中断机制,特权指令,以及内存保护机制等等等。。。
OS中的很多原理,很多算法,必须由这些硬件来进行支撑

猜你喜欢

转载自blog.csdn.net/TakahashiRyosuke/article/details/108204559