【C++后台开发面经】面试总结第五波:操作系统面试题合集

前言

      面试总结第五波,主要针对操作系统相关的面试题总结。

操作系统面试题合集

1、进程和线程的区别:系统分配调度/CPU分配调度;独立内存单元/共享进程内存

2、进程通信:无名管道/有名管道、信号、消息队列、共享内存、套接字、信号量 

3、线程同步的方式:互斥量、条件变量、信号量 

4、死锁:多个进程或线程为争夺某种资源而又互相等待其他进程或线程释放它的状态。

互斥条件、请求和保持条件、不可剥夺条件、环路等待条件

资源一次性分配、当进程新的资源未得到满足时,释放已有资源、系统给每类资源赋予一个序号,每个进程按编号递增顺序请求资源,释放则相反。

死锁解除:进程终止(终止所有死锁进程和一次只终止一个进程直到取消死锁循环为止)、资源抢占(从一个或多个死锁进程那里抢占一个或多个资源) 

5、进程状态:就绪(等待分配处理机资源)、运行(占用处理机资源运行)、阻塞(等待某种条件)、终止 

6、线程状态:创建、就绪、运行、阻塞、等待、时间等待、消亡 

7、段式存储:将程序地址空间划分为代码段、数据段、堆栈段。每个进程有一个二维地址空间,相互独立,互不干扰。优点:没有碎片(因为段大小可变,改变段的大小来消除内碎片);缺点:段换入换出,会产生外碎片(如4k的段换5k的段,会产生1k的外碎片)。

页式存储:将程序虚拟地址划分为固定大小的页,而物理内存划分为同样大小的帧,程序加载时,可以将任意一页放入内存中任意一帧,这些帧不必连续,从而实现了离散分离。优点:没有外碎片(因为页的大小固定),但会产生内碎片(一个页可能填充不满)。 

不同点:1)目的不同:分页是由于系统管理的需要,它是信息的物理单位;分段是为了用户的需要,它是信息的逻辑单位,它含有一组其意义相对完整的信息。2)大小不同:页的大小固定由系统决定;段的长度却不固定,由所完成的功能决定。3)地址空间不同:页向用户提供一维地址空间;段向用户提供二维地址空间。4)信息共享:页的保护和共享受到限制;段是信息的逻辑单元,便于存储保护和信息的共享。5)内存碎片:页式管理没有外碎片,但有内碎片;段式管理没有内碎片,但有外碎片。

 8、操作系统中进程调度:1)先来先服务,队列实现,非抢占;2)最短作业优先调度,平均等待时间最短,但难以知道下一个CPU区间长度;3)优先级调度,低优先级进程无穷等待CPU;4)时间片轮询调度,时间片到了,该进程被抢占放回就绪队列;5)多级队列调度,把就绪队列分成多个独立的队列,每个队列都有自己的调度算法,队列之间采用固定优先级抢占调度;6)多级反馈队列调度,允许进程在队列之间移动。

9、进程同步:原子操作、信号量机制、自旋锁管理、分布式系统 

10、虚拟内存:虚拟内存允许执行进程不必完全在内存中。每个进程拥有独立的地址空间,这个进程空间被分为大小相等的多个块、称为页,每个页都是一段连续的地址。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻进行必要的映射;当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令。

对于进程而言,逻辑上似乎有很大的内存空间,实际上其中一部分对应物理内存上的一块(称为帧),还有一些没加载在内存中的对应硬盘上。

11、虚拟内存的应用与优点:1)在内存中可以保留多个进程,系统并发度提高;2)解除了用户与内存之间的紧密约束,进程可以比内存的全部空间还大。 

12、上下文切换:从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换前,会保存上一个任务的状态。

进程上下文切换与线程上下文切换最主要的区别就是:线程的切换虚拟空间内存是相同的,即不需要切换虚拟地址空间,而进程切换的虚拟空间内存是不同的。

同时,这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。 

13、临界资源:对于某些资源来说,其在同一时间只能被一个进程所占用,这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等。

对于临界资源的访问,必须是互斥进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。 

14、线程池、进程池、内存池(程序预先从操作系统申请一块足够大内存,此后,当程序需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取;同理,当程序释放内存的时候,并不真正将内存返回给操作系统,而是返回内存池) 

15、系统调用:程序的执行一般是在用户态下执行的,但当程序需要使用操作系统提供的服务时,比如打开某一设备、创建文件、读写文件等,就需要向操作系统发出调用服务的请求, 

16、MMU(内存管理单元):1)在操作系统初始化或者分配、释放内存时,会执行一些指令在物理内存中填写页表,然后用指令设置MMU,告诉MMU页表在物理内存中的什么位置;2)设置好后,CPU每次执行访问内存的指令都会自动引发MMU做查表和地址转换的操作,地址转换操作完全由硬件完成,不需要用指令控制MMU去做。

MMU还提供内存保护机制,各种体系结构都有用户模式和特权模式,允许访问权限又分为可读、可写和可执行三种。 

17、内存技术:虚拟内存、内存池、缓存淘汰LRU 

你可能感兴趣的:(面经)