课堂笔记学习视频来自 操作系统
说明:其他”课堂问答笔记“也在”操作系统“专栏
【2-6、2-7、3-1】
- 在生产者消费者问题中,使用PV操作实现同步与使用消息通信的差异?
PV操作或wait、signal操作程序实现相对复杂,效率较低。
实现几个特定的有紧密关联的进程间(如生产者进程和消费者进程)的消息通信比较方便。但对于关联度不够高的进程间的消息通信不够方便(需要编写许多额外的代码)。利用消息通信只需要使用两个原语(send原语和Receive原语),实现起来相对简单,效率较高。
send和Receive,其实就是过程调用,调用OS的API。
一般来说,如果进程间的同步性要求高,那么使用PV操作;否则使用消息通信(对于send方来说,只需要给出接收方而后发出消息即可,而该消息是否被接收方接收到,则不必关系心,同步性要求低),另外有些进程间的通信可能不方面编写wait、signal程序也必须使用消息通信。 - 消息缓冲区和生产者消费者问题中的缓冲区有何异同?
相同点:都可以把它们看成是进程间通信的这间媒介,必须实现缓冲区以及缓冲区中的单元格(消息缓冲区则是某个消息)互斥访问
不同点:生产者消费者问题中的缓冲区只是生产者进程和消费者进程间进行消息沟通的渠道;而消息缓冲区则为所有需要进行消息通信的进程间的中介机构,因此消息发送方在send消息时要指明接收方是谁,接收方要检查消息缓冲区中的什么消息是发给自己的。 - 线程与没有引入线程的进程的主要区别?
1)一个程序至少有一个进程,一个进程至少有一个线程。
2)线程的划分尺度小于进程,使得多线程程序的并发性高。
3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
4)线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
5)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来分别调度和管理以及资源分配——这就是进程和线程的重要区别。
6)线程执行开销小,但不利于资源的管理和保护;而进程正相反。 - 3级调度涉及的存储设备及调度方向?
低级调度——把进程(线程)从就绪队列调入CPU运行的过程;
高级调度——把作业从外存的后备队列调入内存的过程;
中级调度——把处于就绪队列中的进程调回外存(到就绪挂起队列)、把处于阻塞队列的进程调回外存(到阻塞挂起队列),还有把处于就绪挂起队列的进程重新调入内存就绪队列中。
低级调度也叫进程调度
高级调度也叫作业调度
要注意区分几个概念:作业,程序,进程,线程。