软件工程复试———操作系统

操作系统的定义/操作系统是什么/操作系统的作用?

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

操作系统的目标和功能?(什么是操作系统?)

1.操作系统是计算机资源的管理者

  • 处理机管理(进程控制、进程同步、进程通信、死锁处理、处理机调度)
  • 存储器管理(提高内存利用率,内存的分配与回收、地址映射、内存保护与共享、内存扩充)
  • 文件管理(计算机中的信息都是以文件的形式存在的)
  • 设备管理(完成用户的I/O请求,方便用户使用设备、并提高设备的利用率)

2.操作系统为用户提供使用计算机硬件系统的接口

  • 命令接口(用户通过控制台或终端输入操作命令,向系统提供各种服务要求)
  • 程序接口(由 系统调用 组成,用户在程序中使用这些系统调用来请求操作系统为其提供服务)
  • 图形接口 最常见的 图形用户界面GUI (最终还是通过调用程序接口实现的)

3.操作系统用作扩充机器

没有任何软件支持的计算机称为裸机,实际呈现在用户面前的计算机系统是经过若干层软件改造 的计算机。操作系统将裸机改造成功能更强、使用更方便的机器。我们将覆盖了软件的机器称为 扩充机器或虚拟机。

操作系统的运行机制?

操作系统是计算机系统中最基本的软件之一,它控制着计算机的硬件资源,并提供各种服务和功能,如进程管理、内存管理、文件系统管理、网络管理等。操作系统的运行机制主要包括以下几个方面:

①内核模式和用户模式

操作系统中的程序分为内核态和用户态两种模式。内核态下的程序拥有系统资源的全部权限,可以访问所有的硬件资源,而用户态下的程序只能访问有限的资源,不能直接访问硬件资源。当程序需要执行一些需要访问系统资源的操作时,需要从用户态切换到内核态。

②进程管理

进程是指正在执行的一个程序的实例。操作系统负责管理进程的创建、调度和销毁。操作系统为每个进程分配一定的资源,如内存空间、文件描述符等,并维护进程的状态信息,如进程ID、优先级、CPU时间等。操作系统根据不同的调度算法,决定哪些进程应该占用CPU资源并进行调度。

③内存管理

内存管理是操作系统中非常重要的一部分,它负责分配、回收和保护计算机的内存资源。操作系统为每个进程分配一定的内存空间,以便程序能够运行。在内存资源不足的情况下,操作系统需要通过一些算法来进行内存的回收和重新分配,以保证系统的正常运行。

④文件系统管理

文件系统管理是指操作系统对文件的存储、管理和保护。操作系统维护一个文件目录,并为每个文件分配一个唯一的文件名。在文件被创建时,操作系统会分配一定的磁盘空间,并维护文件的元数据,如创建时间、修改时间、文件权限等。操作系统为文件提供了一系列的操作,如读、写、删除等。

⑤网络管理

操作系统也负责计算机网络的管理,包括网络连接、网络协议、数据传输等。操作系统需要维护一个网络状态表,记录计算机的网络连接状态,并为不同的网络协议提供支持。

总之,操作系统的运行机制涉及多个方面,涵盖了计算机系统中的各个方面。操作系统通过控制计算机的硬件资源,为用户和应用程序提供了各种服务和功能,使计算机系统得以正常运行。

如何从用户态切换到内核态

用户态切换到内核态(也称为核心态)通常由以下几种方式触发:

  • 系统调用:用户态程序通过特定的指令(例如在 x86 架构中的 int 0x80 或 syscall 指令)发起系统调用,触发中断并进入内核态执行相关操作。
  • 异常:例如分页异常、保护异常、除法错误等,会触发中断并进入内核态处理。
  • 外部中断:例如硬件设备(如键盘、鼠标、网络适配器等)发送的中断信号,会触发中断并进入内核态处理。

切换到内核态时,操作系统会保存用户态程序的状态(例如寄存器值),并执行内核态代码处理中断或系统调用。处理完成后,操作系统会恢复用户态程序的状态并从内核态切换回用户态,继续执行用户态程序。

内核态切换到用户态

内核态切换到用户态通常发生在以下情况:

  • 系统调用或中断处理完成:当内核态代码完成对系统调用或中断的处理后,会将处理器从内核态切换回用户态,继续执行用户态程序。
  • 调度切换进程:当操作系统调度器决定将处理器分配给另一个用户态进程时,会先从当前内核态切换到用户态,然后开始执行新进程的用户态代码。

在切换到用户态时,操作系统会恢复用户态程序的状态(例如寄存器值)并将处理器状态从内核态切换为用户态。这样用户态程序就可以从上次中断或系统调用前的位置继续执行。

中断和异常?

