计算机复试 -- 操作系统

操作系统

什么是操作系统?

操作系统 管理和控制计算机硬件和软件资源计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。

操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机交互,为其他应用软件提供支持等,使计算机系统所有资源最大限度的发挥作用。

进程和程序的区别:

1、动静:进程是动态的,程序是静态的。进程是程序的执行,程序是有序代码的集合。

2、时间:进程是暂时的,程序的永久的。进程是一个状态变化的过程,程序可以永久保存。

3、组成:进程和程序的组成不同进程包含程序、数据和进程控制块

4、联系:进程和程序是密切相关的。通过多次执行,一个程序可以对应多个进程;通过调度关系,一个进程可以包含多个程序

5、进程可以创建其他进程,但是程序不能形成新的程序。

进程和线程的区别:

1、调度:线程是独立调度的基本单位进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同进程中进行线程切换,将会引起进程切换。

2、拥有资源:进程是拥有资源的基本单位,而线程一般不拥有资源(除了少量资源,比如栈、程序计数器、寄存器),不过线程可以访问其隶属进程的系统资源。

3、并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程内的多个线程之间也可以并发执行,提高系统的吞吐量,系统的并发性也更好。

4、系统开销:在创建进程和撤销进程时,系统都要为之分配或回收资源,所以操作系统为进程付出的系统开销远大于创建线程的开销。

5、同步和通信:多线程之间的同步和通信容易实现。

作业和进程的区别

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。

作业是用户需要计算机完成单位某项任务,是要求计算机所做工作的集合。

其主要区别如下:

1、作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行,而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任意进程,只要被创建,总有相应的部分存在于内存中,

2、一个作业可以由多个进程组成,且必须至少由一个进程组成,反过来则不成立

3、作业的概念主要用于批处理系统中,UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中进程是操作系统进程资源分配的单位。在Windows下,进程又被细化为线程,也就是一个进程下有多个能单独运行的更小的单位。

4、作业调度:外存-->内存(频率低)开始工作

   进程调度:内存-->CPU(并发性,频率高) 工作时

什么是微内核?(华为鸿蒙OS 微内核)

宏内核,就是操作系统的所有功能都绑定到一起,作为一个进程被发起,可以理解为一个单一的进程,开机后它自己启动自己,然后从事管理工作。

微内核相对于宏内核而言的,微内核,就是操作系统有很多程序/进程组成。系统在运行时,不同的进程负责不同的事务。进程之间可以通过通讯,来进行协调。没有一个可以控制一切的进程存在。

什么是DMA?什么是中断,二者的区别?

DMADirect memory access):是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐量。(直接存储器存取)

中断:是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。

所以中断和DMA的区别在于是否有CPU参与

硬中断和软中断是什么?有什么区别

软中断:软中断发生的时间是由程序控制的,中断源发中断请求或软中断信号后,CPU或接受进程在适当的实际自动进行中断处理,或完成软中断信号对应的功能;

硬中断:硬中断时硬件实现的中断,是程序运行时设备对它的中断,硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等待较长时间。

页面置换算法有哪些?什么是LRU

为了便于在内存中找到进程的每个页面对应的物理块,系统为每个进程建立一张页面映射表。页表由页表项组成,页表项有页号和块号组成,根据页表项就可以找到每个页号对于物理内存中的物理块的块号。

1、最佳置换算法(OPT):在预知一个进程的页面号引用串的情况下,每次都淘汰以后不再使用的或以后最迟再被使用的页面。该算法不能实现,只能作为一个标准来衡量其他置换算法的优劣。

2、先进先出算法(FIFO):每次总是淘汰最先进入内存的页面,也就是将在内存中驻留时间最长的页面淘汰。(可能产生Belady异常,缺页次数随着分配的物理块的增加而增加)

3、最近最少使用算法(LRU):选择最近最少未被使用的页面进行淘汰,其思想是用以前的页面引用情况来预测将来会出现的页面的引用情况。医用局部性原理。

4、时钟置换算法(CLOCK):这种算法只是模型像时钟,其实就是一个环形链表的第二次机会算法,表针指向最老的页面,缺页中断时,检查表指针指向的页面,(R=0是淘汰页面,R=1清除R并向前移动指针)

操作系统中的磁盘调度算法

磁盘调度算法的目的:使磁盘的平均寻道时间最少

1、先来先服务算法:按照进程请求访问磁盘的先后顺序进行调度

