【面试题】操作系统

匿名 (未验证) 提交于 2019-12-02 23:55:01

基础知识

1、操作系统的特性

  • 并发
  • 共享
  • 虚拟
  • 异步

2、操作系统的主要功能

  • 进程控制
  • 进程同步
  • 进程通信
  • 进程调度

3、程序并发的特征

  • 间断性
  • 失去封闭性
  • 不可再现性

4、程序的特征

  • 动态
  • 并发
  • 独立
  • 异步

5、程序的三态模型,五态模型

6、为什么要引入挂起状态

  终端用户需要、父进程需要、负荷调节需求、操作系统需求

7、引入挂起后的状态转换

8、进程控制块PCB的作用

  作为进程独立运行基本单位的标志,能够实现间接运行方式,提供经常管理所需要的信息,提供进程调度所需要的信息,实现与其他进程的同步与通信

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

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

  1. 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入
  2. 如果已有进程进入临界区,则其他所有试图进入临界区的进程必须等待
  3. 进入临界区的进程要在有限时间内退出,以便其他进程能及时进入临界区
  4. 如果进程不能进入临界区,应该让出CPU,避免进程出现“忙等”现象

10、进程同步机制应该遵循的规则

  空闲让进,忙则等待,有限时间,让权等待

11、进程同步经典问题

  • 生产者――消费者
  • 哲学家进餐问题
  • 读者――写者问题

12、进程间的通信如何实现?

  低级通信:效率低,生产者每次只能向一个缓冲池投放一个信息;通信对用户不透明,隐藏了通信的具体细节

  高级通信:用户可以利用操作系统所提供的一组通信命令传送大量数据。通信过程对用户是透明的。

       共享存储器系统、消息传递系统、管道通信系统、客户机――服务器系统

13、处理机调度的层次

  • 高级调度
  • 低级调度
  • 终极调度

14、作业调度算法

  • 时间片轮转法
  • 先来先服务算法 FSFS
  • 短作业优先调度算法 SJF
  • 优先级调度算法 PSA
  • 高响应比优先调度算法 HRRN

15、死锁:两个或多个进程被无限阻塞,互相等待的一种状态

  两个或多个并发进程中,如果每个进程持有某种资源,却又在等待别的进程释放资源,而且再未改变状态前无法向前推进,那么这一组进程产生了死锁。

16、死锁产生的四个条件

  1. 互斥:一个资源一次只能被一个进程使用
  2. 请求保持:一个进程因请求资源而阻塞时,对已持有的资源保持不放
  3. 不可抢占:进程已获得的资源在未使用完之前不能进行抢占
  4. 循环等待:若干进程之间形成一种头尾相接的循环等待资源的关系  

  • 破坏“请求保持”
  • 破坏“不可抢占式”
  • 破坏“循环等待”

18、避免死锁的方法

  • 系统安全状态
  • 银行家算法

19、连续分配存储管理方式

  • 单一连续分配
  • 固定分区分配
  • 动态分区分配

20、动态分区分配算法

  • 首次适应算法 FF
  • 循环首次适应算法 NF
  • 最佳适应算法 BF
  • 最坏适应算法 WF

21、Windows下的内存是如何管理的?

  Windows提供了3种方式管理内存

  1. 虚拟内存:管理大型对象、结构数组
  2. 内存映射文件:管理大型数据流和在单个计算机上运行多个进程之间的共享数据
  3. 内存堆栈:管理大量的小对象

22、为什么需要虚拟存储器

  有的作业很大,需求空间超过了内存总容量,导致作业不能运行

  大量作业要求运行,但内存容量不足,大量的作业停留在外存等待

  请求分页存储管理除了要求一定容量的内存和外存,还需要:

  • 请求页表机制
  • 缺页中断机制
  • 地址变化机制

24、虚拟存储器的页面置换算法

  在进程运行的过程中,若所要访问的页面不在内存,就需要将它调入内存,而在哪个页面调入,需要根据算法而定

  • 最佳置换算法 OPT
  • 先进先出算法 FIFO
  • 最近最久未用算法 LRU
  • 最少使用算法 LFU

使用算法进行置换

计算缺页

25、文件管理

26、磁盘管理


面试题

1、linux为什么要分内核态和用户态?

操作系统的核心是内核,独立于普通的应用程序,提供操作系统的最基本的功能(进程管理、内存管理、设备驱动程序、文件管理、和网络系统),可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。

区分用户态和内核态的原因:运行在用户态的程序不能访问操作系统内核,保证了内核的安全。给应用程序提供单一简单的接口,使得上层的应用程序不用去关注底层的实现

内核态下CPU可以执行任何指令,用户态下CPU只能执行非特权指令。

CPU处于内核态,可以随意进入用户态;

CPU处于用户态,只能通过软中断方式进入内核态。

一般程序开始时都处于用户态,当程序需要系统资源时,通过软中断进入内核态

## 参考:http://www.imooc.com/wenda/detail/542116

操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。

linux操作系统而言,高位的1G字节为内核空间;低位的3G字节为用户空间。

2、进程与线程的区别

(1)进程:进程是系统进行资源分配和调度的一个独立单位(程序段、相关数据段、PCB)

(2)线程:线程是进程的一个实体,是CPU调度和分配的基本单位。线程不拥有自己的资源,只拥有程序计数器、一组寄存器和栈区),它可以与同属一个进程的其他线程共享进程所拥有的全部资源

(3)关系:一个线程可以创建和销毁另一个线程,同属进程的多个线程可以并发执行。

     同属进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列

(4)区别:进程和线程是不同的操作系统资源管理方式。

    1)进程独立地址空间,更健壮(一个进程崩溃后不会影响其他进程);线程没有独立的地址空间,一个线程dang掉了整个进程就dang了

    2)切换:所以进程切换时消耗资源更大,效率低

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!