嵌入式C语言面试相关知识——CPU、进程和线程相关(相关问题很多,会经常过来更新)
嵌入式C语言面试相关知识——CPU、进程和线程相关
- 一、博客声明
- 二、自问题目——CPU相关
- 1、什么是中断?如何处理中断?
- 2、解释上下文切换(Context Switch)?
- 3、在嵌入式中如何优化CPU使用?
- 三、自问题目——进程相关
- 1、什么是进程?
- 2、嵌入式系统中进程和线程的区别是什么?
- 3、在嵌入式系统中如何创建和管理进程?
- 四、自问题目——线程程相关
- 1、什么是线程?
- 2、如何实现多线程编程?
- 3、什么事线程同步?为什么需要线程同步?
- 4、在嵌入式系统中如何避免死锁?
- 四、自问题目——其他问题
- 1、CPU核心数和线程数量关系?
一、博客声明
又是一年一度的秋招,怎么能只刷笔试题目呢,面试题目也得看,想当好厂的牛马其实也不容易呀O(∩_∩)O。注意:这篇博客大部分是来自网上的资源,通过自问或者他问,然后寻找答案,为了加深印象,总结和抄一遍。并且会不定期更新这个方面的内容。
二、自问题目——CPU相关
1、什么是中断?如何处理中断?
中断是硬件或软件事件,它打断当前程序的执行以处理紧急任务。处理中断通常涉及:
- 保存当前CPU状态。
- 执行中断服务程序(ISR)。
- 恢复CPU状态,进行执行被中断的任务。
2、解释上下文切换(Context Switch)?
上下文切换是指操作系统从一个进程或线程切换到另外一个进程或线程的过程。上下文切换包括保存当前进程的状态(寄存器,程序计数器等)并恢复另外一个进程的状态。虽然上下文切换允许多任务并行处理,但频繁的上下文切换会导致性能开销。
3、在嵌入式中如何优化CPU使用?
- 使用高效的数据结构和算法。
- 尽量减少上下文切换。
- 使用中断而不是轮询来处理外部事件。
- 调整任务的优先级以确保关键任务得到及时的处理。
三、自问题目——进程相关
1、什么是进程?
进程是一个正在执行的程序的示例,它拥有自己的内存空间和系统资源。进程是操作系统分配资源和调度的基本单位。
2、嵌入式系统中进程和线程的区别是什么?
进程是独立运行的实体,每个进程都有自己的内存空间。而线程是进程中的一个执行单元,同一个进程中的线程共享内存和资源。线程切换比进程切换更快,因为线程共享同一个进程的地址空间。
3、在嵌入式系统中如何创建和管理进程?
在嵌入式系统中,进程管理通常是由实时操作系统(RTOS)或者内核负责。进程的创建和管理包括了分配内存、初始化进程控制块(PCB)、设置优先级和调度策略等。
四、自问题目——线程程相关
1、什么是线程?
线程是进程中的一个独立执行流,它与同一进程中的其他线程共享进程的内存空间和系统资源。线程是操作系统调度的基本单元。
2、如何实现多线程编程?
多线程编程可以通过创建多个线程让他们并发执行任务来实现。在C语言中可,可以使用POSIX线程(pthreads)库来创建和管理线程。关键函数包括pthread_create
、pthread_join
、pthread_mutex_lock
、pthread_mutex_unlock
等。
3、什么事线程同步?为什么需要线程同步?
线程同步是指协调多个线程对共享资源的访问,以避免数据竞争和不一致。常用的线程同步机制包括互斥锁(mutex)、信号量(semaphore)、条件变量(condition variable)等。线程同步确保多个线程安全地访问共享资源,防止竞态条件。
4、在嵌入式系统中如何避免死锁?
-
出现死锁的原因:
- 资源竞争:多个任务或线程同时请求相同的资源(如互斥锁、信号量、内存块等),如果这些资源没有得到适当的管理,就可能导致死锁。例如,两个任务A和B分别持有资源R1和R2,任务A请求R2,而任务B请求R1,此时就会产生死锁。
- 资源获取顺序不一致:如果不同的任务或线程在获取多个资源时,按照不同的顺序请求资源,也可能导致死锁。例如,任务A按照R1 -> R2的顺序请求资源,而任务B按照R2 -> R1的顺序请求资源,这种不一致的顺序会增加死锁的风险。
- 资源未能及时释放:任务或线程在获得资源后,由于编程错误或异常情况未能及时释放资源,导致其他任务或线程无法获取所需资源,从而可能引发死锁。
- 环形等待:当一个任务等待另一个任务所持有的资源,而后者又在等待前者所持有的资源时,就会形成环形等待。环形等待是死锁的必要条件之一。
- 互斥使用:某些资源在同一时间只能被一个任务或线程使用,这种互斥使用资源的特性会增加死锁的可能性。例如,互斥锁在同一时间只能被一个任务或线程持有,其他任务或线程必须等待。
- 持有并等待:任务或线程在持有一个资源的同时,继续请求其他资源,而不释放已持有的资源。这种情况如果发生在多个任务或线程之间,就可能导致死锁。
-
避免死锁的方法:
- 避免嵌套锁:尽量减少多个锁的嵌套使用。
- 按序申请资源:按照预定顺序申请资源,避免循环等待。
- 超时机制:为锁的申请设置超时,超时后释放已获得的锁。
- 使用非阻塞算法和数据结构:使用非阻塞算法和数据结构,如无锁队列、无锁栈等,可以减少对互斥锁等资源的依赖,降低死锁风险。
四、自问题目——其他问题
1、CPU核心数和线程数量关系?
一般来说,一个物理核心只能处理一个线程;多个物理核心,每个核心都可以独立执行一个线程,实现真正的并行。多核处理器可以执行多个进程或线程;超线程技术,通过超线程技术,每个物理核心可以处理多个线程。例如intel的一些四核处理器可能有逻辑核心,可以同时执行八个线程。
相关文章:
嵌入式C语言面试相关知识——CPU、进程和线程相关(相关问题很多,会经常过来更新)
嵌入式C语言面试相关知识——CPU、进程和线程相关 一、博客声明二、自问题目——CPU相关1、什么是中断?如何处理中断?2、解释上下文切换(Context Switch)?3、在嵌入式中如何优化CPU使用? 三、自问题目——进程相关1、什么是进程&a…...

