操作系统学习笔记-00概览
现代计算机系统分为软件和硬件两个部分,无论是软件还是硬件,对于计算机来说都属于资源。如何把资源合理地分配、利用,就是操作系统这门学科需要研究的问题和实际的意义。
操作系统与计算机系统
- 系统软件层:最靠近硬件的软件,主要负责对硬件控制,并对硬件进行封装,暴露接口以供软件使用。系统软件和支撑软件(数据库、编译程序、汇编程序等)构成了系统软件层。
- 操作系统直接作用于硬件之上,是软件系统的核心,是各种软件基础运行平台。
资源管理技术
目的
- 解决物理资源数量不足和合理分配资源。
- 实现硬件的易用性
- 将物理计算机的功能加以扩展,使之成为接口好、功能强、效率高、易使用的计算机系统。
复用
多道程序设计:由于计算机系统的物理资源宝贵稀有,操作系统让众多资源共享物理资源。多道程序设计就是空分复用主存,时分复用CPU,使资源利用率提高。
- 空分复用共享:资源可以在『空间』上分割成更小的单位供进程使用。比如内存有几个GB的空间,他的最小单位应该是字节,所以我们可以将映像放入不同内存区域,通过硬件存储保护机制隔离,进程各有自己的地址空间。
- 时分复用共享:资源可以从『时间』上分割成更小的单位供进程使用。比如说CPU主频是2.6GHz,意思就是一秒振动频率是2.6G次,那么最小单位就是1次振动,我们就可以按照根据时间来分配CPU的使用,前1K次振动给某个应用,后1K次给其他应用使用。
虚拟
虚拟的本质是对资源进行转化、模拟或者整合,把一个物理资源变成多个逻辑上的对应物。
虚拟不但能够解决某类物力资源数量不足的问题,还能够为应用程序提供易于使用的虚拟资源并创建更好的运行环境。既可用于外部设备,又可用于存储资源,也可以用于文件系统。
抽象
资源抽象是指通过创建软件来屏蔽硬件资源的物理特性和实现细节,简化对硬件资源的操作、控制和使用,不考虑细节而对资源执行操作的技术。
说白了,越接近底层(硬件)越复杂,操作系统对硬件资源进行整合,提供更为简便易用的环境。
复用和虚拟的主要目标是解决物力资源数量不足的问题,抽象用于处理系统复杂性,重点解决易用性
进程抽象
进程是处理器的一种抽象,或进程是执行中程序的状态集的一种抽象。
由于进程的执行依赖于内存和设备上的信息资源,所以仅仅是进程抽象是不够的。
虚存抽象
是物理内存基础上创建一个新的抽象概念 ,所以虚存是内存的一种抽象。
文件抽象
文件是设备的一种抽象,将文件中的字节块映射到存储设备的物理块中实现文件抽象。对于磁盘、光盘等具备复杂的物理接口设备,都应抽象成为文件,『对文件读写数据块』比『查找柱面、搜索磁道、读出扇区』要简单的多。
通过这种抽象,可以减少系统管理开销,使应用程序对数据和设备操作有一致性接口,可执行同一套系统调用。
操作系统担负两项基本任务:
- 防止硬件资源被失控的应用程序滥用。
- 屏蔽复杂的硬件操作细节,提供简单一致的硬件资源使用方法。
其他资源抽象
除了上述抽象外,操作系统还对其他底层硬件资源,如中断、时钟、网络接口等进行抽象。目的同样是屏蔽复杂的物理特性,提供简单统一的抽象接口。除此之外,也可对没有特定硬件基础的软件资源抽象,如消息、信号量、共享数据结构等。
操作系统虚拟机
通过操作系统对物理计算机实施仿真而获得的,为用户提供简单、清晰、易用、高效的计算机模型。
操作系统定义与作用
定义
- 控制、管理所有软硬件资源。
- 高效、协调的。
- 提供良好的运行环境。
- 是最核心的、最基础的系统软件。
作用
- 服务用户观点——操作系统作为用户接口和公共服务程序。
- 进程交互观点——操作系统作为进程执行的控制者和协调者。
- 系统实现观点——操作系统作为扩展机或虚拟机。
- 资源管理观点——操作系统作为资源的管理者和控制者。
操作系统功能和特性
功能
从资源管理的观点来看,操作系统具有5项主要功能。
- 处理器管理
- 存储管理
- 设备管理
- 文件管理
- 连王郁通信管理
特性
操作系统作为并发系统,主要特性如下:
并发性
两个或两个以上的活动或事件在同一时间间隔内发生。发挥并发性能够消除计算机系统中硬部件之间的相互等待,有效。在微观上,多CPU执行称为并行性,指两个或两个以上的活动或事件在同一时刻发生。
共享性
计算机系统中的资源可被多个并发执行的程序共同使用,而不是被某个程序独占。
透明资源共享(宏观)
操作系统采用复用、虚拟和抽象技术创建虚拟机,每个应用程序在各自的虚拟机上运行,虚拟机是屋里计算机的仿真,操作系统通过共享硬件的方式来实现这种抽象。当应用程序在输入信息或打印输出时,感觉像是直接在控制硬件设备工作,但实际上所实用的是虚拟设备,通过透明方式共享物理输入机和打印机。
独占资源共享(互斥/显式资源共享)
同一时间段内只允许一个程序访问的资源称为独占资源,有些物理设备以及某些共享数据和表格都是独占资源。只能互斥访问和使用,否则会破坏数据。因此操作系统提供显式资源共享机制。
资源共享是由程序的并发执行而引起的,若系统不允许程序并发执行,也就不存在资源共享问题;资源共享是支持并发性的基础,若系统不能对资源共享实施有效的管理,会影响并发性。
异步性
在多道程序环境中允许多个程序并发执行,并发活动会导致随机事件的发生,由于资源有限程序众多,程序执行不连贯,走走停停,程序运行阶段不可预知。所以操作系统需要确保捕捉任何随机事件,正确地处理可能发生的随机事件及其序列。
操作系统的形成与发展
多道程序设计与操作系统形成
多道程序设计:允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。
CPU利用率 = 1 - p^n
其中,p^n指所有程序都等待I/O操作的概率,n称为多道程序的道数或度数。
假设计算机内存容量为1MB,操作系统程序占用200KB内存,其余空间允许4道程序共享,每道程序占用200KB,若80%的时间用于等待I/O操作。
则在忽略操作系统开销的前提下,CPU利用率=1-0.8^4,约等于59%。
若现在增加1MB内存空间后,多道程序可从4道增加至9道,则CPU利用率为1-0.8^9,约等于87%。
多重处理系统指配置多个物理处理器,能真正同时执行多道程序的计算机系统。
实现多道程序设计必须妥善解决以下三个问题
- 存储保护与程序浮动
- 处理器管理与分配
- 资源管理与调度
操作系统发展与分类
批处理操作系统
特点:单道/多道成批集中处理,多道程序运行,作业周转时间长。作业脱机工作。
优点:系统资源利用率高,作业吞吐量大。
分时操作系统
思路:多个联机用户同时使用一个计算机系统在各自终端上进行交互式会话,程序、数据和命令均在会话过程中提供,以问答方式控制程序运行。
批处理操作系统和分时操作系统虽然有共性,都基于多道程序设计技术,但它们存在如下不同点:
- 追求目标不同:批处理以提高系统资源利用率和作业吞吐率作为目标;后者强调公平性,对联机用户立即型命令快速响应。
- 适应作业不同:批处理适应已调试好的大型作业;后者适应正在调试的小型作业。
- 资源利用率不同:批处理可以合理安排不同负载的作业,使资源利用率达到最佳;后者让多终端作业使用相同类型的编译系统、系统运行时,系统调度开销较少,能够公平地调配CPU和内存资源。
实时操作系统
当外部事件或数据产生时,能够对其予以接收并以足够快的速度进行处理,所得结果能够在规定时间内控制生产过程或对控制对象做出快速响应,并控制所有实时任务协调运行的操作系统。
若某个操作系统兼具批处理、分时和实时处理的全部或两种功能,则称作通用操作系统。
操作系统基本服务和用户接口
基本服务和用户接口
操作系统要为应用程序的执行提供良好的运行环境和各种服务。
操作系统通过『程序接口』和『操作接口』将服务与功能提供给用户。
程序接口与系统调用
内核提供一些具有预定功能服务例程,通过系统调用接口呈现给用户,将应用程序的请求传送到内核,调用相应服务例程完成所需处理,再将结果返回给应用程序。内核的主体是系统调用的集合,可将内核的服务例程看成特殊的公共子程序。
POSIX(Portable Operating System Interface)标准为不同平台下的应用程序提供了相同的应用程序接口(API,Application Program Interface)。
由于系统调用而引起处理器中断的机器指令称为『访管指令』、『自陷指令』或『中断指令(interrupt)』。
系统调用实现要点:
- 编写系统调用服务例程
- 设计系统调用入口地址表
- 陷阱处理机制,开辟现场保护区
实现应用程序和系统调用之间传递参数所采用的方法:
- 访管指令、自陷指令的自带参数,叫做直接参数。可规定访管指令后若干单元存放参数。
- 在指令之后紧邻单元中存放参数地址,叫做间接参数。
系统调用与函数调用之间的区别:
- 调用形式和实现方式不同。函数调用所转向的地址是固定不变的;系统调用不包含内核服务例程入口地址,只能按照功能号调用。函数调用在用户态执行,只能访问用户栈;系统调用要通过陷阱机制,从用户态转到内核态,服务例程在内核态执行并访问核心栈。
- 被调用代码的位置不同。函数调用是静态调用,修改后必须重新编译链接;系统调用是动态调用。
- 提供方式不同。函数调用通常由编程语言提供,不同语言提供函数功能、类型和数量可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、类型和数量固定不变。