【面试重点系列】操作系统常见面试重点题(万字图解)(1)

  • 地址空间:

  • 进程:进程包含独立的地址空间。

  • 线程:线程没有自己独立的地址空间,它共享所属进程的空间。

  • 开销:

  • 进程:进程之间的切换会有较大的开销。

  • 线程:线程之间的切换的开销比较小。

  • 资源:

  • 进程:系统在运行的时候会为每个进程分配资源,而不会为线程分配资源。

  • 线程:线程所使用的资源来自其所属进程的资源。

  • 通信:

  • 线程之间通信比进程之间通信更方便。

  • 包含关系:

  • 线程是一个轻量级进程,是进程的一部分。

2、进程和线程分别适用于什么场景呢?

🌸

👨‍💼面试官:那么两者的分别适用于什么场景呢?

🙍‍♂️小宝:

进程适用的场景:需要安全稳定的场景。

线程适用的场景

  • 频繁创建和销毁的场景。

  • 计算量大,切换频繁的场景。

  • 需要速度的场景。

3、进程切换为什么比线程更消耗资源?

🌸

👨‍💼面试官:进程切换为什么比线程更消耗资源?

🙍‍♂️小宝: 进程切换时需要刷新TLB并获取新的地址空间,然后切换硬件上下文和内核栈;线程切换时只需要切换硬件上下文和内核栈。

TLB补充: 英文:Translation Lookaside Buffer。通过翻译:旁路转换缓冲。TLB 就是负责将虚拟内存地址翻译成实际的物理内 存地址,而 CPU 寻址时会优先在 TLB 中进行寻址。处理器的性能就和寻址的命中率有很大的关系。

上下文补充: 在一个程序运行起来时进程会有很多中状态,状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开的文件描述符的集合,这个状态叫做上下文(Context)。

上下文切换:

  • 进程: 进程是由内核管理和调度的,所以说进程切换只能发生再内核态
  • 线程: 当两个线程不是属于同一个进程时,则和进程的上下文切换是一样的;当两个线程是属于同一个进程时,因为虚拟机内存是共享的,所以再切换时,虚拟内存这些资源就会保持不变,只需要切换线程的私有数据,寄存器等不共享的数据。

线程存在于进程中,一个进程可以有一个或多个线程。线程是运行在进程上下文中的逻辑流,这个线程可以独立完成一项任务。同样线程有自己的上下文,包括唯一的整数线程ID, 栈、栈指针、程序计数器、通用目的寄存器和条件码。可以理解为线程上下文是进程上下文的子集。

由于保存线程的上下文明显比进程的上下文小,因此系统切换线程时,必然开销更小。

所以这个只是线程比进程消耗资源小的其中一个方面。

4、发生进程上下文切换有哪些场景?

🌸

👨‍💼面试官:发生进程上下文切换有哪些场景?

🙍‍♂️小宝:进程上下文的切换场景有:

  • 例如某个进程时间片耗光,然后从 运行状态 转化为 就绪状态 然后调度程序就再从 就绪队列 中选取新的进程到运行状态。

  • 资源不足,进程会被挂起。

  • 通过睡眠函数 sleep 将自己挂起,自然也会有重新调度。

  • 来了高优先级的进程时,当前进程被挂起。

  • 硬件中断时,CPU 上的进程会被中断挂起,转而执行内核的中断服务程序;


二、进程的状态


1、有了解进程的一些状态吗?

🌸

👨‍💼面试官:有了解进程的一些状态吗?

🙍‍♂️小宝:知道一些的面试官。

首先 进程 有三个最基本的状态 —— 就绪状态、运行状态和阻塞状态。当然除了这三个还有两个基本的状态——创建状态和结束状态

我们再来说一下基本状态的作用。

  • 创建状态: 是一个进程的创建。

  • 就绪状态: 是进程等待到 CPU也就是 运行状态 的前一个状态,进程调度器 也就是在这里选择进程运行状态。简的来说:可运⾏,由于其他进程处于运⾏状态⽽暂时停⽌运⾏;

  • 运行状态: 代表在 运行状态进程占用 CPU进行一些操作。

  • 阻塞状态: 因为一些操作(如IO)让进程暂停运行。这时CPU给他控制权,他也无法运行!

  • 结束状态: 表示该 进程任务完成或出错时,需要从系统中消失。

🌸下面是小宝画的流程图(有点手残希望大家别建议)

流程图:

在这里插入图片描述

2、知道挂起状态吗?

🌸

👨‍💼面试官:回答挺不错的,那你知道挂起状态吗?

🙍‍♂️小宝:

挂起状态: 因为如果在上述中有很多的 阻塞状态进程就会占用物理空间,这是非常浪费资源的。所以我们会把这些 阻塞状态 的进程 转移到外存(硬盘)中。当再次运行时则会把该进程从外存转入到 物理内存

挂起状态还分为:

  • 就绪挂起状态:进程在外盘中,进入内存立即运行。

  • 阻塞挂起状态:进程在外盘中,并等待某个事件的出现。

流程图:(手残党来啦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值