1.中断的引入——为了支持CPU和设备之间的并行操作

中断也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断 等。这一类中断通常是与当前执行的指令无关的事件。

2.异常的引入——表示CPU执行指令本身时出现的问题

异常也称内中断、例外或陷入,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越 界、算术溢出、缺页异常等。对异常的处理一般要依赖与当前程序的运行现场,不能被屏蔽。

中断执行的流程

中断处理过程的五个阶段:

1、中断请求阶段;

2、中断判优阶段,有硬件判优和软件判优两种方法;

3、中断响应阶段,CPU向中断源发出中断响应信号;

4、中断服务阶段;

5、中断返回阶段,返回到原程序的断点处,恢复硬件现场,继续执行原程序。

系统调用?为什么要有系统调用/系统调用的功能

计算机系统的各种硬件资源是有限,为了更好的管理这些资源,进程是不允许直接操作的,所有 对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这 个入口就是操作系统提供的系统调用.

系统调用的功能:

(1)系统调用可以为用户空间提供访问硬件资源的统一接口,以至于应用程序不必去关注具体的硬件访问操作。

(2)系统调用可以对系统进行保护,保护系统的稳定和安全

微内核

  • 由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的 部分根据分层的原则划分成若干服务,相互独立。
  • 在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核 态,其余模块运行在用户态。
  • 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。

进程及特点

(1) 进程是程序的一次执行。

