面试之操作系统篇
Q: 介绍一下进程、线程和协程
A: 1.进程是资源分配的基本单元,一个进程可以包含一个或多个线程,进程大小一般较大,拥有自己独立的内存空间,进程间通信和切换效率低下
2.线程是资源调度的基本单元,线程大小一般几M,一个进程下的多个线程共享一片内存,因此线程通信和切换效率高,但任何一个线程崩溃都会导致进程中的所有线程崩溃。线程和进程切换都由CPU进行控制
3.协程大小一般为几KB,一个线程可以拥有多个协程,协程切换不需要经过内核调度,因此开销更小,但协程出现阻塞会阻塞整个线程
Q: 线程同步方式有哪些?
A: 1.互斥锁:使用某个临界资源时上锁,其他线程无法使用,使用完毕后解锁
2.自旋锁:当资源被其他线程占用时,会一直循环判断是否能使用,直到获得该资源
3.读写锁:当线程处于写状态时加锁,处于读状态时可以允许其他读状态线程访问,写状态线程无法访问
4.信号量:信号零可以表示资源数量,当资源被占用时,信号量减一,资源被释放时,信号量加一
进程通信方式
1.管道
2.消息队列
3.共享内存
4.信号量
5.socket通信
Q: 信号零和互斥锁区别
A:
Q: 什么是死锁?产生的条件是什么?如何解决?
A: 死锁指两个或以上的线程互相等待对方释放资源而造成无法打破循环的结果
产生条件:1.持有并请求 2.非抢占式 3.循环等待 4.互斥条件
解决办法:1.鸵鸟策略 2.死锁预防:破坏四个条件之一 3.死锁避免:分配资源前检查是否会产生死锁
Q: 什么是虚拟内存?
A: 内存分为物理内存和虚拟内存,物理内存指真实的内存大小,虚拟内存指逻辑上的内存大小,用磁盘来代替内存。当程序调用进程时不需要将所有页都装入物理内存,而是当程序引用到不在物理内存中的页时,通过置换算法将页装入物理内存。
优点:1.将物理内存扩充为逻辑上更大的内存 2.可以控制进程对内存的访问,实现内存保护
缺点:1.页面置换需要时间,频繁置换可能会导致颠簸 2.从虚拟地址到物理地址的转换需要时间
浙公网安备 33010602011771号