嵌入式 操作系统(三)

更多专栏:

超详细的嵌入式面经专栏(适用于小白学习和大佬复习):https://www.nowcoder.com/creation/manager/columnDetail/mGYoDz

校招公司汇总专栏:https://www.nowcoder.com/creation/manager/columnDetail/0ybKdp

目录:

1.请你说说进程、线程、协程分别是什么?它们分别有什么区别?

2.请你描述一下进程的空间模型?

3.请你说说多进程多线程多协程的优缺点?

4.请你说说多进程、多线程同步通信方式是什么?

5.请你讲讲进程线程的状态转换?

6.请你说说进程上下文是什么?

7.请你说说中断上下文是什么?

8.你了解父进程、子进程吗?请你说说它们关系以及区别?

内容:

1.请你说说进程、线程、协程分别是什么?它们分别有什么区别?

进程

进程是程序在计算机中执行的实例,是操作系统进行资源分配和调度的基本单位。每个进程都有自己的虚拟地址空间、代码段、数据段以及系统资源(如文件描述符、IO资源等)。

线程

线程是进程中的一个执行单元,线程在进程内共享资源(如内存、文件描述符等),但每个线程有独立的执行栈和程序计数器。线程是 CPU 调度的最小单位,多个线程可以并发地执行。

协程

协程是一种用户级的线程,它是轻量级的、由程序员控制调度的并发单元。协程通常由程序员主动切换,而不像线程那样由操作系统进行调度。

区别:

特性

进程

线程

协程

调度单位

操作系统调度

操作系统调度

用户调度(程序员控制)

内存隔离

每个进程有独立的内存空间

线程共享进程的内存空间

协程共享进程的内存空间

资源消耗

开销大(包括创建和上下文切换)

较小(比进程小,但比协程大)

开销最小(无操作系统介入)

创建销毁开销

较大

较小

非常小(仅为函数调用)

并发性能

并发能力受限于操作系统调度

多线程能提高并发能力

高并发,适合I/O密集型任务

通信方式

进程间通信(IPC)

线程间通信(共享内存、锁等)

协程间直接通过共享内存、变量等

使用场景

适用于需要高度隔离的任务

适用于需要高并发的CPU密集型任务

适用于大量I/O密集型操作

注意:

  • 一个进程可以包含多个线程,一个线程从属于一个进程。一个线程可以有多个协程。
  • 一个进程的消失不会影响其他进程,但是一个线程的消失会使相对应的进程消失。
  • 协程不需要多线程的锁机机制,因为多个协程从属于一个线程,不存在同时写变量冲突。并且效率上比线程高。

2.请你描述一下进程的空间模型?

通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间具体如图,内核空间是受保护的,用户不能对该空间进行读写操作。

栈的空间有限,堆是很大的自由存储区,程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也是在栈上进行。

程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码。

初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据。

未初始化过的数据(BSS):在程序运行初未对变量进行初始化的数据。

栈 (Stack):存储局部、临时变量,函数调用时,存储函数的返回指针,用于控制函数的调用和返回。在程序块开始时自动分配内存,结束时自动释放内存,其操作方式类似于数据结构中的栈。

