我知道操作系统中有三种线程映射模型.
- 一对一
- 多对一
- 多对多
在这个问题中,我假设我们使用一对一 model.
比方说,现在我重新启动计算机,有10个内核级线程已经在运行.
过了一段时间,我决定运行一个python程序,该程序将启动一个具有四个线程的进程.其中三个线程必须运行一个执行系统调用的函数.
Here is a question, what is the correct scenario when I run the python program.个
A)当一个python程序启动时,内核将立即在内核空间中启动另外4个线程(所以现在内核空间中有14个线程).当用户级的3个线程发起系统调用时,内核会将这些用户级线程映射到4个内核级线程中的3个,这也意味着我们将浪费1个内核级线程.
B)当一个python程序启动时,内核will not立即在内核空间中启动另外4个线程.相反,每当这3个用户级线程发起系统调用并准备与内核对话时,内核都会创建新的内核级线程.在这种情况下,内核将恰好创建3个线程,这也意味着我们不会浪费任何内核级线程.
C)与第二种情况非常相似,但在这种情况下,当这3个用户级线程准备运行系统调用并与内核交谈时,内核将做的是让已经创建的3个内核级线程停止执行它们当前的工作,然后让它们做Python程序要求内核做的工作.
这意味着调度程序将挑选3个随机的内核级线程来停止它们正在做的事情,然后将这些任务信息存储到某个地方.之后,调度器将要求这3个内核级线程首先完成python程序作业(job).在本例中,我们始终只有10个内核级线程.
任何回复和建议的学习material ,我们将不胜感激!