大长面试避免不了的就是操作系统的相关知识点的考察,以下是我自己面试中遇到的以及常见的操作系统面试知识点。有关理解可能存在偏差,可以留言指正。

1.进程和线程

1.1 概念

进程:

系统进行资源分配的基本单位,有独立的内存地址空间

线程:

程序执行的最小单位,比进程更小的独立运行的基本单位,线程也被称为轻量级进程

1.2 为什么会有线程

请求多的时候如果为每一个请求创建一个进程,系统开销大响应用户请求效率低,因此引入线程

1.3 进程和线程的区别

  • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间
  • 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、CPU,但是进程之间的资源是相互独立的

一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮
进程切换时,消耗的资源大,效率高

  • 执行过程:每个独立的进程有一个程序运行的入口,顺序执行序列。但是线程不能独立运行
  • 线程是处理器调度的基本单位,但是进程不是
  • 两者均可并发执行

1.4优缺点

线程执行开销小,但不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行
进程执行开销大,但是能够很好的进行资源管理和保护

1.5进程的地址空间布局

从上到下是栈区,堆区,未初始化数据区,初始化数据区,代码区

1.6进程间通信的方法

  • 管道

半双工通信,如果要同时读写,要创建两个管道,分为有名管道和无名管道,无名管道只用于亲缘进程间

  • 信号量

它是一个计数器,用于为多个进程提供对共享数据对象的访问。

  • 消息队列
  • 共享内存

映射一段能被其他进程访问的内存,优点:无需复制 缺点:需要解决进程间的同步问题

  • 套接字

可用于不同机器间的进程通信

1.7进程的创建

  • 创建一个PCB
  • 分配内存
  • 初始化PCB
  • 将PCB放入相应的队列中( 进程有执行,阻塞,就绪三个状态)

1.8进程的终止

进程不再执行,但是PCB会保留一个记录(状态码和一些计时统计数据供其他进程收集,一旦收集完成,PCB完全清空)

1.9进程调度算法

要根据不同的系统选择合适的算法

批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间

  • 先来先服务,按请求顺序进行服务,可能会导致短作业等待时间过长
  • 短作业优先,可能会导致长作业一直得不到调度
  • 最短剩余时间优先

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应

  • 时间片轮转
  • 优先级调度
  • 多级反馈队列(时间片轮转+优先级调度)

2.死锁

系统资源不足
资源分配不均
进程推进顺序不合理

2.1 产生原因

系统资源的竞争

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

2.2 四个必要条件

互斥条件

  • 请求与保持条件
  • 不可剥夺条件
  • 循环等待条件

2.3 死锁避免

系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配,这是一种保证系统不进入死锁状态的动态策略

如果操作系统能保证所有进程在有限时间内得到需要的全部资源,则系统处于安全状态否则系统是不安全的

2.4 死锁预防

  • 破坏“不可剥夺”条件
  • 破坏“请求与保持条件”
  • 破坏“循环等待”条件

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论