大家好,又见面了,我是你们的朋友全栈君。
文章目录
1 操作系统的基本概念
1.1 操作系统的概念
计算机系统自下而上可大致分为4部分:硬件、操作系统、应用程序和用户。而操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。在计算机系统的运行过程中,操作系统提供了正确使用这些资源的方法。
综上所述,**操作系统(Operating System, OS):**是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织、调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境的软件集合;它是计算机系统中最基本的系统软件。
1.2 操作系统的特征
操作系统的基本特征包括**并发、共享、虚拟和异步。**这些概念对理解和掌握操作系统的核心至关重要。
-
并发(Concurrence)
并发是指两个或多个时间在同一时间间隔内发生。操作系统的并发性则是指计算机系统中同时存在多个运行的程序,因此具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的就是为了使程序能并发执行。
注意同一时间间隔(并发)和同一时刻(并行)的区别。在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机环境下实际仅能有一道程序执行,因此微观上这些程序仍是分时交替执行的。操作系统的并发性使通过分时得以实现的。注意,并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境。
我们可以以一个现实生活中的直观例子来认识并发和并行的区别。例如,如果你在
9:00~9:10
仅吃面包,在9:00~9:20
仅写字,在9:20~9:30
仅吃面包,在9:30~10:00
仅写字,那么在9:00~10:00
吃面包和写字这两种行为就是并发执行的;那如果你在9:00~10:00
左手吃面包,右手同时写字,那么这两个动作就是并行执行的。 -
共享(Sharing)
资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为以下两种资源共享方式。
(1)互斥共享方式:系统中的某些资源,如打印机、磁带机等,虽然可供多个进程使用,但为使得所打印或记录的结果不一致造成混淆,应规定在一段时间内只允许一个进程访问该资源。为此,当进程A访问某个资源时,必须先提出请求,若此时该资源空闲,则系统将之分配给进程A使用,此后若有其他进程也要访问资源时(只要A未用完)就必须等待。仅当进程A访问完并释放该资源后,才允许另一个进程对该资源进行访问。我们把这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为**临界资源。**计算机系统中的大多数物理设备以及某些软件中所用的栈、变量和表格,都属于临界资源,它们都要求被互斥地共享。
(2)同时访问方式:系统中还有一类资源,这类资源允许在一段时间内由多个进程“同时”访问。这里说的“同时”通常是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问即“分时共享”的。可供多个进程“同时”访问的典型资源就是磁盘设备,一些用重入码编写的文件也可以被“同时”共享,即允许若干个用户同时访问该文件。
注意,互斥共享要求一种资源在一段时间内只满足一个请求,否则就会出现严重的问题,而同时访问共享通常要求一个请求分几个时间片段间隔地完成,其效果与连续完成效果相同。
并发和共享是操作系统两个最基本的特征,两者互为存在的条件:①资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题;②若系统不能对资源共享实施有效的管理,则必将影响到程序并发执行,甚至根本无法并发执行。
-
虚拟(Virtual)
虚拟是指把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实的,是实际存在的;而后者是虚的,是用户感觉上的事物。用于实现虚拟的技术,称为虚拟技术。操作系统中利用了多种虚拟技术来实现虚拟处理器、虚拟内存和虚拟外部设备等。
虚拟处理器技术是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器的。此时,虽然只有一个处理器,但它能为多个用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专门为他服务。利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。
操作系统的虚拟技术可归纳为:时分复用技术,如处理器的分时复用;空分复用技术,如虚拟存储器。
-
异步(Asynchronism)
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。
异步性使得操作系统运行在一种随机环境下,可能导致进程产生与时间有关的错误,就像对全局变量的访问顺序不当会导致程序出错一样。然而,只要运行环境相同,操作系统就须保证多次运行进程后都能获得相同的结果。
1.3 操作系统的目标和功能
为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。
我们用一个直观的例子来理解这种情况,假设用户是雇主,操作系统是工人(用来操作机器),计算机是机器(由处理机、存储器、设备、文件几个部件构成),工人有熟练的技能,能够控制和协调各个部件的工作,这就是操作系统对资源的管理;同时,工人必须接收雇主的命令,这就是“接口”;有了工人,机器就能发挥更大的作用,因此工人就成了“扩充机器”。
-
操作系统作为计算机系统资源的管理者
(1)处理机管理:在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。 进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
(2)存储器管理:存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
(3)文件管理:计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
(4)设备管理:设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
这些工作都由“工人”负责,“雇主”无须关注。
-
操作系统作为用户与计算机硬件系统之间的接口
操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。
(1)命令接口: 使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。联机命令接口又称交互式命令接口,适用于分时或实时系统的接口,它由一组键盘操作命令组成。可以理解为:“雇主”说一句话,“工人”做一件事,并做出反馈,这就强调了交互性。脱机命令接口又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。可以理解为:“雇主”把要“工人”做的事写在清单上,“工人”按照清单命令逐条完成这些事,这就是批处理。
(2)程序接口:程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,如使用各种外部设备、申请分配和回收内存及其他各种要求。严格来说,图形接口并不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。
-
操作系统实现了对计算机资源的扩充
没有任何软件支持的计算机称为裸机。它仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在里面,其外面是操作系统。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器;因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机。
“工人”操作机器,机器就有了更大的作用,于是“工人”便成了“扩充机器”。
1.4 综合应用题
-
说明库函数与系统调用的区别和联系。
库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(由用户态转向和心态)。
**
2 操作系统发展历程
2.1 手工操作阶段(此阶段无操作系统)
用户在计算机上算题的所有操作都需要人工干预。突出的两个缺点为:用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低;CPU等待手工操作,CPU的利用不充分。
唯一解决办法:用高速的机器代替相对较慢的手工操作来对作业进行控制。
2.2 批处理阶段(操作系统开始出现)
为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。按发展历程又分为单道批处理系统、多道批处理系统(多道程序设计技术出现以后)。
-
单道批处理系统
系统对作业的处理是成批进行的,但内存中始终保持一道作业。主要特征有:
- 自动性。在顺利的情况下,磁带上的一批作业能自动地逐个运行,而无须人工干预。
- 顺序性。各道作业完成顺序与它们进入内存的顺序在正常情况下应该完全相同。
- 单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入程序进入内存运行。
面临的主要问题:每次主机内存只能放入一道作业,每当它在运行期间发出I/O请求后,高速的CPU便处于等待低速的I/O完成的状态。为了进一步提高资源的利用率和系统的吞吐量,引入了多道程序技术。
-
多道批处理系统
多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种硬/软件资源。例如当一道程序因I/O请求而暂定运行时,CPU便立即转去运行另一道程序。
当然,多道批处理系统的设计与实现要比单道系统复杂很多,因为要充分利用各种资源,就涉及到各种资源的调度问题。主要特征有:
- 多道。计算机中同时存放多道相互独立的程序。
- 宏观上并行。同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕。
- 微观上串行。内存中的多道程序轮流占有CPU,交替执行。
在批处理系统中采用多道程序设计技术就形成了多道批处理操作系统。该系统把用户提交的作业成批地 送入计算机内存,然后由作业调度程序自由地选择作业运行。
-
分时操作系统
所谓分时技术,是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分给各联机作业使用。若某个作业在分配给它的时间片内不能完成计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。
分时操作系统是指多个用户通过终端同时共享一台主机,这些终端连接在主机上,用户可以同时与主机进行交互操作而互不干扰。分时系统也是支持多道程序设计的系统,但它不同于多道批处理系统。多道批处理是实现作业自动控制而无须人工干预的系统,而分时系统是实现人机交互的系统,这使得分时系统具有与批处理系统不同的特征。主要特征有:
- 同时性。也称多路性。指允许多个终端用户同时使用一台计算机。
- 交互性。用户能够方便地与系统进行人机对话。
- 独立性。系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感受不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样。
- 及时性。用户请求能在很短时间内获得相应(时间片轮转方式)。
-
实时操作系统
为了能在某个时间限制内完成一些紧急任务而不需要时间片排队,诞生了实时操作系统。在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完接收的事件。其主要特点是及时性和可靠性,但交互性不如分时系统。
-
网络操作系统和
网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
-
分布式操作系统
主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
-
个人计算机操作系统
目前使用最广泛的操作系统。常见的有Windows、Linux和Macintosh等。
3 操作系统运行环境
3.1 处理器运行模式
计算机系统中,通常CPU执行两种不同性质的程序:操作系统内核程序(或简称内核,内核是操作系统中最重要最核心的部分,也是最接近硬件的部分。Docker仅需Linux内核)和用户自编程序(即系统外层的应用程序,或简称“应用程序”)。对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”(即内核程序)要执行一些特权指令,而“被管理程序”(即用户自编程序)处于安全考虑不能执行这些指令。
- 特权指令,是指不允许用户直接使用的指令。如I/O指令、置中断指令等。
- 非特权指令,是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。
在具体实现上,将CPU的运行模式划分为用户态(目态)和核心态(又称管态、内核态)。处于用户态时,说明正在运行的是应用程序,此时只能执行非特权指令;处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
这个区分根据CPU中的一个寄存器:程序状态字寄存器(PSW),其中有一个二进制位,1表示“内核态”,0表示“用户态”。
内核态 ->
用户态:执行一条特权指令—修改PSW的标志位为“用户态”,这个动作意味着操作系统
将主动让出CPU使用权。
用户态->
内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺
回CPU的使用权。
3.2 中断和异常的概念
由于系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。那么需要在核心态上建立一些“门”,以便用户态进入核心态。“中断”是让操作系统内核夺回CPU使用权的唯一途径,如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。
3.3 系统调用
所谓系统调用,是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。
系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
4 操作系统结构
4.1 分层法
分层法将操作系统分为若干层,其中最底层(层0)为硬件,最高层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)。
4.2 模块化
模块化将操作系统按功能划分为若干具有独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。这种设计方法被称为模块—接口法。
4.3 宏内核和微内核
从操作系统的内核来划分,可以分为宏内核(也称单内核或大内核)和微内核。
宏内核是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
而微内核是指将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。那些移出内核的操作系统代码根据分层的原理被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。
4.4 操作系统引导过程
操作系统是一种程序,程序以数据的形式存放在硬盘中,通常分为多个区,一台计算机中又有多个或多种外部存储设备。操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别磁盘分区,识别磁盘分区上的操作系统,最后通过程序启动操作系统,一环扣一环地完成上述过程。
- 激活CPU。激活的CPU读取ROM的boot程序,将指令寄存器置为BIOS的第一条指令,即开始执行BIOS的指令。
- 硬件自检。启动BIOS程序后,先进行硬件自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动终止;如无故障,屏幕会显示CPU、内存、硬盘等信息。
- 加载带有操作系统的硬盘。硬件自检后,BIOS开始读取Boot Sequence,把控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中。
- 加载主引导记录MBR。注意到记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。
- 扫描硬盘分区表,并加载硬盘活动分区。
- 加载分区引导记录PBR。其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
- 加载启动管理器。
- 加载操作系统。
5 虚拟机
5.1 虚拟机的基本概念
虚拟机是一台逻辑计算机,是指利用特殊的虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境。有两类虚拟化方法。
-
第一类虚拟机管理程序
从技术上讲,第一类虚拟机管理程序就像一个操作系统,因为它是唯一一个运行在最高特权级的程序。它在裸机上与逆行并具备多道程序功能。虚拟机管理程序向上层提供若干台虚拟机,这些虚拟机是裸机硬件的精确复制品。由于每台虚拟机都与裸机相同,所以可以在不同的虚拟机上运行任何不同的操作系统。
-
第二类虚拟机管理程序
它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。第二类虚拟机管理程序仍然伪装成具有CPU和各种设备的完整计算机。VMware Workstation是首个X86平台上的第二类虚拟机管理程序。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154098.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...