当前位置: 首页 > news >正文

操作系统面经

进程与线程区别

1.进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)

2.进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程小很多,创建也是。

3.线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。

4.但是多进程程序健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另一个进程造成影响,因为进程有自己独立的地址空间。

死锁产生条件和解决办法

产生条件

1.互斥条件:一个资源每次只能被一个进程使用

2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放

3.不剥夺:进程已获得的资源,在未使用完之前,不能强行剥夺

4.循环等待条件

解决办法

1.如果不同程序会并发存取多个表,尽量约定以相同顺序访问表

2.在同一个事务中,尽可能左到一次锁定所需要的所有资源,减少死锁产生概率

3.如果业务处理不好,可以用分布式事务锁或乐观锁

物理地址和逻辑地址

逻辑地址

逻辑地址是CPU分配给每个进程的地址,逻辑(虚拟)地址和它的实际所处位置是不一样的,这是共享内存时所必需的。逻辑地址通过MMU(内存管理单元)转换为物理地址。

物理地址

内存空间所在的实际内存地址,由CPU生成。

多进程、多线程区别

数据共享、同步

多进程共享复杂,同步简单;多线程共享简单,同步复杂

内存、CPU

多进程占用内存多,切换复杂,CPU利用率低;多线程相反

创建销毁、切换

多进程创建销毁、切换复杂,速度慢;多线程相反

编程调试

多进程编程简单,调试简单;多线程相反

可靠性

进程间相互不影响;一个线程挂掉,整个线程挂掉

分布式

多进程适应于多核、多机分布;多线程适应于多核分布

进程间通信方式

管道

数据单向传输。

1.匿名管道。用完销毁。通信范围是存在父子关系的进程

2.命名管道。FIFO。不相关的进程间也能通信

缺点:效率低,不适合频繁交换数据

消息队列

像发邮件一样,你发一封,我回一封,可以频繁沟通

缺点:

1.通信不及时

2.附件有大小限制

3.存在用户态和内核态之间的数据拷贝开销

共享内存

一块虚拟地址空间映射到相同的物理内存中。这个进程写入的东西,另一个进程马上就能看到,不需要拷贝传输,提高了通信速度

信号量

实现进程间的互斥与同步。

两种操作:

1.P,信号量-1,信号量<0,表示资源被占用,需等待;>0,可以执行

2.V,信号量+1,信号量<=0,表示有阻塞中的进程,唤醒运行;>0,没有阻塞中的进程。

两个操作必须成对出现。

信号量初始为1,代表互斥;初始为0,代表同步,比如说保证进程A在进程B之前执行

信号

适用于异常情况下的工作模式。

Linux提供了几十种信号,通过kill -l可以查看所有信号

信号是进程间通信机制中唯一的异步通信机制,发送信号后有如下操作:

1.执行默认操作。

2.捕捉信号。为信号定义一个信号处理函数

3.忽略信号。不希望处理某些信号,就忽略

Socket

跨网络与不同主机上的进程通信。

三种常见通信方式:

1.基于TCP协议的通信方式

2.基于UDP协议的通信方式

3.本地进程间通信

线程之间共享哪些内容

堆,全局变量,静态变量,文件等公用资源。

独享:栈,寄存器

相关文章:

操作系统面经

进程与线程区别 1.进程是资源分配的最小单位&#xff0c;线程是程序执行的最小单位&#xff08;资源调度的最小单位&#xff09; 2.进程有自己的独立地址空间&#xff0c;每启动一个进程&#xff0c;系统就会为它分配地址空间&#xff0c;建立数据表来维护代码段、堆栈段和数…...

一天约了4个面试,复盘一下面试题和薪资福利

除了最新的面经分享&#xff0c;还有字节大佬的求职面试答疑&#xff0c;告诉你关键问题是什么&#xff1f;少走弯路。**另外本文也汇总了6份大厂面试题&#xff1a;字节、腾讯、小米、腾讯云、滴滴、小米游戏。**希望对大家有帮助。 前言 昨天我的交流群里&#xff0c;有位宝…...

详解单链表(内有精美图示哦)

全文目录引言链表链表的定义与结构链表的分类单链表的实现及对数据的操作单链表的创建与销毁创建销毁单链表的打印单链表的头插与头删头插头删单链表的尾插与尾删尾插尾删单链表的查找单链表在pos位置后插入/删除插入删除单链表在pos位置插入/删除插入删除总结引言 在上一篇文…...

csdn文章导航

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

【Spring】掌握 Spring Validation 数据校验

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Spring Validation 数据校验一、什么是 Spring…...

定语 从句

回顾能作定语的成分 形容词&#xff1a;She is a responsible girl&#xff0e;她是一个负责任的姑娘。&#xff08;前置定语&#xff09; The girl responsible was expelled&#xff0e;对此负责的姑娘被开除了。&#xff08;后置定语&#xff09; 代词&#xff1a;Whose f…...

【数据可视化工具】浅谈 DataEase 和 FineBI 支持的数据源

