操作系统面试题集
2018-05-24 本文已影响0人
Briarbear
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)是指 处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。