操作系统结构(一)-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

操作系统结构(一)

简介:

研究一个操作系统,或者说设计一个操作系统,需要从多个角度去了解操作系统。第一是通过考察所提供的服务(用户角度);第二是通过考察为用户和程序员提供的接口(程序员角度);第三是研究系统的各个组成部分及其相互关系(操作系统设计人员)。

主要内容:

*操作系统为用户、进程和其他系统提供的服务;

*组织操作系统的不同方法;

 在本节介绍操作系统提供的服务和操作系统的设计和实现。

1、操作系统服务

操作系统提供一个环境以执行程序。它向程序和这些程序的用户提供服务。这些服务帮助用户更高效地完成任务,同时确保系统高效率运行。

*用户界面(User Interface, UI

*程序执行:系统必须能将程序装入内存并运行程序。程序必须能结束执行,包括正常结束和部正常结束(指明错误)。

*I/O操作:运行程序可能需要I/O,这些I/O可能涉及文件或设备。为了提高效率和进行保护,用户通常不能直接控制I/O。因此,操作系统必须提供进行I/O操作的方法。

*文件系统操作

*通信:在许多情况下,一个进程需要与另一个进程交换信息。这种通信有两种主要形式。一种是发生在同一计算机(同一操作系统)运行的两个进程之间;另一种是运行在由网络连接起来的不同的计算机上的进程之间。通信可以通过共享内存来实现,也可通过消息交换技术来实现(对于消息交换,消息包通过操作系统在进程之间移动)。

*错误检测:操作系统需要知道可能出现的错误。错误可能发生在CPU或内存硬件(如内存错误或电源失败)、I/O设备(如网络连接出错、打印机缺纸)和用户程序中(如算术溢出、试图访问非法内存地址)。对于每种类型的错误,操作系统应该采取适当的动作以确保正确和一致的计算。

*资源分配:当同时有多个用户或多个作业运行时,系统必须为它们中的每一个分配资源。例如,为了更好地使用CPU,操作系统需要采用CPU调度算法以考虑CPU的速度、必须执行的作业、可用的寄存器数和其他因素。

*统计:需要记录哪些用户使用了多少和什么类型的资源。

*保护和安全

A、操作系统的用户界面:

#命令行界面(Command-Line Interface, CLI),采用文本命令,并用一定方法输入。

命令解释程序(Shell)的主要作用是获取并执行用户指定的下一条命令。执行这些命令有两种常用方法。一种方法是命令解释程序本身包含代码以执行这些命令;另一种方法是由系统程序实现大多数命令,命令解释程序用命令来识别文件以装入内存(Unix系统)。

#图形用户界面(Graphical User Interface),视窗系统,具有定位设备来指挥I/O、从菜单选择、选中部分并用键盘输入文本(像素Pixel)。

B、系统调用:

系统调用提供了操作系统提供的有效服务界面。由操作系统实现提供的所有系统调用所构成的集合即应用程序接口(Application Programming InterfaceAPI)。一般应用程序开发人员根据API来设计程序。API是一系列适用于应用程序员的函数,包括传递给每个函数的参数及其返回的程序员想得到的值。有三种应用程序员常用的API:适用于Windows系统的Win32 API,适用于POSIX系统的POSIX API(包括几乎所有UNIXLinuxMax OSX版本),以及适用于运行于Java虚拟机程序的Java API

对于程序员,通过API操作系统接口的绝大多数细节被隐藏起来,并被执行支持库所管理。API、系统调用接口和操作系统之间的关系(处理一个Open()系统调用):

 

向操作系统传递参数的三种方法:

*寄存器参数传递;

*通过程序放入堆栈中;

*采用块或堆栈的方法。

C、系统调用类型:

系统调用大致可以分为五大类:

*进程控制:

#结束,放弃

#装入,执行

#创建进程,终止进程

#取得进程属性,设置进程属性

#等待时间

#等待事件,唤醒事件

#分配和释放内存

*文件管理:

#创建文件,删除文件

#打开,关闭

#读、写、重定位

#取得文件属性,设置文件属性

*设备管理:

#请求设备,释放设备

#读、写、重定位

#取得设备属性,设置设备属性

#逻辑连接或断开设备

*信息维护:

#读取时间或日期,设置时间或日期

#读取系统数据,设置系统数据

#读取进程、文件或设备属性

#设置进程、文件或设备属性

*通信:消息传递模型和共享内存模型

#创建、删除通信连接

#发送、接收消息

#传递状态消息

#连接或断开远程设备

D、系统程序:

系统程序提供了一个方便的环境,以开发程序和执行程序。它们可以分为如下几类:

*文件管理

*状态信息:系统信息,详细的性能、登录和调试信息以及系统设置(如Windows注册表)。

*文件修改

*程序语言支持:常用程序设计程序语言的编译程序、汇编程序、调试程序和解释程序通常与操作系统一起提供给用户。

*程序装入和执行:绝对加载程序,重定位加载程序,链接编辑器和覆盖式加载程序。

*通信:提供在进程、用户和计算机系统之间创建虚拟连接的机制。

2、操作系统设计和实现

A、设计目标:

需求可以分为两个基本类:用户目标和系统目标。

用户目标:方便和容易使用,学习代价低,可靠安全快速。

系统目标:容易设计、实现和维护,灵活、可靠、高效且没有错误。

B、机制(Mechanism)与策略(Policy):

机制决定如何做,策略决定做什么。Unix/Linux的接口设计有一句通用的格言提供机制而不是策略操作系统的本质是什么?管理者?亦或服务者?但归根到底,操作系统是一个执行者。

执行用户程序,所谓为用户服务;执行中断,所谓为外设服务;系统调用,所谓为广大的程序员服务;执行内核线程,为操作系统自身服务。而这些所有,它们执行的核心,无非是在恰当的时机,让哪个对象(程序、线程、中断服务程序、中断的下半部分、系统调用)占有CPU。换句话说,Unix/Linux抽象出对这些对象的执行机制:

*程序的执行机制——进程

*内核函数的执行机制——线程

*中断服务程序的执行机制——中断信号触发

*中断下半部的执行机制——softirq, tasklet, 工作队列

*系统调用的执行机制——软中断(0x80中断触发)

如果说机制是一种框架,那么,策略就是填充框架的一个个具体的实体。机制提供的是一种开放而宽松的环境,而策略就是在这个环境下赖以生存的生命个体。比如,我们编写的一个程序,fork()以后,就成为一个个进程的生命个体。而操作系统所提供给我们创建、执行以及结束进程的各种原语fork()、exec()、exit()等是统管各种进程的机制。我们所创建进程的死活并不会影响机制本身。

C、实现:使用高级语言来实现操作系统。通过改善数据结构和算法来提高系统性能,同时监视系统性能,增加代码以计算并显示系统行为和测量。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: