嵌入式常问面试题
1、说说进程和线程的区别
答:
简单的来说,一个程序至少有一个进程,一个进程至少有一个线程。
第一点、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
进程则不会影响另外一个进程,它有自己的独立地址空间。
第二点、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。
2、进程间通信都有些什么?
答:
1、无名管道通信
2、有名管道通信
3、消息队列通信
4、信号量通信
5、信号
6、共享内存通信
7、套接字通信
3、进程有几种状态
一般来说,进程有三个状态,即就绪状态,运行状态,阻塞状态
总结:fork一个进程之后,进程加入队列,处在就绪态,等待被调用,此时如果得到运行就进入运行态,这时如果遇到阻塞状态就进入等待态等待再条件满足后再次进入就绪态,如果运气不好,在运行态时直接被结束了,就进入了僵尸态,如果被信号给终止了,就进入停止态。
4、对内核各种锁的了解
内核锁
1、原子操作(atomic):
2、自旋锁(spinlock/spinlock_irqsave):
3、读写自旋锁(rwlock):
4、顺序自旋锁(seqlock):
5、RCU(读-拷贝-更新):
6、信号量(semaphore):
7、读写信号量;
更多面试题请观看我的嵌入式面经专栏 专栏地址在下方
答:
简单的来说,一个程序至少有一个进程,一个进程至少有一个线程。
第一点、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
进程则不会影响另外一个进程,它有自己的独立地址空间。
第二点、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。
2、进程间通信都有些什么?
答:
1、无名管道通信
2、有名管道通信
3、消息队列通信
4、信号量通信
5、信号
6、共享内存通信
7、套接字通信
3、进程有几种状态
一般来说,进程有三个状态,即就绪状态,运行状态,阻塞状态
总结:fork一个进程之后,进程加入队列,处在就绪态,等待被调用,此时如果得到运行就进入运行态,这时如果遇到阻塞状态就进入等待态等待再条件满足后再次进入就绪态,如果运气不好,在运行态时直接被结束了,就进入了僵尸态,如果被信号给终止了,就进入停止态。
4、对内核各种锁的了解
内核锁
1、原子操作(atomic):
2、自旋锁(spinlock/spinlock_irqsave):
3、读写自旋锁(rwlock):
4、顺序自旋锁(seqlock):
5、RCU(读-拷贝-更新):
6、信号量(semaphore):
7、读写信号量;
更多面试题请观看我的嵌入式面经专栏 专栏地址在下方
c++/嵌入式面经专栏-牛客网
https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2Fcreation%2Fmanager%2FcolumnDetail%2FMJNwoM
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-19 04:14
浙江大学 嵌入式工程师 别装傻了:秋招基本结束了,其他家也不想面了,能拒都拒了,还是不占用大伙的hc了😂,大厂进不去,小厂不想去,华子已经是我能去的最好的选择了,安心准备论文的事了😄
点赞 评论 收藏
分享