计算机系统概述

一、操作系统的基本概念

1.操作系统的概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。

2.操作系统的目标和功能

为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。

2.1 作为系统资源的管理者

  1. 处理机管理:在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
  2. 存储器管理:存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
  3. 文件管理:计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
  4. 设备管理:设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。

2.2 向上层提供方便易用的服务

为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口。操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。

  1. 命令接口:使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。
    联机命令接口又称交互式命令接口,适用于分时或实时操作系统的接口。它由一组键盘操作命令组成。用户通过控制台或终端输入操作命令,向系统提出各种服务要求。用户每输入一条命令,控制前就转给操作系统的命令解释程序,然后又命令解释程序解释并执行输入的命令,完成指定的功能。之后控制权转回控制台或终端,此时用户又可输入下一条命令。
    脱机命令接口又称批处理命令接口,适用于批处理系统,它有一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业的运行。
  2. 程序接口:程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,如使用各种外部设备、申请分配和回收内存阶其他各种要求。
    当前最流行的是图形用户界面(GUI),即图形接口。GUI最终是通过调用程序接口实现的,用户通过鼠标和键盘在图形界面上单击或使用快捷键,就能很方便地使用操作系统。严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。

2.3 作为最接近硬件的层次

操作系统需要实现对硬件机器的拓展
没有任何软件支持的计算机称为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机

3.操作系统的特征

3.1 并发

并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
并行:指两个或多个事件在同一时刻同时发生。
操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

3.2 共享

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

  1. 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
  2. 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程同时对它们进行访问。
    所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)。

并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件:①资源共享是以程序的并发为条件的,若条件不允许程序并发执行,则自然不存在资源共享问题;②若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行。

3.3 虚拟

虚拟是指将一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实的,即实际存在的;而后者是虚的,是用户感觉上的事物。用于实现虚拟的技术称为虚拟技术。操作系统的虚拟技术可归纳为:时分复用技术,如虚拟处理器;空分复用技术,如虚拟存储器。

3.4 异步

多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。

二、操作系统发展历程

1.手工操作阶段(此阶段无操作系统)

用户在计算机上算题的所有工作都要人工干预,如程序的装入、运行、结果的输出等。随着计算机硬件的发展,人机矛盾(速度和资源利用)越来越大,必须寻求新的解决办法。
手工操作阶段有两个突出的缺点:①用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。②CPU等待手工操作,CPU利用不充分。

2. 批处理阶段(操作系统开始出现)

2.1 单道批处理系统

为了解决人机矛盾,引入脱机输入/输出技术,并由监督程序负责控制作业的输入、输出。
优点:缓解了一定程度的人机速度矛盾。资源利用率有所提升。
缺点:内存中仅能有一道程序运行,只有该程序结束之后才能调入下一道程序。CPU有大量的时间是在等待I/O完成。资源利用率依然很低。

2.2 多道批处理系统

每次往内存中读入多道程序。
操作系统正式诞生,用于支持多道程序并发运行。
优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)。

3.分时操作系统

计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
优点:用户请求可以被即时响应,解决了人机交互问题。允许用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

4.实时操作系统

优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。

  1. 硬实时系统:必须在绝对严格的规定时间内完成处理。(如导弹控制系统、自动驾驶系统)
  2. 软实时系统:能接受偶尔违反时间规定。(如12306火车订票系统)

5.网络操作系统

是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机的结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。

6.分布式操作系统

分布式操作系统是由多台计算机组成并满足下列条件的系统:系统中任意两台计算机通过通信方式交换信息;系统中的每台计算机都具有相同的地位,即没有主机也没有从机;每台计算机上的资源为所有用户共享;系统中的任意台计算机都可以构成一个子系统,并且还能重构;任何工作都可以分布在几台计算机上,由它们并行工作、协同完成。用于管理分布式计算机系统的操作系统称为分布式操作系统。该系统的主要特点是:分布性和并行性。分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干计算机相互协同完成同一任务。

7.个人计算机操作系统

个人计算机操作系统是目前使用最广泛的操作系统,它广泛应用于文字处理、电子表格、游戏中,常见的由Windows、Linux、MacOS等。

此外,还有嵌入式操作系统、服务器操作系统、智能手机操作系统等。

三、操作系统的运行环境

1.操作系统的运行机制

一条高级语言的代码翻译过来可能会对应多条机器指令,程序运行的过程其实就是CPU执行一条一条的机器指令的过程。
普通程序员写的程序就是“应用程序”。
负责实现操作系统的程序员写的是“内核程序”。由很多内核程序组成了“操作系统内核”,简称“内核(Kernel)”。
内核时操作系统最重要最核心的部分,也是最接近硬件的部分。
应用程序只能使用“非特权指令”,如:加法指令、减法指令等。
操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许内核来使用。
在CPU设计和生产时就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。

CPU有两种状态,“内核态”和“用户态”
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示内核态,0表示用户态。
内核态、用户态的切换:
内核态->用户态:执行一条特权指令——修改PSW的标志位为用户态,这个动作意味着操作系统将主动让出CPU使用权。
用户态->内核态:由“中断”引发,硬件自动完成状态转变,触发中断信号意味着操作系统将强行夺回CPU的使用权。
除了非法使用特权指令之外,还有很多事件会触发中断信号,一个共性是,但凡需要操作系统介入的地方都会触发中断信号。

