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

封面

「面试专栏」前端面试之操作系统篇

  • 🎹序言
  • 🎸一、思维导图
  • 🎺二、常见面试题
    • 1、进程和线程以及它们的区别
    • 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、进程有哪几种状态?
    • 6、线程有几种状态?
    • 7、段式存储管理
      • (1)段式存储管理是什么?
      • (2)段式管理的优缺点
      • (3)页式存储管理方案
      • (4)页式存储管理的优缺点
    • 8、进程调度策略
      • (1)FCFS(先来先服务,队列实现,非抢占的)
      • (2)SJF(最短作业优先调度算法)
      • (3)优先级调度算法(可以是抢占的,也可以是非抢占的)
      • (4)时间片轮转调度算法(可抢占的)
      • (5)多级队列调度算法
      • (6)多级反馈队列调度算法
    • 9、页面调度算法
    • 10、局部性原理
  • 🎻三、结束语
  • 🐣彩蛋 One More Thing
    • 🏷️pdf内容获取
    • 🏷️更新地址
    • 🏷️番外篇

🎹序言

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

下面开始本文的讲解~

🎸一、思维导图

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

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来了面试专栏

🏷️番外篇

  • 如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~😉
  • 以上就是本文的全部内容!我们下期见!👋👋👋

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架

JHRS一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错。这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学、易扩展,特别是作者…

「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系

「面试专栏」前端面试之vuejs篇🖼️序言🎙️一、vue2.x基础知识预备📻二、vue2.x基础知识常见面试题1、请说出vue.cli项目中src目录每个文件夹和文件的用法?2、vue.cli中怎样使用自定义的组件?有遇到过哪些问题&#x…

.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务…

「offer来了」从基础配置到高级配置,16大知识点带你巩固webpack知识体系

「面试专栏」前端面试之Webpack篇🧩序言🎨一、基础知识学习🎲二、常见面试题汇总🎯三、构建和打包1、前端代码如何进行构建和打包?2、前端为何要进行打包和构建?3、webpack原理🎰四、模块相关1、…

进击吧!Blazor!第一期回顾

Blazor 是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net 。Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScrip…

《五分钟商学院》个人篇学习总结(下)

【商业知识】| 作者 / Edison Zhou这是EdisonTalk的第286篇原创内容商业篇聚焦的是我们与外部的关系,管理篇聚焦的是我们与内部的关系,而个人篇聚焦的则是我们与自己的关系。与自己斗,其乐无穷,本文是个人篇的下半部分学习总结。上…

「软件项目管理」软件项目范围计划——需求管理与任务分解

软件项目范围计划——需求管理与任务分解序言一、软件需求定义及层次1、定义2、层次二、软件需求管理过程1、管理过程2、需求获取3、需求分析4、需求规格编写5、需求验证6、需求变更(1)需求变更管理的主要工作(2)需求变更控制流程…

leetcode106. 从中序与后序遍历序列构造二叉树

一:题目 二:思路 例子:中序[9,3,15,20,7];后序[9,15,7,20,3] 1.我们先选取后续的最后的结点3(其是根节点) 2.我们在中序序列中用上一步求出的根节点3并记录其在中序数组中的位置rootin,然后我们就可以 求出 左子树的结点个数(rootin - leftin…

「offer来了」快来关注这些性能优化问题

「面试专栏」前端面试之性能优化篇💬序言💯思维导图抢先看👁️‍🗨️一、html、css、js、jq优化1、针对HTML,如何优化性能?2、针对CSS,如何优化性能?3、哪些方法能提升移动端CSS3动画…

不宜过分炒作第三代半导体材料弯道超车

目前,本土晶圆大厂与台积电在技术水平上的差距是非常明显的。就市场份额来说,台积电的市场份额超过50%,而本土晶圆大厂的市场份额大约是台积电的十分之一。在技术水平上,本土晶圆大厂也和台积电这样的大厂有一定差距。目前台积电7…

「offer来了」浅谈前端面试中开发环境常考知识点

「面试专栏」前端面试之开发环境篇🌱序言🌲一、git1、为什么要使用git?2、常用的git命令3、git提交规范🌳 二、Chrome调试工具🌴三、抓包1、抓包工具2、抓包过程🌾四、linux 常用命令1、为什么要用linux?2…

数据结构与算法专题——第十题 输入法跳不过的坎-伸展树

我们知道AVL树为了保持严格的平衡,所以在数据插入上会呈现过多的旋转,影响了插入和删除的性能,此时AVL的一个变种伸展树(Splay)就应运而生了,我们知道万事万物都遵循一个“八二原则“,也就是说8…

「软件项目管理」一文详解软件项目成本计划

软件项目成本计划序言一、成本估算的定义二、估算的基本概念1、关于估算2、软件项目规模3、软件规模单位4、软件项目成本5、成本单位6、软件规模和软件成本的关系7、成本估算结果三、成本估算过程1、估算输入2、估算处理3、估算输出四、成本估算方法1、代码行估算法&#xff08…

在腾讯云云函数计算上部署.NET Core 3.1

云厂商(腾讯云、Azure等)提供了Serverless服务,借助于Serverless,开发人员可以更加专注于代码的开发,减少运维的成本。腾讯云的函数计算提供了很多运行库,对.NET的支持需要通过custom runtime 来支持&#…

MassTransit Get Started-

MassTransit:是一款.NET的分布式应用程序框架(开源、免费)。通过MassTransit,可以轻松创建利用基于消息的、松耦合异步通信的应用程序和服务,以提高可用性,可靠性和可伸缩性。MassTransit本身定位轻量级的服…

「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型

Walston-Felix模型和COCOMO Ⅱ模型序言一、Walston-Felix模型1. 公式2. 举例二、COCOMO模型(Constructive Cost Model)1. 模型定义2. COCOMO模型的发展3. COCOMO基本原理三、COCOMO 811. 模型级别2. 项目类型3. 基本COCOMO-81(1)公…

图书管理(SSM)

一:前言 这仅仅是个小demo,体验了一把SSM配置地狱&#xff0c;就简单的实现CRUD 二:相关技术 MybatisSpringSpringMVCMysqlMavenTomcat 三:功能展示 1:查询 2:增加 3:删除 4&#xff1a;修改 四:上码 1&#xff1a;导入依赖 <?xml version"1.0" encoding&…

ASP.NET Core Cookie SameSite

在较多的项目中&#xff0c;Cookie 是比较常用的一种状态保持的选择。比如常见的例子&#xff1a;用户登录成功后&#xff0c;服务器通过 set-cookie 将会话Id设置到当前域下&#xff0c;前端在调用后端接口时&#xff0c;会自动将同域下的 Cookie 携带上&#xff0c;然后后端接…

还不会ts?一文带你打开ts的大门

一文带你打开ts的大门序言一、什么是TypeScript&#xff1f;1、编程语言的类型2、TypeScript究竟是什么&#xff1f;二、为什么要学习TypeScript&#xff1f;1、程序更容易理解2、效率更高3、更少的错误4、非常好的包容性5、一点小缺点三、typescript入门1、如何安装TypeScript…

idea中右侧的Maven框消失了

我掉 芭比Q了 idea中右侧的maven框居然没了 消失不见了 跟一束烟似的 没了 解决&#xff08;网上找的&#xff09;