Linux学习看这一篇就够了,超超超牛的Linux基础入门
引言 小伙伴们,不管是学习c还是学习其他语言在我们学的路上都绕不过操作系统,而且,老生常谈的Linux更是每个计算机人的必修,那么我们对Linux的了解可能只是从别人那听到的简单的这个系统很牛,巴拉巴拉的,但…...

el-scrollbar组件使用踩坑记录
一、el-scrollbar和浏览器原生滚动条一起出现 问题描述 el-scrollbar组件主要用于替换浏览器原生导航条。如下图所示,使用el-scrollbar组件后,发现未能成功替换掉浏览器原生导航条,二者同时出现。 引发原因 el-scrollbar的height属性如果…...

Linux计算机结构
1.计算机设计原理 冯诺依曼体系结构 通过该结构得出:中央处理器 2.操作系统整体框架 操作系统是不会让你直接乱使用底层的各种硬件,但为了依旧能够让你使用到该资源则会给你预留一些窗口去让你与其交互(类比银行,直接小窗口交互,…...
应用进程、SurfaceFlinger进程、HWC进程 之间的关系
应用进程、SurfaceFlinger进程、HWC(Hardware Composer)进程在Android系统中扮演着重要的角色,它们之间的关系和通信流程是Android图形显示系统的核心部分。以下是这三者之间关系和通信流程的详细分析: 一、三者之间的关系 应用进…...

66.Python-web框架-Django-免费模板django-datta-able的分页的一种方式
目录 1.方案介绍 1.1实现效果 1.2django.core.paginator Paginator 类: Page 类: EmptyPage 和 PageNotAnInteger 异常: 1.3 templatetags 2.方案步骤 2.1创建一个common app 2.2创建plugins/_pagination.html 2.3 其他app的views.py查询方法 2.4在AIRecords.html里…...

Python编程学习笔记(1)--- 变量和简单数据类型
1、变量 在学习编程语言之前,所接触的第一个程序,绝大多数都是: print("Hello world!") 接下来尝试使用一个变量。在代码中的开头添加一行代码,并对第二行代码进行修改,如下: message "…...

第二证券:资金抱团“高股息”,超三成A股年内创历史新低!
A股商场行情冰火两重天。 “预制菜榜首股”跌破发行价 7月8日,味知香盘中最低跌至19.26元/股,股价跌破发行价,并创前史新低。揭露资料显现,公司是集研发、生产、销售为一体的半成品菜企业,现在具有8大产品系列&#…...

ASAN排查程序中内存问题使用总结
简介 谷歌有一系列Sanitizer工具,可用于排查程序中内存相关的问题。常用的Sanitizer工具包括: Address Sanitizer(ASan):用于检测内存使用错误。Leak Sanitizer(LSan):用于检测内存…...

day01:项目概述,环境搭建
文章目录 软件开发整体介绍软件开发流程角色分工软件环境 外卖平台项目介绍项目介绍定位功能架构 产品原型技术选型 开发环境搭建整体结构:前后端分离开发前后端混合开发缺点前后端分离开发 前端环境搭建Nginx 后端环境搭建熟悉项目结构使用Git进行版本控制数据库环…...

Python爬虫与数据可视化:构建完整的数据采集与分析流程
Python爬虫技术概述 Python爬虫是一种自动化的数据采集工具,它可以模拟浏览器行为,访问网页并提取所需信息。Python爬虫的实现通常涉及以下几个步骤: 发送网页请求:使用requests库向目标网站发送HTTP请求。获取网页内容…...

Java---包装类与泛型
1.包装类 1.1 包装类 在Java中,由于基本数据类型不是继承Object类,为了在泛型代码中可以支持基本数据类型,Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别,其他的都是首字…...

如何优化 PostgreSQL 中对于复杂数学计算的查询?
文章目录 一、理解复杂数学计算的特点二、优化原则(一)索引优化(二)查询重写(三)数据库配置调整(四)使用数据库内置函数的优势 三、具体的优化方案和示例(一)…...

前端面试题27(在实际项目中,如何有效地利用Vue3的响应式系统提高性能?)
在实际项目中,有效利用Vue3的响应式系统提高性能主要涉及以下几个关键点: 1. 合理使用reactive和ref reactive:用于将复杂的数据结构(如对象或数组)转换成响应式版本。确保只将需要实时更新的数据结构声明为响应式&am…...
掌握Vue 3生命周期:从组合式API到高效代码实践
引言 在 Vue 3 中,生命周期的概念得到了进一步的优化和简化。Vue 3 引入了组合式 API(Composition API),这为开发者提供了更灵活的方式来组织和重用代码逻辑。与传统的选项式 API(Options API)相比&#x…...
使用cgroup对pgsql进行分库资源限制
系统:Centos7 pg版本:14.11 自建pgsql14中有很多个库,一个库对应一个租户,偶尔会出现单个租户执行慢sql影响全局的问题,目前官方也没有比较合适的处理方案或者插件 解决方案: 因为pgsql是多进程应用,所以正好可以使用linux自带的cgroup功能进行资源限制。定时将进程中…...
【网络安全】一文带你了解什么是【网络劫持】
网络劫持(Network Hijacking)是一种网络攻击,攻击者通过非法手段劫持网络通信,导致合法用户的数据流被拦截、篡改或重定向到攻击者控制的系统。这种攻击可以在各种网络层面上进行,包括域名系统(DNS…...

springcloud分布式架构网上商城 LW +PPT+源码+讲解
3系统分析 3.1可行性分析 在开发系统之前要进行系统可行性分析,目的是在用最简单的方法去解决最大的问题,程序一旦开发出来满足了用户的需要,所带来的利益也很多。下面我们将从技术、操作、经济等方面来选择这个系统最终是否开发。 3.1.1技术…...

【Linux】动态库的制作与使用
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

Vue框架引入
vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...