面试知识总结——操作系统

1. 进程和线程的区别?

共享资源:同一进程内的线程共享本进程的资源,但是进程之间的资源是独立的。
切换难度:CPU切换一个线程比切换进程花费小。
通信方式:线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。

2. 进程的通信方法?

  • 共享内存
  • 管道 PIPES FIFO
  • 消息机制

3. 进程的同步方法?

  • 临界区(单进程里多线程同步)
  • 互斥量Mutex
  • 信号量(PV操作)

4. 进程的调度算法?

FCFS SJC 优先级 最高响应比 时间片轮转

5. 什么是死锁?死锁的四个必要条件是什么?

死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。四个条件:互斥条件,请求与保持条件,不可剥夺条件,循环等待条件。

6. 如何解决死锁?

  • 预防死锁:破坏死锁四个条件的后三个
  • 避免死锁:防止系统进入不安全状态,从而避免发生死锁(银行家算法)
  • 检测死锁并解除:解除方法包括资源剥夺法、撤销进程法和进程回退法。

7. 操作系统里面物理内存和虚拟内存的概念?虚拟内存的好处?

物理内存就是内存条的内存,虚拟内存是利用磁盘空间虚拟出的一块逻辑内存。
虚拟内存的好处:

  • 节省内存资源,拿出一部分硬盘空间来充当内存使用,动态替换加载
  • 使得应用程序在逻辑上认为它拥有连续的可用的内存,方便管理
  • 提高安全性,程序员只知道逻辑地址

8. 线程安全,多线程,线程池有了解吗?

9. 计算机系统引入cache的原因?

计算机存储就是在“容量”和“速度”之间权衡 (trade off)。首先是 CPU 的缓存,其中又分 L1 L2 L3 等三级缓存,速度依次递减,容量依次提升。其次是内存,和 CPU 缓存相比,速度更慢,但容量更大。再次是硬盘(也包括外接存储设备),和内存比速度又更慢,容量又更大。此外还具有一种“断电依然可以保存”的性质,我们称为“可持久化”。其实原来还有再往后,称为“磁带机”。但硬盘现在已是白菜价,所以磁带机应该退出历史舞台了。总之它和硬盘相比,又一次的速度更慢,容量更大。所以总结来说,就是速度越快的,容量越小。而根据不同的匹配方法,有不同的用途特点。举例来说,在运行基本计算的时候,会把变量值存储在暂存器。这种情况容量要求低,速度要求高,就需要用到缓存;又比如说读写图片或者视频,容量要求高,因此就在硬盘上进行。如题主问题不设置 CPU 缓存而直接使用内存,那么一次简单的加减法都需要内存读取,CPU 的处理速度会比现在慢几千倍甚至更多。

10. 如何写出缓存友好的程序?

???

11. 计算机系统为什么要引入虚拟内存?虚拟内存的原理?

内存不够进程分配时可以利用虚拟内存技术。原理是根据内存的使用情况,动态的对程序部分内容在内存与外存中进行交换。

12. 操作系统分页管理机制?

内存管理:分页,分段,段页结合

13. 说一下内存碎片产生的原因?以及优化方法?

操作系统的分页机制有利于减少内存碎片的产生。某些情况下还可以实现堆栈分配器或者池分配器来管理内存,避免内存碎片的产生。如果要分配及释放不同大小的对象,并以随机次序进行,那这两种分配器也不适用,只能定期进行碎片整理。(见《游戏引擎架构》P229)

你可能感兴趣的:(面试知识总结,操作系统)