操作系统面试题集

1. 进程与线程的区别

  • 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位
  • 线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位
  • 进程拥有独立的地址空间,而线程间共享地址空间

2. 什么是死锁?死锁产生的必要条件,如果避免?

死锁是指多个进程因循环等待资源而造成无法执行的现象。死锁会造成进程无法执行,同时会造成系统资源的极大浪费(资源无法释放),

  • 主要原因

  • 系统资源不足

  • 进程运行推进顺序不合适

  • 资源分配不当

  • 四个必要条件(都成立,才会发生死锁):

    • 互斥条件:一个资源每次只能被一个进程使用
    • 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
    • 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺
    • 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系
  • 死锁避免

    • 银行家算法:判断此次请求是否造成死锁若会造成死锁,则拒绝该请求

3. 线程同步的方式

  • 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
  • 信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量
  • 事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

4. 进程通信方式有哪些?

主要包括:管道、系统IPC(包括消息队列、信号量、共享存储)、Socket

  • 普通管道(PIPE)是一种半双工的通信方式、数据只能单向流动,并且只能在具有亲源关系的进程间流动,这种关系通常为夫子关系
  • 命名管道(Name_PIPE)也是一种半双工的通信方式,它允许非亲缘关系的进程间进行通信
  • 信号量是一个计数器,用来控制多个进程间多资源的访问,它通常作为一个锁机制
  • 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
  • 共享内存就是映射一段能被其他进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问

5. 什么是缓冲区溢出?危害是什么?原因是什么?

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

  • 危害
    • 程序崩溃,导致拒绝服务
    • 跳转并且执行一段恶意代码
  • 原因
    • 未检出用户非法输入

6. 进程有哪几种状态?

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

7. 分页与分段的区别

  • 相似之处:
    • 都采用离散分配方式,且都要通过地址映射机制来实现地址转换
  • 不同之处:
    • 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的
    • 段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定
    • 段向用户提供二维地址空间;页向用户提供的是一维地址空间
    • 段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

8. 操作系统中进程调度策略

  • FCFS(先来先服务)
  • 优先级
  • 时间片轮转
  • 多级反馈

9. 页面置换算法

  • FIFO算法:先入先出,即淘汰最早调入的页面。
  • OPT(MIN)算法:选未来最远将使用的页淘汰,是一种最优的方案,可以证明缺页数最小。可惜,MIN需要知道将来发生的事,只能在理论中存在,实际不可应用。
  • LRU(Least-Recently-Used)算法:用过去的历史预测将来,选最近最长时间没有使用的页淘汰(也称最近最少使用)。性能最接近OPT。与页面使用时间有关。
  • LFU(Least Frequently Used)算法:即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。与页面使用次数有关

10. 什么是虚拟内存

  • 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存

11. 中断的概念

  • 中断(英语:Interrupt)是指 处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。

12. 待更新


参考链接

常见面试题整理--操作系统篇(每位开发者必备)

你可能感兴趣的:(操作系统面试题集)