「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识

简介: 该文章总结了操作系统基础知识中的十个关键知识点,涵盖了进程与线程的概念及区别、进程间通信方式、线程同步机制、死锁现象及其预防方法、进程状态等内容,并通过具体实例帮助理解这些概念。

封面

🎹序言

操作系统对于前端来说考察的内容并不多,所以在今天的文章中将依据比较常考的知识点进行归纳总结。

下面开始本文的讲解~

🎸一、思维导图

我们先用一张思维导图来梳理操作系统相关的面试题。具体如下👇

OS面试题复习框架

下面开始归纳操作系统常见的面试题。

🎺二、常见面试题

1、进程和线程以及它们的区别

  • 进程是对程序运行时的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;
  • 线程是进程的子任务,是CPU调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发;
  • 一个程序至少有一个进程,一个进程至少有一个线程,线程依赖于进程而存在;
  • 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。

2、进程间通信的几种方式

(1)管道(pipe)及命名管道(named pipe)

  • 管道可用于具有亲缘关系的父子进程间的通信。
  • 命名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

(2)信号(signal)

  • 信号是一种比较复杂的通信方式,用于通知和接收某个已经发生的进程事件。

(3)消息队列

  • 消息队列是消息的链接表,它克服了以上两种通信方式中信号量有限的缺点。
  • 具有写权限的进程可以按照一定的规则向消息队列中添加新信息。
  • 对消息队列有读权限的进程则可以从消息队列中读取信息。

(4)共享内存

  • 可以说这是最有用的进程间通信方式。
  • 它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。
  • 这种方式需要依靠某种同步操作,如互斥锁和信号量等。

(5)信号量

  • 主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段;

(6)套接字

  • 这是一种更为一般的进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

3、线程同步的方式

(1)互斥量 Synchronized/Lock

  • 采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。
  • 因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

(2)信号量 Semphare

  • 它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量

(3)事件(信号)Wait/Notify

  • 通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

4、什么是死锁?死锁产生的条件?

(1)死锁的概念

  • 在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。
  • 通俗的讲,就是两个或多个进程无限期的阻塞相互等待的一种状态。

(2)死锁产生的四个必要条件

  • 互斥:至少有一个资源必须属于非共享模式,即一次只能被一个进程使用;若其他申请使用该资源,那么申请进程必须等到该资源被释放为止。
  • 占有并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
  • 非抢占:进程不能被抢占,即资源只能被进程在完成任务后自愿释放。
  • 循环等待:若干进程之间形成一种头尾相接的环形等待资源关系。

(3)处理死锁的基本策略和常用方法

  • 解决死锁的基本方法主要有预防死锁避免死锁检测死锁解除死锁鸵鸟策略等。

5、进程有哪几种状态?

**(1)就绪状态:**进程已获得除处理机以外的所需资源,等待分配处理机资源。

**(2)运行状态:**占用处理机资源运行,处于此状态的进程数小于等于CPU数。

(3)阻塞状态: 进程等待某种条件,在条件未满足之前无法执行。

6、线程有几种状态?

在 Java虚拟机 中,线程从最初的创建到最终的消亡,要经历若干个状态

  • 创建 (new) 、就绪 (runnable/start) 、运行 (running) 、阻塞 (blocked) 、等待 (waiting) 、时间等待 (time waiting) 和 消亡 (dead/terminated)
  • 在给定的时间点上,一个线程只能处于一种状态。

7、段式存储管理

(1)段式存储管理是什么?

段式存储管理是一种符合用户视角的内存分配管理方案

在段式存储管理中,将程序的地址空间划分为若干段(segment),如代码段、数据段、堆栈段;

这样每个进程有一个二维地址空间,相互独立,互不干扰。

(2)段式管理的优缺点

  • 优点没有内碎片(因为段大小可变,可通过改变段大小来消除内碎片)。
  • 缺点:但段换入换出时,会产生外碎片(比如 4k 的段换 5k 的段,会产生 1k 的外碎片)。

(3)页式存储管理方案

页式存储管理方案是一种用户视角下内存与物理内存相分离的内存分配管理方案

在页式存储管理中,将程序的逻辑地址划分为固定大小的页 (page) ,而物理内存划分为同样大小的帧,程序加载时,可以将任意一页放入内存中任意一个帧,这些帧不必连续,从而实现了离散分离

(4)页式存储管理的优缺点

  • 优点:没有外碎片(因为页的大小固定)。
  • 缺点:但会产生内碎片(一个页可能填充不满)。

8、进程调度策略

(1)FCFS(先来先服务,队列实现,非抢占的)

先请求 CPU 的进程先分配到 CPU

(2)SJF(最短作业优先调度算法)

平均等待时间最短,但难以知道下一个 CPU 区间长度。

(3)优先级调度算法(可以是抢占的,也可以是非抢占的)

优先级越高越先分配到 CPU ,相同优先级先到先服务。

存在的主要问题是:低优先级进程无穷等待 CPU ,会导致无穷阻塞或饥饿。

解决方案:老化(即对超过一定时间还未使用的进程进行删除)。

(4)时间片轮转调度算法(可抢占的)

队列中没有进程被分配超过一个时间片的 CPU 时间,除非它是唯一可运行的进程。

如果进程的 CPU 区间超过了一个时间片,那么该进程就被抢占并放回就绪队列。

(5)多级队列调度算法

就绪队列分成多个独立的队列,每个队列都有自己的调度算法,队列之间采用固定优先级抢占调度。

其中,一个进程根据自身属性被永久地分配到一个队列中。

(6)多级反馈队列调度算法

与多级队列调度算法相比,其允许进程在队列之间移动:若进程使用过多 CPU 时间,那么它会被转移到更低的优先级队列

在较低优先级队列等待时间过长的进程会被转移到更高优先级队列,以防止饥饿发生。

9、页面调度算法

FIFO先进先出算法:在操作系统中经常被用到,比如作业调度(主要实现简单,很容易想到)。

LRU(Least recently use)最近最少使用算法:根据开始使用时间到现在为止的时间长短来判断。

LFU(Least frequently use)最少使用次数算法:根据使用次数来判断。

OPT(Optimal replacement)最优置换算法:理论的最优,所谓理论,就是要保证置换出去的是不再被使用的页,或者是在实际内存中最晚使用的页。

10、局部性原理

(1) 时间上的局部性最近被访问的页在不久的将来还会被访问。

(2)空间上的局部性内存中被访问的页周围的页也很可能被访问。

🎻三、结束语

大家可以看到,对于操作系统的面试来说,基本上都在围绕着进程和线程这两个概念交谈。所以在学习的过程中,可以以这两个点来作为主线来对知识点进行扩充和归纳。

关于操作系统的面经归纳到这里就结束啦!希望对大家有帮助~

🐣彩蛋 One More Thing

🏷️pdf内容获取

👉 微信关注公众号 星期一研究室 ,回复关键字 操作系统面试pdf 即可获取相关 pdf 内容~

👉 回复 面试大全pdf 可获取全专栏内容📂

🏷️更新地址

👉 offer来了面试专栏

🏷️番外篇

  • 如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~😉
  • 以上就是本文的全部内容!我们下期见!👋👋👋
相关文章
|
11天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
8天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2520 17
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
7天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1522 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
3天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
9天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
571 14
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
10天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
480 49
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18839 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17528 13
Apache Paimon V0.9最新进展
|
2天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
364 4
叮咚!您有一份六大必做安全操作清单,请查收