2、SCAN算法:在当前磁头移动方向上,选择与当前磁头所在磁道最近的请求,作为下一个的服务对象。

3、FSCAN算法,把请求队列分成两个子队列将新出现的请求放在一个队列中

 

操作系统中的信号量

信号量是一个确定的二元组(sq),其中s是一个具有非负初值的整型变量,q是一个初始状态为空队列。整型变量s表示系统中某些资源的数目,其值大于0时,表示系统中当前可用资源的数目;当其值小于0时候,其绝对值表示系统中隐请求该资源而被阻塞的进程数目。

信号量分类:

1、整型信号量:所谓的整型信号量就是一个用于表示资源个数的整型量

2、记录型信号量(资源信号量):就是用一个结构体实现,里面包含了表示资源个数的整形量一个等待队列

信号量的应用:实现进程同步,实现进程互斥

PV操作

信号量的值除了初值外,仅能有这PV原语加以改变。PV操作以原语形式(不会被线程调度机制打断的操作,称原子操作实现,保证了对信号量进行操作过程中不会被打断或阻塞P操作相当于申请资源V操作相当于释放资源P操作和V操作必定成对出现。但未必在同一进程中。

 

操作系统中用到的数据结构

链表:进程管理-PCB的连接;外存分配方式-链接分配

队列:进程通信-消息队列的实现;处理机调度-任务就绪队列的实现;存储器管理-CLOCK置换算法的实现(循环队列)

栈:存储器管理-LRU置换算法

树:进程管理-进程家族关系描述-进程树,进程树是一个形象化的比喻,比如一个进程启动了一个程序,而启动的这个进程就是原来那个进程的子进程,依次形成一个树形的结构,我们可以在进程管理器选择结束进程树,就可以结束其子进程和派生的子进程

散列表内存管理-连续分配方式Hash算法);文件管理(Hash文件)

 

简述操作系统中系统调用过程

1、用户态-->系统态,此时CPU环境中有中断程序,需将CPU的通用寄存器内容压入堆栈,然后再将用户定义的参数传送带指定的地址保存起来

2、分析系统调用类型,转入相应的系统调用处理子程

3在系统调用处理子程序执行完后,应恢复被中断的设置新进程的 CPU 现场,然后返回被中断进程或新进程,继续往下执行

虚拟存储器,以及相关算法

基于局部性原理,应用程序在运行之前,仅将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂时留在盘上。从应用程序的角度,让应用程序认为它拥有连续的可用内存,即一个完整的地址空间

从用户角度出发,该系统的内存容量比实际内存容量大很多,故成这样的存储器为虚拟存储器。

存储管理应具有的功能

存储管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器,故有以下功能:

1、内存的分配和回收:实施内存的分配,回收系统或用户释放的内存空间

2、地址变换:提供地址变换功能,将逻辑地址转换为物理地址

3、扩充内存:借助于虚拟存储技术及其自动覆盖技术,为用户提供比内存空间大的地址空间,从逻辑上扩充内存

4、存储保护:保证进入内存的各道作业都在自己的存储空间内运行,互不干扰

界限寄存器:上下界寄存器方法、基址、限长寄存器方法

存储保护键:给每个存储块分配一个单独的存储键,它相当于一把锁

Cache的基本工作原理

TLB (快表)的作用是在处理器访问内存数据的时候做地址转换 并行查询能力的特殊高速缓冲寄存器。 TLB 中存放了一些页表文件,文件中记录了虚拟地址和物理地址的映射关系当应用程序访问一个虚拟地址的时候,会从 TLB 中查询出对应的物理地址,然后访问物理地址。

Cache通常由两部分组成,块表快速存储器.

其工作原理是处理机按主存地址访问存储器主存-Cache地址映射机构借助查块表判定该地址的存储单元是否在Cache,如果在Cache命中Cache地址访问Cache否则,Cache不命中则需要访问主存并从主存中调入相应数据块到CacheCache中已写满则要按某种算法将Cache中的某一块替换出去修改有关的地址映射关系

 Cache和主存之间的映射方式

1、直接映射就是将主存地址映射到Cache中的一个指定地址.

2、全相联映射就是任何主存地址可映射到任何Cache地址的方式.

3、组相联映射指的是将存储空间的页面分成若干组,各组之间的直接映射,而组内各块之间则是全相联映射.

程序的装入方式有哪些?