前言最近对市面上比较火热的数据可视化工具 DataEase 和 FineBI 进行了调研&#xff0c;在支持的数据源方面感觉不太一样&#xff0c;所以就有了这篇文章&#xff0c;话不多说&#xff0c;我们一起来看一下吧&#xff01;以下的内容&#xff0c;大多来自两个工具的官方文档&…...

100种思维模型之上帝视角思维模型-025

惊奇、愤怒、郁闷&#xff0c;我们觉得生活不精彩&#xff0c;事情乱作一团&#xff0c;但这仅仅是视角问题而已。 换个视角&#xff0c;可以看到不同的世界。 “上帝视角思维模型”&#xff0c;即以一个更高、更客观、更理性的角度来看问题&#xff0c;从而做出理性的决策。 …...

从这5个方面,总结我当PM的第一年

以下5个方面&#xff08;学习、思考、沟通、执行、产品&#xff09;的分享&#xff0c;都是我站在巨人的肩膀上&#xff0c;结合自己所学所做总结而来&#xff1b;同时&#xff0c;我也继续学习&#xff0c;不断完善这些知识。如有不当&#xff0c;欢迎大家指正~一、学习&#…...

ChatGPT可以作为一个翻译器吗?

论文地址&#xff1a;https://arxiv.org/abs/2301.08745.pdf 背景 自从OpenAI2022年11月30日发布ChatGPT以来&#xff0c;基本上把NLP所有任务大统一了&#xff0c;那么在机器翻译的表现到底如何呢&#xff1f;腾讯AI Lab在翻译Prompt、多语言翻译以及翻译鲁棒性三方面做了一…...

详述java的设计模式(三)

1.装饰者模式 装饰者模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式&#xff0c;它是作为现有的类的一个包装。 使用场景&#xff1a; 在不影响其他对象的情况下&#xff…...

Linux命令·pwd

Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说&#xff0c;每当你在终端进行操作时&#xff0c;你都会有一个当前工作目录。 在不太确定当前位置时&#xff0c;就会使用pwd来判定当前目录在文件系统内的确切位置。1&#xff0e;命令格式&#xff1a;pwd [选项…...

以图搜图服务快速搭建

以图搜图服务快速搭建 电商公司&#xff0c;管理的商品少则几千&#xff0c;多则上百万。如何帮助用户从多如牛毛的商品中找到类似的商品就成了问题。 以图搜图就可以很好的帮助解决这个问题&#xff0c;通过 Towhee&#xff08;resnet50 模型&#xff09; Milvus 如何实现本…...

【TensorFlow安装踩坑记录】

TensorFlow安装踩坑记录第一步&#xff0c;切换服务器cuda版本第二步&#xff0c;conda安装tensorflow记录一下最近安装Tensorflow v1时遇到的问题和解决办法第一步&#xff0c;切换服务器cuda版本 首先我想安装tensorflow 1.13.1&#xff0c;兼容的cuda版本是10.0&#xff0c…...

03.03回溯法

class Solution { public:vector<int> temp;vector<vector<int>> ans;void dfs(int cur,int n,int k){//剪枝 temp 长度加上区间 [cur, n] 的长度小于 k&#xff0c;不可能构造出长度为 k 的 tempif(temp.size()(n-cur1)<k){return;}if(temp.size()k){ans…...

I.MX6ULL内核开发0:linux内核模块

目录 简要 一、内核模块的概念 二、内核模块加载、卸载过程 简要 1、内核模块的概念 2、内核模块的原理&#xff1a;内核模块在内核的加载、卸载过程。 一、内核模块的概念 内核&#xff0c;是一个操作系统的核心。是基于硬件的第一层软件扩充&#xff0c;提供操作系统的最…...

qsort快速排序的实现以及模拟实现qsort的功能(狠狠的拿捏)

当你为错过太阳而哭泣的时候&#xff0c;你也要再错过群星了。 --泰戈尔 目录 一.qsort快速排序的实现 二.模拟实现一个qsort功能的函数 一.qsort快速排序的实现 下面是 qsort() 函数的声明&#xff1a; void qsort(void *base, size_t nitems, size_t size, int (…...

[Java·算法·中等]LeetCode215. 数组中的第K个最大元素

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3&#x1f449;️ 力扣原文 题目 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不…...

xgboost:算法数学原理

xgboost算法数学原理 1、求预测值 y^iϕ(xi)∑k1Kfk(xi),fk∈F,(1)\hat{y}_i\phi\left(\mathbf{x}_i\right)\sum_{k1}^K f_k\left(\mathbf{x}_i\right), \quad f_k \in \mathcal{F},\tag{1} y^​i​ϕ(xi​)k1∑K​fk​(xi​),fk​∈F,(1) F{f(x)wq(x)}(q:Rm→T,w∈RT)\mathca…...

map、multimap、unordered_map

引用&#xff1a;windows程序员面试指南 map map 红黑树 map 对value值无要求 map 有序&#xff0c;按照key值自动排序 map key值唯一 map 头文件&#xff1a;#include map 支持重载[]的运算符 map 为保持有序性&#xff0c;erase()开销大 multimap multimap 红黑树 multim…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...