堆 (Heap):存储[动态内存分配,需要程序员手工分配,手工释放.注意它与数据结构中的堆是两回事,分配方式类似于链表。

注意:

  • 栈空间有向下的箭头,代表数据地址增加的空间是往下的,新的数据的地址的值反而更小,
  • 堆空间则是往上。

3.请你说说多进程多线程多协程的优缺点?

特性

多进程

多线程

多协程

内存开销

高,每个进程有独立内存空间

较小,线程共享进程的内存

非常小,多个协程共享线程内存

创建/销毁开销

高,进程创建和销毁较慢

较低,线程创建和销毁较快

极低,协程创建和销毁非常快

上下文切换效率

低,进程切换涉及更多资源

较高,线程切换相对较轻

非常高,由用户级调度控制

并行性

高,支持多核并行处理

高,支持多核并行处理

仅限于单线程,不支持多核并行

稳定性

高,进程独立,一个崩溃不会影响其他进程

较低,线程共享内存,一个线程崩溃可能影响进程

较低,协程在同一线程中,崩溃会影响整个进程

线程/进程间通信

复杂,需要使用IPC(如管道、消息队列等)

简单,线程共享内存,易于通信

极其简单,通过共享变量或异步IO等

适用场景

适用于CPU密集型任务,需要高独立性和并行性

适用于I/O密集型任务,尤其需要多任务并发时

适用于I/O密集型任务,极高并发且资源使用少

开发难度

较高,进程间通信和同步复杂

中等,需要处理线程同步和死锁等问题

低,协程的开发较简单,但调度和控制需要注意

调试难度

中等,进程间隔离相对容易调试

较高,线程安全问题导致调试较困难

高,调试协程中的并发和状态控制较复杂

4.请你说说多进程、多线程同步通信方式是什么?

多进程

管道

  • 匿名管道:用于父子进程之间的通信,通常为单向通信。
  • 命名管道:允许不同的进程通过文件系统中的命名管道进行通信,支持双向通信。
  • 优点:简单、轻量。
  • 缺点:只能用于父子进程或具有相关关系的进程。

消息队列

  • 允许进程通过消息队列发送和接收消息,消息按顺序排队。
  • 优点:提供了进程间异步通信,支持多个生产者和消费者。
  • 缺点:性能受限,特别是消息队列长度较长时。

共享内存

  • 允许多个进程访问同一块内存区域,速度较快,但需要显式的同步机制(如信号量或互斥锁)。
  • 优点:速度快,适合大数据量的共享。
  • 缺点:需要额外的同步机制来保证数据一致性。

信号量

  • 信号量用于控制对共享资源的访问,通过计数来实现资源的限制,防止多个进程同时访问共享资源。
  • 优点:可以有效地防止竞争条件,控制并发。
  • 缺点:实现复杂,容易产生死锁。

互斥锁

  • 互斥锁是一种同步原语,确保同一时间只有一个进程能够访问某个资源。
  • 优点:确保数据的一致性,防止竞争条件。
  • 缺点:可能会产生死锁,需要小心设计。

多线程

互斥锁/锁

  • 互斥锁是最常用的同步工具,确保只有一个线程能访问共享资源,其他线程必须等待锁被释放。
  • 优点:简单直接,保证了线程安全。
  • 缺点:容易产生死锁,锁粒度过大

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++八股 文章被收录于专栏

本人双飞本,校招上岸广和通。此专栏覆盖嵌入式常见面试题,有C/C++相关的知识,数据结构和算法也有嵌入式相关的知识,如操作系统、网络协议、硬件知识。本人也是校招过来的,大家底子甚至项目,可能都不错,但是在面试准备中常见八股可能准备不全。此专栏很适合新手学习基础也适合大佬备战复习,比较全面。最终希望各位友友们早日拿到心仪offer。也希望大家点点赞,收藏,送送小花。这是对我的肯定和鼓励。 持续更新

全部评论
更了更了新鲜的诶 博主加油更
点赞 回复 分享
发布于 2025-01-20 11:51 陕西

相关推荐

2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
秋招结束已经一段时间了 一直在忙着毕业的事情 浅浅总结一下自己的秋招经历吧~本人BG双非硕 后端选手 有一段小厂+腾讯暑期实习腾讯暑期转正loser秋招结束已经结束了有一段时间了总结一下秋招历程最大的感受就是秋招比起暑期更加卡学历秋招总共投了60多家吧一直面 一直挂也投了两家银行科技岗 都走到终面体检了都拒了(总体感觉本地的银行还是挺容易过的)可能本人更想去私企 并且银行也挺卷听说一直到11月就只有一家小厂的offer并签约当保底然后也突然被WXG捞了 本来都不对腾讯抱有希望了可能经过一整个秋招的面试积累吧 以及本人有ACM经历 WXG整体面试以做题偏多(一二面做了5道题 4道hard) 比较合自己胃口 差不多半个月就把五轮面试过了进入录用评估 但也一直没有结果到后面也陆陆续续有几家中厂也终面过泡池子一直到12月初华子给开了base杭州 14a因为华子公积金的原因 和小厂薪资上差距不大 所以也一直犹豫是否毁约签华子 但是内心也还对WXG抱有一丝幻想(虽然一直没有保温也没有任何消息)然后一直到12月中下旬 华子要求去现场签约了 但是WXG还是没有消息 然后就连续发邮件和打电话催了好多次 还是回复耐心等待直到华子签约那天 经过内心挣扎已经决定毁约签华子了 可能还是想平台更大一点吧 然后最戏剧性的一幕来了 就在我发毁约邮件没有5秒 WXG打电话开奖了 并且开奖也十分有诚意 最终还是没有签约成功华子 研究生期间也打了很多次华子的比赛还是对华子有感情的555整个秋招都是伴随着焦虑的 我认为自己也是秋招大部分人的画像 屡屡碰壁后不断怀疑自己 但是可能自己也比较幸运吧 但是也感谢自己在一次次陷入迷茫都没有放弃自己 还是一直努力背八股 刷题也祝各位牛友们共勉 就算暂时没有好的offer 不放弃一定会有好的结果的!!
点赞 评论 收藏
分享
评论
12
21
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务