补充:应用程序从用户编写的源文件到内存中执行的过程大致分为三个阶段:编译、链接、装入

 

1、绝对装入:在编译时就知道程序将要驻留在内存的物理地址编译程序产生含有物理地址的目标代码,不适合多道程序的执行

2、可重定向装入:根据内存当前情况,将装入模块装入到内存的适当位置,地址变换通常在装入时一次完成,之后不再改变,也称为静态重定向。当操作系统为程序分配一个以某地址为起始地址的连续主存区域后,重定向时程序中指令或操作数的逻辑地址加上这个起始地址就可以得到物理地址

3、动态运行装入:允许程序运行时在内存中移动位置,把装入模块装入到内存后的所有地址都是相对地址,在程序执行过程中每当访问到响应指令或数据时,才将要访问的程序或数据的相对地址转换为物理地址。动态重定向的实现要依靠硬件地址变换机构。

链接方式

1、静态链接:在程序运行之前,先把各个目标模块及所需库链接为一个完整的可执行程序,以后不再拆开

2、装入时动态链接:将应用程序编译后所得到的一组目标模块在装入内存时采用边装入边链接的链接方式

3、运行时动态链接:知道程序运行过程中需要一些模块时,才对这些模块进行链接

 

交换技术和覆盖技术的区别

覆盖技术:把一个大的程序划分为一系列覆盖,把程序执行时并不要求同时装入内存的覆盖为一组,成为覆盖段,为了解决内存容量大小的问题,打破了必须将一个程序全部信息装入内存后才能运行的限制

交换技术:把暂时不用的某个程序及数据部分从内存移到外存中去,以便腾出必要的内存空间

区别:

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

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

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

内存连续分配管理有哪些

1、单一连续分配(静态分配)、

2、固定分区分配(分区大小可以不等但必须事先确定,运行时不能改变)

3、动态分区分配

① 首次适应算法 First Fit② 循环首次适应算法 Next Fit③ 最佳适应算法 Best Fit④ 最差适应算法 Worst Fit

连续分配方式,是指为一个用户程序分配一个连续的内存空间。

非连续分配方式允许一个程序分散的装入不相邻的内存分区,根据分区的大小是否固定分为分页存储管理方式和分段存储管理方式。

内部碎片和外部碎片

内部碎片:分配给作业的存储空间中未被利用的部分

外部碎片:系统中无法利用的小存储块,比如通过动态内存分配技术从空闲内存区上分配内存后剩下的那部分内存块。

什么是拼接技术?

在分区管理方式下,系统运行一段时间后,内存中会出现相当一部分的碎片拼接技术是解决碎片问题的方法。通过移动把多个分散的小分区拼接成一个大分区的方法叫做拼接技术。

进程的三个状态及其转换

就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源
运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU
阻塞状态: 进程等待某种条件,在条件满足之前无法执行

 

进程调度算法有哪些?(再详细了解其中的算法思想)

① 先来先服务调度 FCFS② 短作业优先调度 SJF③ 优先级调度 Priority④ 时间片轮转调度 RR
⑤ 高响应比优先调度⑥ 多级队列调度⑦ 多级反馈队列调度、

死锁:

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

死锁原因:1系统资源不足、2、进程推进顺序不当

产生死锁的必要条件:

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

处理死锁的基本方法:找到进程号,kill进程

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

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

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

差别:

1、进入饥饿的进程可能只有一个,但是死锁必须大于等于两个

2、处于饥饿状态的进程可能是一个就绪进程,但是死锁状态的进程必定是阻塞进程

银行结算法:

主要是思想是避免系统进入不安全状态,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先试行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正是分配上述资源,否则拒绝分配上述资源。这样就保证系统时钟处于安全状态,从而避免死锁现象的发生。

什么是缓冲区溢出?有什么危害?其原因是什么?

  缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

  危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

造成缓冲区溢出的主原因是程序中没有仔细检查用户输入的参数。

分段和分页

  页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

  段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

  页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

实时系统的基本特性

 所谓实时操作系统,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配,因此,其处理事务的能力较强、速度较快。

什么是临界区?如何解决冲突?

  每个进程中访问临界资源那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。

  (1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;

  (2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;

  (3)进入临界区的进程要在有限时间内退出以便其它进程能及时进入自己的临界区;

  (4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现忙等现象

posted @ 2020-03-22 19:41  TOWERB  阅读(553)  评论(0编辑  收藏  举报