当前位置: 首页 > 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…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...