2.中断和异常

中断时让操作系统夺回CPU使用权的唯一途径。
如果没有中断机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。

2.1 异常

异常,也称内中断,指的是中断信号来源于CPU内部。
若当前执行的指令是非法的,则会引发一个中断信号。例如:试图在用户态下执行特权指令、除0操作。
有时候应用程序向请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号。执行陷入指令,意味着应用程序主动地将CPU控制权还给操作系统内核。系统调用就是通过陷入指令完成的。

2.2 中断

中断,也称外中断,指的是中断信号来源于CPU外部,与当前执行的指令无关。每一条指令结束时,CPU都会例行检查是否有外中断信号。
例如:时钟中断——由时钟部件发来的中断信号。时钟部件每隔一个时间片会给CPU发送一个时钟中断信号。
I/O中断——由输入/输出设备发来的中断信号。当输入输出任务完成时,向CPU发送中断信号。

2.3 中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
显然中断处理程序一定是内核程序,需要运行在内核态。

3.系统调用

系统调用时操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统地稳定性和安全性,防止用户进行非法操作。
系统调用的过程:传递系统调用参数->执行陷入指令(Trap/访管,用户态)->执行相应的内核程序处理系统调用(内核态)->返回应用程序

四、操作系统体系结构

1.分层结构

内核分多层,每层可单向调用更第一层提供的接口。
优点:1. 便于调试和验证,自底向上逐层调试验证。2.易扩充和易维护,各层之间调用接口清晰固定。
缺点:1.仅可调用相邻低层,难以合理定义各层的边界。2.效率低不可跨层调用,系统调用执行时间长。

2.模块化

将内核划分为多个模块,各模块之间相互协作。
内核=主模块+可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理。
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。
优点:1.模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。2.支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统到内核),增强OS适应性。3.任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点:1.模块间的接口定义未必合理、实用。2.模块间相互依赖,更难调试和验证。

3.宏内核(大内核)

所有的系统功能都放在内核里(大内核结构的OS通常叶采用了模块化的设计思想)
优点:性能高,内核内部各种功能都可以直接相互调用。
缺点:1.内核庞大功能复杂,难以维护。2.模块间相互依赖,更难调试和验证。

4.微内核

只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态。
优点:1.内核小功能少、易于维护,内核可靠性高。2.内核外的某个功能模块出错不会导致整个系统崩溃。
缺点:1.性能低,需要频繁的切换用户态/内核态。2.用户态下的各种功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。

5.外核

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点:1.外核可直接给用户分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。2.减少了虚拟硬件资源的映射层,提高效率。
缺点:1.降低了系统的一致性。2.使系统变得更复杂。

五、操作系统引导

操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统,一环扣一环地完成上述过程。
常见操作系统的引导过程如下:
①激活CPU:激活的CPU读取ROM(只读存储器)中的boot程序,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令,即开始执行BIOS的指令。
②硬件自检:BIOS程序在内存最开始的空间构建中断向量表,接下来的POST过程要用到中断功能。然后进行通电自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息。
③加载带有操作系统的硬盘。通电自检后,BIOS开始读取Boot Sequence(通过CMOS里保存的启动程序,或者通过与用户交互的方式),将控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中。
④加载主引导记录(MBR):硬盘以特定的标识符区分引导硬盘和非引导硬盘。如果发现一个存储设备不是可引导盘,就去检查下一个存储设备。如无其他启动设备,就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。
⑤扫描硬盘分区表,并检查硬盘活动分区:MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表,进而识别含有操作系统的硬盘分区(活动分区)。找到硬盘活动分区后,开始加载硬盘活动分区,将控制权交给活动分区。
⑥加载分区引导记录(PBR):读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR),其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
⑦加载启动管理器。分区引导记录搜索活动分区中的启动管理器,加载启动管理器。
⑧加载操作系统。将操作系统的初始化程序加载到内存中执行。

六、虚拟机

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(VM),每个虚拟机器都可以独立运行一个操作系统。
同义术语:虚拟机管理程序/虚拟机监控程序/Virtual Machine Monitor/Hypervisor
第一类VMM
对物理资源的控制权:直接运行在硬件之上,能直接控制和分配物理资源。
资源分配方式:在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件。
性能:性能更好。
可支持的虚拟机数量:更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机。
虚拟机的可迁移性:更差。
运行模式:第一类VMM运行在最高特权级(Ring 0),可以执行最高特权的指令。

第二类VMM
对物理资源的控制权:运行在Host OS之上,依赖于Host OS为其分配物理资源。
资源分配方式:Guest OS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件。Guest OS分配到的内存是虚拟内存。
性能:性能更差,需要Host OS作为中介。
可支持的虚拟机数量:更少,Host OS本身需要使用物理资源,Host OS上运行的其他程序也需要物理资源。
虚拟机的可迁移性:更好,只需导出虚拟机镜像文件即可迁移到另一台Host OS上,商业化应用更广泛。
运行模式:第二类VMM部分运行在用户态、部分运行在内核态。Guest OS发出的系统调用会被VMM截获,并转化为VMM对Host OS的系统调用。

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h665_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值