(2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

(3) 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

在引入了进程实体的概念后,我们可以把传统OS中的进程定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。

进程的特征:

(1)动态性

进程的实质是进程实体的一次执行过程。

(2)并发性

这是指多个进程实体同存于内存中,且能在一段时间内同时运行。

(3)独立性

指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位;

(4)异步性

指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行

程序:

计算机程序是一组计算机能识别和执行的指令,程序是静态的,可以永存,没用并发性

进程和程序的区别

①进程与程序不是一一对应的,一个程序可以对应多个进程

②进程是相对暂时的,程序是可以永存的

③进程是动态的,它由创建而产生,由调度而执行,由撤消而消亡,而程序是一组有序指令的集合,其本身并不具有运动的含义,因而是静态的

④进程具有并发性,而程序在并发执行的具有不可再现性因为不能并发执行,所以程序没有并发性

⑤进程是系统进行资源分配和调度的一个独立单位,而程序不是。

线程的概念和定义

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单 位。一条线程指的是进程中一个单一顺序的控制流,每条线程执行不同的任务。

线程和进程的区别?

1.进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的 基本单位;

2.线程依赖于进程而存在,一个进程至少有一个线程;

3.进程有自己的独立地址空间,线程共享所属进程的地址空间;

4.进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行 中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、 I/O、cpu等;

5.在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境 的设置,而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可 见,进程切换的开销远大于线程切换的开销;

6.线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进 程间通信(IPC)的方式进行;

7.多线程程序只要有一个线程崩溃,整个程序就崩溃了,但多进程程序中一个进程崩溃并不会对 其它进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮

什么是协程?

协程:协程是微线程,在子程序内部执行,可在子程序内部中断,转而执行别的子程序,

在适当的时候再返回来接着执行。

协程和线程的区别

(1)线程是由CPU调度,而协程是由用户调度

(2)线程存在安全问题,协程比线程安全

(3)线程使用同步机制,协程使用异步机制

为什么协程比线程切换的开销小?

(1)协程执行效率极高。协程直接操作栈基本没有内核切换的开销,所以上下文的切换非常

快,切换开销比线程更小。

(2)协程不需要多线程的锁机制,因为多个协程从属于一个线程,不存在同时写变量冲突,

效率比线程高。避免了加锁解锁的开销

*介绍一下进程之间的通信。

为了提高计算机系统的效率.增强计算机系统内各种硬件的并行操作能力.操作系统要求

程序结构必须适应并发处理的需要.为此引入了进程的概念。而进程并行时,需要考虑进程间 的通信,进程间通信主要有以下几种方式:匿名管道、命名管道、信号、消息队列、共享内存、 信号量、Socket(套接字)

(2019计算机)进程的工作状态以及各状态间的转换过程

进程的工作状态有新建态、执行态、就绪态、阻塞态,结束态

(1)就绪态->执行态 : 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪态转变成执行态

(2)执行态->就绪态 : 处于执行状态的进程在其执行过程中,因分配给它一个时间片已用完而不得不让出处理机,于是进程就由执行态转变为就绪状态

(3)执行态->阻塞态 : 正在执行的进程因等待某种事件发生而无法执行时,便从执行状态变成阻塞状态。

(4)阻塞态->就绪态: 处于阻塞状态的进程,若其等待的事件发生,进程由阻塞态转变为就绪状态。

同步和互斥?

1.同步

多个进程因为合作而使得进程的执行有一定的先后顺序。比如某个进程需要另一个进程提供的消 息,获得消息之前进入阻塞态;

2.互斥

多个进程在同一时刻只有一个进程能进入临界区

3.同步机制的4个准则

  • 1.空闲让进
  • 当无进程处于临界区,可允许一个请求进入临界区的进程立即进入自己的临界区
  • 2.忙则等待
  • 当已有进程进入自己的临界区,所有企图进入临界区的进程必须等待
  • 3.有限等待
  • 对要求访问临界资源的进程,应保证该进程能在有限时间内进入自己的临界区
  • 4.让权等待
  • 当进程不能进入自己的临界区,应释放处理机

死锁

1.死锁的定义

是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力 作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等 待的进程称为死锁进程。

2.死锁原因:

  • ① 系统资源不足(对不可剥夺资源的竞争)
  • ② 进程推进顺序不当(P1拥有A申请B,P2拥有B申请A)
  • ③信号量使用不当也会造成死锁。进程间彼此相互等待对方发来的信息,结果也会使得这些进程间无法继续向前推进。

3.产生死锁的必要条件:

  • ① 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占 用。
  • ② 请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其 它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
  • ③ 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释 放
  • ④ 环路等待条件:指在发生死锁时,必然存在一个进程资源的环形链。

4.处理死锁的基本方法:

  • ① 预防死锁:这是一种较简单和直观的事先预防的方法。方法是通过设置某些限制条件,去破坏 产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一种较易实现的方 法,已被广泛使用。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统 吞吐量降低。
  • ② 避免死锁:该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生 死锁的的四个必要条件,而是在资源的动态分配过程中,用 某种方法去防止系统进入不安全状 态,从而避免发生死锁。
  • ③ 检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全 区,此方法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死 锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死 锁清除掉。
  • ④ 解除死锁:这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死 锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源 分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行

什么是饥饿?与死锁有什么差别?

等待时间给进程推进和响应带来明显影响时成为进程饥饿。

饥饿并不代表系统已经死锁,但至少有一个程序的执行被无限期地推迟。

差别:

① 进入饥饿的进程可以只有一个,但是死锁必须大于等于两个;

② 出于饥饿状态的进程可以是一个就绪进程,但是死锁状态的进程必定是阻塞进程。

进程调度的几种方式?

进程调度(Process Scheduling)是指操作系统决定将CPU分配给哪个进程(Process)执行的过程。

①先来先服务

FCFS算法比较有利于长作业(进程),而不利于短作业(进程)

缺陷:对待短作业(进程)不公平,如果他们排在队列后面,则其等待时间远大于其执行时间

②短进程优先

短进程优先:

则是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。

③时间片轮转

在时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片

当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。

④基于优先级的调度算法

该算法是把处理机分配给就绪队列中优先级最高的进程。

该算法分两种类型:

  • 非抢占式优先权算法:在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成
  • 抢占式优先权调度算法:在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程的执行,重新将处理机分配给新到的优先权最高的进程。

⑤剩余时间最短者优先

剩余时间最短者优先调度算法是按各进程剩余执行时间最短的进程优先调度。

必须记录各进程过去的服务时间,才能求出剩余的时间。

⑥高响应比优先调度算法

⑦多级反馈队列调度法

(1)设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。

(2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。

(2019计算机)调度是什么?内存怎么进行管理?

处理机调度:就是从就绪队列中按照某种的算法选择一个进程并将处理机分配给它,以实现进程的并发运行。

操作系统的调度有三个层次,分别是高级调度、中级调度和低级调度

常见的内存管理方式有分区存储管理、页式管理、段式管理和虚拟存储管理

串行调度和并行调度

串行调度和并行调度都是指计算机程序的调度方式。

串行调度是指一次只执行一个任务,一个任务的完成后才能执行下一个任务。在串行调度中,各个任务之间是串行关系,前一个任务的执行结果影响后一个任务的执行。

而并行调度是指同时执行多个任务。在并行调度中,各个任务之间是并行关系,彼此之间相互独立,各自进行计算。

在计算机系统中,为了提高程序的执行效率和资源利用率,通常采用并行调度方式,例如多线程、多进程等技术。但是,在某些情况下,串行调度也是必要的,例如保证程序的正确性、避免资源竞争等。

总的来说,串行调度和并行调度各有优缺点,需要根据具体情况进行选择。

覆盖技术和交换技术?

1.覆盖技术:

把一个大的程序划分为一系列覆盖,每个覆盖是一个相对独立的程序单位,把程序执行时并不要 求同时 装入内存的覆盖组成一组,成为覆盖段,这个覆盖段分配到同一个存储区域,这个存储区 域成为覆盖区,它与覆盖段一一对应。覆盖段的大小由覆盖段中最大的覆盖来确定。

2.交换技术:

把暂时不用的某个程序及数据部分从内存移到外存中去,以便腾出必要的内存空间;或者把指定 的程序或数据从外存读到相应的内存中,并将控制权交给他,让其在系统上运行的一种内存扩充 技术。处理器的中级调度就是采用交换技术。

3.区别:

① 与覆盖技术相比,交换技术不要求程序员给出的 程序段之间的覆盖结构;

② 交换技术主要在进程和作业之间进行,覆盖技术主要在同一个进程或作业中进行;交换技术主 要在进程和作业之间进行,覆盖技术主要在同一个进程或作业中进行;

③ 覆盖技术只能覆盖于覆盖程序段无关的程序段,交换进程由换出和换入两个过程组成。覆盖技 术只能覆盖于覆盖程序段无关的程序段,交换进程由换出和换入两个过程组成。

内存连续分配管理方式有哪些?

1.单一连续分配

2.固定分区分配

3.动态分区分配

页面置换算法有哪些?

1.最佳(OPT)置换算法

从主存中移出永远不再需要的页面;

2.先进先出(FIFO)置换算法

是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存 时间最长的页面进行淘汰,即先进入主存的页面先淘汰。

3.最近最久未使用(LRU)算法

这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推 测未来的行为

4.时钟(CLOCK)置换算法

基本分页管理和基本分段管理的区别

  • 分页:页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率。 或者说,分页仅仅是由于系统管理的需要不是用户的需要。
  • 分段:段是信息的逻辑单位,它含有一组其意义相对完整的信息,分段的目的是为了能更好的满足用户的需要。 分段:段的长度不固定,决定于用户所编写的程序,通常由编译程序在对流程序进行编译时,根据信息的性质来划分。
  • 分页的作业地址空间是一维的,程序员标记地址只需要一个标记符;
  • 分段的作业地址是二维的,程序员标记一个地址,既需要给出段名,也需要给出段内地址

在内存管理中,内部碎片和外部碎片各指的是什么?在固定式分区管理、可 变式分区分配、页式虚拟存储系统、段式虚拟存储管理中,各会存在何种碎片?为什么?

答:内部碎片:指已经被分配出去却不能被利用的内存空间。

①外部碎片:

指还没有被分配出去,但因其太小而无法分配给申请内存空间的新进程 的内存空闲区域。

②固定分区管理:存在内部碎片。

因为固定分区管理的每一个分区大小固定且分配给 指定的进程,所以整个分区都属于一个进程,但如果进程比分区小, 就会留下无法利用的内存空间。

③可变式分区分配:存在外部碎片。

因为每个分区大小不固定,所以不可能分配给一 个进程多余的空闲区域,但是由于进程需要一段连续的空闲区域, 而内存中小的空闲区域可能满足不了进程的需求,就成了无法分配 出去的外部碎片。

④页式虚拟存储系统:存在内部碎片。

因为页的大小是固定的,每个进程的大小不会 都刚好是页大小的整数倍,所以进程的最后一页往往都会存在一些 已经分配给该进程但无法利用的空间。

⑤段式虚拟存储管理:存在外部碎片。

因为一个段的分配需要连续的区域,而段长又 不固定,所以内存中会存在一些小的空闲区域不能分配给任何一段, 就成了无法分配出去的外部碎片。

操作系统中虚拟内存的作用是什么?

虚拟内存是操作系统中一种重要的内存管理技术,它将主存分成大小相等的若干个固定大小的块,称为页面(Page),同时也将存储器分成大小相等的块,称为页框(PageFrame),虚拟内存通过将进程的虚拟地址空间映射到物理内存中的页框上,从而实现了进程地址空间的隔离和保护。

虚拟内存的作用包括:

1. 扩展主存:虚拟内存可以将主存和磁盘组合起来形成一个更大的地址空间,使得应用程序可以使用比实际可用的物理内存更大的虚拟内存。

2. 简化内存管理:虚拟内存将内存管理的复杂性从应用程序中转移到操作系统中,应用程序只需要访问虚拟内存,而不需要了解物理内存的具体细节。

3. 提高程序的运行效率:虚拟内存可以使程序能够更有效地利用物理内存,将当前正在运行的进程所需的页面置于物理内存中,并根据需要调入/调出其他页面,以此实现进程的快速响应和高效运行。

4. 实现内存隔离和保护:虚拟内存可以为每个进程提供独立的地址空间,防止进程之间的地址空间相互干扰和互相访问。此外,虚拟内存还可以为每个进程提供访问权限的保护,确保每个进程只能访问其拥有的内存区域。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值