嵌入式岗位面试八股文(篇三 操作系统(上))

wx:嵌入式工程师成长日记

1.什么是进程?什么是线程?什么是协程?

进程是资源分配的基本单位,他是程序执行是的一个实例,在程序运行是创建

线程是程序执行的最小单位,是进程的一个执行流,一个进程里包含多个线程

协程是微线程,在子程序内部执行,可在子程序内部中断,转而执行别的子程序,在适当的时候再返回来接着执行

2.进程,线程,协程的区别

进程拥有自己的独立地址空间,每启动一个进程,系统就会分配地址空间,建立数据表来维护代码段,数据段,堆栈段,进程的全局变量是不共用的,这种开销是非常大,而线程共享进程的数据使用相同的地址空间,因此,CPU切换一个线程的开销远小于进程的切换

协程 执行效率极高,协程直接操作栈基本没有内核切换的开销 ,所以上下文切换非常快; 协程不需要多线程的锁机制,因为多个线程从属一个线程,不存在同时写冲突

3.创建进程

子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符 ,父进程与子进程并不共享这些存储空间 ,这是子进程对父进程相应部分存储空间的完全复制 ,执行fork()之后,每个进程均可修改 各自的栈数据以及堆段中的变量,而并不影响另一个进程****

4.进程的状态

有五种状态:创建、就绪、运行、阻塞、终止

5.进程间通信的方式

**1.管道:**分为有名和无名管道,无名管道****只能有血缘关系的进程间通信,是半双工通信,而有名管道允许无血缘进程之间通信。

2.信号量:是个计数器,用来控制多个进程对共享资源的访问,用于进程间的同步和互斥。

3.消息队列:消息的链接表,放在内核中,消息队列独立于发送和接收的进程,进程终止后,消息队列并不会消失,消息队列可以实现消息的随机查询,可以按照消息的类型读取。

4.信号:用于通知接收进程某个事件已经发生,主要作为进程间以及同一进程的不同线程间的同步手段。

5.共享内存:共享内存就是映射一段能被其他进程访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问,共享内存是最快的****IPC,它往往配合其他通信机制使用,如:信号量来实现同步和通信,其原理开辟一个物理内存空间,各个进程物理地址映射到自己的虚拟地址空间,通过虚拟地址就可以直接访问 ,进而实现数据共享,共享内存是最快的通信方式,因为少了数据的拷贝。

6.套接字**:**它可用于不同机器之间的进程通信

(其中信号量、信号、消息队列可以用来同步)

6.什么是僵尸进程,孤儿进程,守护进程

1.僵尸进程:一个进程使用fork出一个子进程,如果子进程退出,但是父进程没有使用****wait或者waitpid函数回收子进程的资源,那么该进程就是僵尸进程(可以通过杀死父进程来结束僵尸进程)

2.孤儿进程 :是指父进程异常退出,而子进程还没退出,那么子进程就会被1号进程(init)收养

3.守护进程 :是指后台进程有意****把父进程先结束,然后被1号进程收养

7.线程间通信方法

1.临界区: 每个线程访问临界资源的那段代码叫临界区,每次只允许一个线程进入临界区,进入后其他线程无法进入

2.互斥量: 采用互斥对象机制,只有拥有互斥对象的线程才可以访问

**3.信号量:**计数器,允许多个线程同时访问统一资源

**4.条件变量:**通过条件变量通知操作的方式保持多线程同步

5.读写锁: 读写锁和互斥量类似,但互斥量要么是锁住状态,要么就是不加锁状态。读写锁一次只允许一个线程写,但允许一次多个线程读,这样效率就比互斥锁要高

相关推荐
骇客野人2 分钟前
Linux 服务器 Python 版 MCP 服务部署整体方案(适配 Claude/Cursor/自研Agent)
linux·服务器·python
天疆说34 分钟前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存
星卯教育tony35 分钟前
NOI Linux 2.0 服务器多用户网页桌面部署方案(腾讯云轻量Ubuntu20.04专属版 CSP复赛比赛环境搭建免安装虚拟机 )
linux·服务器·腾讯云
码匠许师傅37 分钟前
【C++ 面试真题】聊聊 C++ 的虚函数和多态
java·c++·面试
萌新小白YXY1 小时前
SAE J1587/SAE J1708 协议笔记
笔记·单片机·嵌入式硬件
Forever Nore1 小时前
LeetCode 14 最长公共前缀 - 纵向扫描
linux·服务器·leetcode
拂拉氏1 小时前
【知识讲解】 Linux权限相关知识讲解
linux·权限
Shadow(⊙o⊙)2 小时前
Linux网络部分——TCP协议服务端客户端交互接口,入门级硬核解析1.0
linux·网络·tcp/ip
嘉子的秃头日记2 小时前
机械革命“自动修复”无法修复你的电脑
stm32·单片机·电脑
艾莉丝努力练剑2 小时前
【QT:解决问题】Qt5Core.dll:无法定位程序输入点
java·开发语言·qt·学习·面试