注:看面试题时,主要应该以学习为主,面试题有些基本上是我们编程时会遇上的问题,通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题,看完这篇面试题后,希望能对你有所帮助,另外题中有问题的地方可以在评论区指出,在这里谢谢您的观看。
程序、进程、线程
程序
:一组指令的有序集合
进程
:具有一定独立功能的程序关于某个数据集合上的一次运动,是系统进行资源分配和调度的一个单元
线程
:进程的一个实体,是CPU调度和分配的基本单元,是比进程更小能独立运行的基本单元。线程同步的机制
临界区
:通过对多线程的串行化来访问一段公共资源和一段代码。
互斥量
: 只有拥有互斥对象的线程才有权利去访问公共资源。
信号量
:为控制一个有限的用户资源所设计,运行多个线程去访问这统一资源,但要限制访问线程的数量
事件
:用来通知线程有一些事件已经发生,从而开启后序的任务内核与用户线程的区别
内核线程
:操作系统内核支持的多线程
用户线程
:不需要内核支持,外部库支持内存管理的方式:
块式管理、段式管理、页式管理、段页式管理什么是虚拟地址?
指由程序产生的由段选择符和段内偏移地址组成的地址,这两部分组成的地址并没有直接访问物理内存,而是通过分段地址的变换处理后才会对应到相应的物理内存地址。什么是逻辑地址?
指由程序产生的段内偏移地址,有时直接把逻辑地址当成虚拟地址,两个并没有明确的界限。什么是线性地址?
线性地址是指虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址。如果启用了分页机制,那么线性地址可以再经过变换产生物理地址。若未开启,那么线性地址就是物理地址。什么是静态链接?
静态链接
是直接把要使用的函数或过程直接拷贝
到可执行文件内。什么是动态链接是?
动态链接是没有拷贝到可执行文件内,而是添加所用函数的信息,使用时再从相应的库中调用
。进程和线程的差别
调度
:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
拥有资源
:线程没有资源,但是可以访问进程的资源
系统开销
:系统每次创建进程都要为其分配资源,因此进程大开销远大于线程什么是线程安全?
如果多线程的运行结果是可预期的,且与单线程运行的结果是一样的,则说明是“线程安全
”多线程中栈与堆是公有的还是私有的?
A:栈公有, 堆私有
B:栈公有,堆公有
C:栈私有, 堆公有
D:栈私有,堆私有
选C,这个很好解释,栈是系统自动分配的,而堆是用户选择分配和释放的简述嵌入式Linux系统开发流程
1)交叉编译器的制作和安装
2)BootLoader开发和移植
3)嵌入式操作系统开发和移植
4)根文件系统制作和移植
5)应用程序开发
6)系统集成和测试什么是线程池
可以循环的完成任务的一组线程集合。什么是条件变量?
条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。