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

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

相关推荐
2401_8920709820 小时前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
fie888921 小时前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
lwx91485221 小时前
Linux-Shell算术运算
linux·运维·服务器
somi721 小时前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
llilian_1621 小时前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
双份浓缩馥芮白21 小时前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
风止何安啊21 小时前
为什么要有 TypeScript?让 JS 告别 “薛定谔的 Bug”
前端·javascript·面试
Yyq130208696821 天前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
黄昏晓x1 天前
Linux ---- UDP和TCP
linux·tcp/ip·udp
路溪非溪1 天前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发