作业二 进程与线程
1.根据下图,回答问题。(共65分)
(1) 请简述进程发生状态变迁1、3、4、6、7的原因。(每条5分.共25分)
- 1表示操作系统把处于创建状态的进程移入就绪队列;
- 3表示进程请求I/O或等待某事件;
- 4表示进程用行的时间片用完;
- 6表示I/O完成或事件完成;
- 7表示进程完成。
(2) 系统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,这种变迁称为因果变迁。下述变迁是否为因果变迁:3~2,4~5,7~2,3~6,请说明原因。(每条10分.共40分)
- 3→2是因果变迁,当一个进程从运行态变为阻塞态时,此时CPU空闲,系统首先到高优先级队列中选择一个进程。
- 4→5是因果变迁,当一个进程运行完毕时,此时CPU空闲,系统首先到高优先级队列中选择进程,但如果高优先级队列为空,则从低优先队列中选择一个进程。
- 7→2 是因果变迁,当一个进程运行完毕时,CPU空闲,系统首先到高优先级队列中选择一个进程。
- 3→6不是因果变迁,一个进程阻塞时由于自身的原因而发生的,和另一个进程等待的时间到达没有因果关系。
2. 用户级线程和内核支持线程有何区别?(25分)
- ①内核支持:用户级线程可在一个不支持线程的OS中实现,而内核支持线程则需要得到OS内核的支持。
- ②处理机的分配:在多处理机环境下,对纯粹的用户级线程来说,内核只为一个进程分配一个处理机,当设置有内核支持线程时,内核可调度一个应用中的多个线程同时在多个处理机上并行运行,从而提高程序的 执行速度和效率。
- ③调度和线程执行时间:对设置有内核支持线程的系统,处理机调度的单位是线程;而在用户级线程的系统,调度基本单位为进程,当进程获得CPU时,隶属于该进程的多个线程可通过用户态下的线程调度分享由内核分配给进程的CPU执行时间。在相同条件下,内核支持线程通常会得到比用户级线程更多的CPU执行时间。
- ④切换速度。用户级线程的切换通常发生在一个应用程序的各线程之间,由于无须陷入内核,切换的规则简单,切换速度相对快。
- ⑤系统调用:许多系统调用都会引起阻塞,当一个用户级线程执行系统调用时,被阻塞的是整个进程;而当一个内核支持线程执行这些系统调用时,则仅阻塞这一线程,但仍可调度其所属进程的其他线程执行。
3. 在多道操作系统控制下,一个作业反复执行多次,它的运行时间都相同吗?为什么?(10分)
一个作业反复执行多次,它每次的运行时间可能并不相同。(2分)
由于在多道操作系统控制下,一个作业需要和其他作业创建的进程并发执行,使其在执行过程中呈现异步性,时走时停,其开始、暂停及再次获得调度的时间都是无法预知的,因此其运行时间无法确定。(8分)