测开面试 | 操作系统相关问题整理

1、 进程与线程的区别?

  • 进程:独立数据空间,进程间不共享数据,系统调度
  • 线程:执行程序的最小单元,进程内线程间同步资源,系统调度
  • 一个进程可以有多个线程,多个线程也可以并发执行

2、 进程有哪些状态?

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

3、 进程同步与互斥的区别?
互斥:

  • 某一资源同时只允许一个访问者对其进行访问
  • 具有唯一性和排他性
  • 互斥无法限制访问者对资源的访问顺序,即访问是无序的

同步:

  • 基于互斥,经其他机制实现访问者对资源的有序访问
  • 大多数情况下,同步已经实现了互斥,写入资源是互斥的
  • 少数情况下,可以允许多个访问者同时访问资源

4、 进程间通信包括哪些?

  • 管道:半双工通信方式,数据单向流动,父子进程间
  • 命名管道:半双工通信方式,无亲缘关系进程间通信
  • 信号量:计数器,锁机制,控制多进程对资源访问
  • 消息队列:消息链表,存放在内核中由消息队列标识符标识
  • 信号:比较复杂的通信方式,通知进程某个事件已经发生
  • 共享内存:映射一段能被多个进程可访问的内存

5、 进程的调度算法有哪些?

  • 先来先服务(FCFS, First Come First Service)
  • 短作业优先(SJF, Shortest Process Next)
  • 时间片轮转调度算法(RR, Round Robin)
  • 高响应优先(HRRN, Highest Response Ratio Next)
  • 优先权调度算法
  • 多级队列调度算法

6、 死锁产生的原因?

  • 1、 资源竞争;2、 进程推进顺序不当
  • 必要条件:互斥、不剥夺、请求与保持、环路等待
  • 预防死锁:破坏四个必要条件之一

7、 页面的置换算法都有哪些?

  • 最佳置换算法
  • 先进先出置换算法
  • 最近最久未使用置换算法
  • Clock 置换算法(最近未使用算法)
  • 最少使用置换算法

8、 makefile 的作用是什么?(http://www.ruanyifeng.com/blog/2015/02/make.html)

  • 定义规则,指定哪些文件先编译、后编译、重新编译
  • makefile 的好处,自动化编译
  • makefile 需要 make 工具解释执行

9、 什么是虚存、实存、共享内存?
虚存(VIRT = SWAP + RES):

  • 进程“需要的”虚拟内存大小
  • 包括进程使用的库、代码、数据,以及 malloc、new 分配的堆空间和分配的栈空间等
  • 申请 10 MB,使用 1 MB,增长 10 MB

实存(RES = CODE + DATA):

  • 包括使用中的 malloc、new 分配的堆空间和分配的栈空间,但不包括 swap out 量
  • 包含其他进程的共享
  • 虚存包括实存
  • 申请 10 MB,使用 1 MB,增长 1 MB

共享内存(SHR):

  • 自身,也包括其他进程的共享内存
  • 进程只使用了几个共享库的函数,但包含整个共享库大小
  • 某个进程所占的物理内存大小:RES - SHR
  • swap out 后,它将会降下来

欢迎关注微信公众号"测试开发Stack"

posted @ 2019-05-20 18:44  Shengjie  阅读(571)  评论(0编辑  收藏  举报