操作系统常见面试问题

来源:互联网 发布:域名和空间费用 编辑:程序博客网 时间:2024/06/09 14:44

1、死锁

死锁产生的原因:(1)系统资源不足;(2)进程推进的顺序不合适;(3)系统资源分配不恰当

死锁的四个必要条件:

(1)互斥条件:每个资源每次只能被一个进程使用

(2)请求与保持条件:进程在请求资源被阻塞时,已获得的资源保持不放

(3)不可剥夺条件:进程已保持的资源在未使用完之前,不可被剥夺

(4)循环等待条件:若干进程形成循环等待资源的环形

死锁避免:系统对进程的资源申请进行动态检查,并根据检查的结果确定是否分配资源。如果资源分配后系统可能出现死锁,则不予分配,否则予以分配

死锁预防:就是设法破坏死锁的四个必要条件,严格防止死锁的出现


2、线程通信

(1)同步:使用synchronized或者Lock锁机制实现线程的通信

(2)while轮询:线程通过while语句轮询机制来检测某一个条件,当其他线程运行中更改了条件,则其他线程就可运行。轮询条件一般使用volatile关键字修饰。这种方式会浪费CPU资源

(3)等待/通知机制:wait()方法作用是使当前线程进行等待,并释放锁,指导被通知或者中断;notify()方法在执行之前需要获得锁,该方法的作用是通知那些等待的其他线程

(4)管道:使用java.io.PipedInputStream和java.io.PipedOutputStream进行通信,通过管道将一个线程中的消息发送给另一个线程

线程间同步:线程的同步方法是由锁来实现的,每个对象都有且仅有一个锁,这个锁与一个特定的对象关联,线程一旦获得了该对象锁,其他访问该对象的线程无法访问该对象的其他同步方法。当多个线程竞争同一个对象锁时,没有获得锁的线程将发生阻塞


3、进程通信

(1)管道:半双工通信方式,数据在管道中只能单向流动

(2)消息队列:消息队列是消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号量传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点

(3)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问资源,因此,主要作为进程间以及同一进程内不同线程之间的同步手段

(4)共享内存:共享内存就是映射一段能够被其他进程所访问的内存,这段内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对进程间通信方式运行效率低而专门设计的,它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信

(5)套接字:套接字也是进程间通信机制,与其他进程通信机制不同的是,它可用于不同机器间的进程通信

0 0
原创粉丝点击