内核级线程、用户级线程与时间轮转调度算法
某操作系统支持内核级线程,且处理器采用时间片轮转调度算法。该系统现有进程A和进程B,且进程A拥有2个线程、进程B拥有100个线程,那么进程A执行时间一般应为进程B执行时间的( D )。
A.50倍
B.100倍
C.1倍
D.1/50
某系统不支持内核级线程但支持用户级线程,且处理器采用时间片轮转调度算法。该系统现有进程A和进程B,且进程A拥有1个线程、进程B拥有100个线程,那么进程A执行时间一般应为进程B执行时间的( B )。
A.50倍
B.1倍
C.100倍
D.1/100
要理解上面两道题,先简单看一下这几个重要概念(更加细节不赘述,其他博客更清楚):
- 用户级线程:用户级线程,说白了就是应用程序的所支持的线程,一切有关线程的工作都是由应用程序完成,内核意识不到线程的存在!用户级线程对于操作系统是不可见的,因此无法调度到内核。每个进程的线程只在用户空间可见。
- 内核级线程:线程的所有管理工作都是由内核来控制的,线程对内核可见,一个用户线程被映射到一个内核线程。
- 时间轮转调度算法(暴力理解):5个和尚(进程)排队打饭,5个人的饭量为2,3,1,4,5(进程执行完所需时间),打饭的勺每次能打3饭量(时间片),规定每个和尚只给一勺,可多不可少,如果够了就走(进程执行完毕,结束),不够就排到队尾等着打下一勺。这里每个勺能打3饭量就是规定的时间片,进程来回排队就是时间轮转度算法。
题目解析:在上面两题中,A进程有2个线程,B进程有100个线程
对于支持内核级进程的情况:内核能看到进程中的线程,时间片又都是一样的,所以2/100=1/50,选D;
对于支持用户级线程的情况:内核只能看到进程,所以就是 A进程 VS B进程,1V1,所以选B
只是自己的浅显理解,欢迎大佬评论区补充,如有错误,欢迎指正!