定义
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
特征
并发
并发指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
OS的并发性是通过分时实现的。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
并发性:两个或多个事件在同一时间间隔内发生。
并行性:两个或多个事件在同一时刻发生,需要硬件支持,如多流水线或多处理机硬件环境。
多道程序环境下,一段时间,宏观上,多道程序同时执行某一时刻,单处理机环境下实际仅有一道程序执行,微观上程序分时交替执行
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
应用:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。
同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
应用:使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。
所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件:
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟处理器:通过时分复用技术,让多道程序并发执行的方法,来分时使用一个处理器的。
虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专门为它服务。
虚拟存储器:通过空分复用技术,将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。当然,这时用户所感觉到的内存容量是虚的。
虚拟I/O设备:采用虚拟设备技术将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备,使原来仅允许在一段时间内由一个用户访问的设备(即临界资源)变为在一段时间内允许多个用户同时访问的共享设备。
异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
功能
为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时,操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。
操作系统是系统资源的管理者
处理机管理
即对进程的管理,包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
存储器管理
方便程序运行、用户使用及提高内存的利用率,包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
文件管理
计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。
文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
向上层提供方便易用的服务
命令接口
用户利用这些操作命令来组织和控制作业的执行。
联机命令接口:即交互式命令接口,适用于分时或实时系统。
“雇主”说一句话,“工人”做一件事,并做出反馈,这就强调了交互性。
脱机命令接口:即批处理命令接口,适用于批处理系统
“雇主”把要“工人”做的事写在清单上,“工人”按照清单命令逐条完成这些事,这就是批处理。
程序接口
程序接口由一组系统调用(也称广义指令)组成。是为编程人员提供的接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
用户通过在程序中使用系统调用命令请求OS为其提供服务。系统调用命令又称广义指令。
GUl:图形化用户接口(Graphical User Interface)
用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。
是最接近硬件的一层软件
裸机:没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础。
在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
例:
手工操作阶段(此阶段无操作系统)
用户在计算机上算题的所有工作都要人工干预,如程序的装入、运行、结果的输出等。
批处理阶段(操作系统开始出现)
单道批处理系统:引入脱机输入输出技术
特征:
优点:缓解人机速度矛盾。
缺点:资源利用率仍低,高速CPU等待低速I/O。
多道批处理系统:多道程序设计技术操作系统开始出现
多道程序设计:允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种硬/软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
特点:
技术实现:
优点:
缺点:用户响应时间长、无人机交互能力
分时操作系统
分时技术:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
多个用户通过终端同时共享一台主机,用户可以同时与主机进行交互操作而互不干扰。
特点
优点
用户请求可以被即时响应,解决了人机交互问题。
允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:无法优先处理紧急任务
实时操作系统
能在某个时间限制内完成某些紧急任务而不需要时间片排队。
分类:
软实时系统:能够接受偶尔违反时间规定且不会引起永久性的损害。
如飞机订票系统、银行管理系统。
硬实时系统:某个动作必须绝对地在规定的时刻(或规定的时间范围)发生。
如飞行器的飞行自动控制系统。
特点
优点:能够优先处理紧急任务
网络操作系统和分布式计算机系统
网络操作系统:把计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。
分布式计算机系统:由多台计算机组成并满足下列条件的系统,主要特点是分布性和并行性。
分布式操作系统与网络操作系统的本质不同:分布式操作系统中的若干计算机相互协同完成同一任务。
个人计算机操作系统
个人计算机操作系统是目前使用最广泛的操作系统,它广泛应用于文字处理、电子表格、游戏中。
常见的有Windows、Linux和MacOS等。
操作系统发展历程如下图所示。
此外,还有嵌入式操作系统、服务器操作系统、智能手机操作系统等。
例
在计算机系统中,通常CPU执行两种不同性质的程序:
特权指令和非特权指令
CPU的运行模式
应用程序运行在用户态,操作系统内核程序运行在核心态。
内核态一>用户态:一条修改PSW的特权指令
用户态一>内核态:应用程序向操作系统请求服务时通过使用访管指令,从而产生一个中断事件将操作系统转换为核心态。
分层管理
一些与硬件关联较紧密的模块,如时钟管理、中断处理、设备驱动等处于最低层。
其次是运行频率较高的程序,如进程管理、存储器管理和设备管理等。
这两部分内容构成了操作系统的内核。这部分内容的指令操作工作在核心态。
操作系统内核功能
内核(Kernel)是计算机上配置的底层软件,它管理着系统的各种资源,可以看作是连接应用程序和硬件的一座桥梁。由很多内核程序组成操作系统内核。
时钟管理
计时:是时钟的第一功能,操作系统需要通过时钟管理,向用户提供标准的系统时间。
进程切换:通过时钟中断的管理实现。
例如,在分时操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。
中断机制
中断作用:
引入原因:提高多道程序运行环境中CPU的利用率。
现代操作系统是靠中断驱动的软件
原语
由若干条指令组成的,用于完成一定功能的一个过程。
特点:
定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。
系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。
系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。
为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:
核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
中断作用
让操作系统内核强行夺回CPU的控制权;使CPU从用户态变为内核态。
中断和异常的分类
异常:又称内中断,指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。
中断:又称外中断,指来自CPU执行指令外部的事件,通常用于信息输入/输出,如I/O中断,时钟中断。
可屏蔽中断:指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。
不可屏蔽中断:指通过NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的。
故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。
异常不能被屏蔽,一旦出现,就应立即处理。
中断和异常的处理过程
当CPU在执行用户程序的第i条指令时检测到一个异常事件,或在执行第i条指令后发现一个中断请求信号,
则CPU打断当前的用户程序,然后转到相应的中断或异常处理程序去执行。
若中断或异常处理程序能够解决相应的问题,则在中断或异常处理程序的最后,CPU通过执行中断或异常返回指令,回到被打断的用户程序的第i条指令或第i+1条指令继续执行
返回第i+1条指令:由自陷(Trap)引起的内中断;如系统调用。由外部设备引起的外中断,如键盘
返回第i条指令:由故障(Fault)引起的内中断;如缺页等。
若中断或异常处理程序发现是不可恢复的致命错误,则终止用户程序。
通常情况下,对中断和异常的具体处理过程由操作系统(和驱动程序)完成。
定义
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务,系统调用可视为特殊的公共子程序。又称广义指令。程序接口由一组系统调用组成。目的为解决资源分配问题
分类
系统调用过程
系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。
用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务。
访管指令不是特权指令,访管指令是在用户态使用的,所以它不可能是特权指令。
系统调用执行过程:
传递系统调用参数→执行陷入(trap)指令→执行相应的服务程序→返回用户态
用户态转向核心态的例子:
只能在核心态下执行的指令(特权指令):
注意:由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。
与库函数的区别
例:
分层法
分层法是将操作系统分为若干层,最底层(层0)为硬件,最高层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)。
模块化
模块化是将操作系统按功能划分为若干具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。各模块还可划分成子模块,子模块之间也规定好接口。
模块划分应考虑其划分大小,及独立性,衡量独立性有两个标准:
优点:
①提高了操作系统设计的正确性、可理解性和可维护性;
②增强了操作系统的可适应性;
③加速了操作系统的开发过程。
缺点:
宏内核
又称大内核或单内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。
微内核
微内核构架,是指将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。
那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。
微内核架构=微内核+多个服务器
微内核内容
服务器(进程)
用于提供对进程(线程)进行管理的进程(线程)服务器、
提供虚拟存储器管理功能的虚拟存储器服务器等,
它们都是作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现交互的。下图为单机环境下的客户/服务器模式。
微内核基本功能
①进程(线程)管理。
如进程(线程)之间通信、切换、调度以及多处理机之间的同步。
②低级存储器管理。
如用于实现将逻辑地址变换为物理地址等的页表机制和地址变换机制,这一部分是依赖于硬件的,因此放入微内核。
③中断和陷入处理。
捕获所发生的中断和陷入事件,并进行中断响应处理,在识别中断或陷入的事件后,再发送给相关的服务器来处理
微内核特点
微内核缺点:需要频繁地在核心态和用户态之间切换,性能低
应用:鸿蒙OS、实时、工业、航空及军事应用。
外核(exokernel)
内核负责进程调度、进程通信等功能;外核在内核态运行,负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
任务:为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。每个用户层的虚拟机可以运行自己的操作系统,但限制只能使用已经申请并且获得分配的那部分资源。
优点
缺点
概念
BIOS 程序(Basic Input/Output System)
BIOS 是固化在主板上的基本输入输出系统,是计算机启动第一个运行的软件,存放在ROM中。它会进行硬件初始化和自检,然后查找引导程序并执行。
引导程序(Boot)
引导程序是存储在主存ROM中的一段小程序,它的作用是将操作系统的内核文件从硬盘中读取到内存中,并跳转到内核入口点开始执行。
主引导记录(MBR)
MBR是硬盘的主引导记录,位于硬盘的第一个扇区。它包含了磁盘引导程序和分区表。该引导程序会找到活动分区并读取其分区引导记录,完成硬盘的引导。
分区引导记录(PBR)
PBR是分区引导记录,位于每个分区的第一个扇区。PBR中包含了一个引导程序,可以寻找并激活分区根目录下的启动管理器,完成分区的引导过程。
引导过程
引导过程:
注:操作系统最终被加载到 RAM 中。
定义
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。
分类
第一类虚拟机程序
第一类虚拟机管理程序就像一个操作系统,因为它是唯一一个运行在最高特权级的程序。
它在裸机上运行并且具备多道程序功能。虚拟机管理程序向上层提供若干台虚拟机,这些虚拟机是裸机硬件的精确复制品。由于每台虚拟机都与裸机相同,所以在不同的虚拟机上可以运行任何不同的操作系统。
虚拟内核态:虚拟机作为用户态的一个进程运行,不允许执行敏感指令。然而,虚拟机上的操作系统认为自己运行在内核态(实际上不是),称为虚拟内核态。
第二类虚拟机程序
它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。
如VMware Workstation。
对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统;运行在虚拟机管理程序上的操作系统称为客户操作系统。
首次启动时,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。然后将操作系统安装到虚拟磁盘上(其实只是宿主操作系统中的一个文件)。客户操作系统安装完成后,就能启动并运行。
对比
第一类VMM | 第二类VMM | |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在Host OS之上,依赖于Host OS为其分配物理资源 |
资源分配方式 | 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于"外核“的分配方式,分配未经抽象的物理硬件 | GuestOs拥有自己的虚拟磁盘,该盘实际上是HostOs文件系统中的一个大文件。GuestOs分配到的内存是虚拟内存 |
性能 | 性能更好 | 性能更差,需要Host Os作为"中介” |
可支持的虚拟机数量 | 更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机 | 更少,Host Os本身需要使用物理资源,Host OS上运行的其他进程也需要物理资源 |
虚拟机的可迁移性 | 更差 | 更好,只需导出虚拟机镜像文件即可迁移到另一台Host Os上,商业化应用更广泛 |
运行模式 | 第一类VMM运行在最高特权级(Ring 0),可以执行最高特权的指令。 | 第二类VMM部分运行在用户态、部分运行在内核态。GuestOs发出的系统调用会被VMM截获,并转化为VMM对Hostos的系统调用 |