嵌入式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框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…...
如何免费构建个人游戏串流服务器:Sunshine开源方案完整指南
如何免费构建个人游戏串流服务器:Sunshine开源方案完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,让您…...
nli-distilroberta-base入门教程:零基础理解自然语言推理任务
nli-distilroberta-base入门教程:零基础理解自然语言推理任务 1. 什么是自然语言推理? 自然语言推理(Natural Language Inference,简称NLI)是让计算机理解两段文本之间逻辑关系的任务。想象一下老师批改作业的场景&a…...
it-tools:Docker一键部署,中文界面即开即用
1. 为什么选择Docker部署it-tools? 最近在帮团队搭建开发环境时,发现很多同事都在反复安装各种零散的小工具——JSON格式化、时间戳转换、密码生成器...既占用本地资源又难以统一管理。直到发现了it-tools这个神器,它把200实用工具打包成Web应…...
CVPR 2025新秀OverLoCK上手实测:在COCO数据集上跑目标检测,比MogaNet-B高1% AP是怎么做到的?
OverLoCK实战指南:如何在COCO目标检测任务中超越MogaNet-B 1% AP 计算机视觉领域的主干网络架构正在经历一场静默革命。2025年CVPR最新收录的OverLoCK网络以其创新的"先概览再聚焦"设计理念,在多个视觉任务中展现出惊人的性能突破。本文将带您…...
企业级母婴商城系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
摘要 随着互联网技术的快速发展和电子商务的普及,母婴用品市场呈现出蓬勃发展的态势。年轻父母对于母婴产品的需求日益多样化,传统的线下零售模式已无法满足其便捷、高效、个性化的购物需求。因此,构建一个功能完善、安全可靠的企业级母婴商城…...
intv_ai_mk11效果实测报告:在中文技术问答、创意写作、逻辑推理三维度得分分析
intv_ai_mk11效果实测报告:在中文技术问答、创意写作、逻辑推理三维度得分分析 1. 测试背景与模型介绍 intv_ai_mk11是一款基于Llama架构的AI对话机器人,拥有7B参数规模,专门针对中文场景优化。本次测试将从三个核心维度评估其实际表现&…...
MinerU智能文档理解镜像:财务报表自动识别实战体验
MinerU智能文档理解镜像:财务报表自动识别实战体验 1. 引言:财务文档处理的痛点与机遇 在财务工作中,我们经常需要处理各种格式的财务报表——PDF扫描件、Excel截图、纸质文档照片等。传统的手工录入方式不仅效率低下,还容易出错…...
Git-RSCLIP入门到精通:从基础地物识别到复杂场景分析全流程解析
Git-RSCLIP入门到精通:从基础地物识别到复杂场景分析全流程解析 1. 遥感智能分析的新利器 在遥感图像分析领域,传统方法往往需要大量标注数据和复杂的模型训练流程。Git-RSCLIP的出现彻底改变了这一局面,它基于先进的SigLIP架构,…...
YUI Compressor CSS压缩黑科技:从background-position到media query的全面优化指南
YUI Compressor CSS压缩黑科技:从background-position到media query的全面优化指南 【免费下载链接】yuicompressor YUI Compressor 项目地址: https://gitcode.com/gh_mirrors/yu/yuicompressor YUI Compressor是一款由Yahoo!开发的终极CSS和JavaScript压缩…...
**元宇宙经济中的智能合约开发实战:用Solidity构建去中心化资产交易系统**在元宇宙经济蓬勃发展的今
元宇宙经济中的智能合约开发实战:用Solidity构建去中心化资产交易系统 在元宇宙经济蓬勃发展的今天,数字资产的流通与确权成为核心议题。无论是虚拟土地、NFT艺术品还是游戏道具,背后都离不开区块链技术的支持。而智能合约正是连接现实世界资…...
