我正在研究ULT和KLT,并有这个疑虑。如果操作系统无法区分ULT和进程,那么它的线程表中是否有任何ULT条目?操作系统维护的线程表中是否有用户级线程的条目?
1
A
回答
2
如果操作系统无法区分ULT和进程,那么它的线程表中是否有ULT条目?
否 - 就操作系统而言,用户级别线程不存在。相反,只有一个线程/进程,通过调用setjmp()和longjmp()来执行“有趣的事情”。
2
号
操作系统(内核)只知道内核级线程,并没有用户级线程的知识。用户级线程由提供线程功能的用户库管理。
例如,Linux不区分线程和进程。可以调度的实体由task_struct数据结构表示。 所以当你的库想创建一些线程时,它会要求内核创建(使用clone())相应的task_structs。您的库可能只需要一个task_struct,在这种情况下,您的所有用户级别线程都复用在同一个task_struct中,或者它可能会为每个用户级别线程请求一个task_struct,在这种情况下,每个用户级别线程都可以被内核用于调度,因为每个线程有一个task_struct。我们可以说 内核只知道内核级线程。用户级别的线程由相应的库创建和管理。
相关问题
- 1. 是否有可能使用操作系统线程创建自己的线程?
- 2. forkIO线程和操作系统线程
- 3. 是否有任何操作系统不支持线程?
- 4. 操作系统线程调度程序是否被JVM覆盖?
- 5. 进程和线程在操作系统
- 6. Java线程和操作系统线程之间的通信
- 7. GPars actors模型是否使用用户线程或本地操作系统线程
- 8. 操作系统和并发线程
- 9. 系统线程vs非系统线程
- 10. 无效Java线程和本地操作系统线程
- 11. 是否多线程Java进程比操作系统的单线程程序更经常地调度?
- 12. i7处理器与Windows8操作系统的多线程问题操作系统
- 13. 是java的多线程对操作系统可见
- 14. 如何在单线程中使用java实现多线程操作系统?
- 15. 当我运行单线程Java程序时,为什么在操作系统级别有多个线程?
- 16. Linux操作系统:系统()+ SIGCHLD处理多线程+
- 17. 实时嵌入式操作系统的线程调度程序
- 18. 托管的主UI线程是否停留在同一个(非托管的)操作系统线程上?
- 19. 操作系统线程在Go程序中
- 20. 守护进程线程是否也是守护进程线程启动的线程?
- 21. 托管线程切换操作系统线程的频率如何?
- 22. weblogic线程监控显示不正确的数字与操作系统线程
- 23. 操作系统多线程有哪些困难?
- 24. 将java线程池中的线程作为守护程序线程是否存在任何问题
- 25. 是否可以在操作系统或编程语言级别实施无共享多线程? (OSX,Objective-C)
- 26. 从多线程过程调用系统(3)是否安全?
- 27. 通过Mule中的守护进程线程维护多个HttpRequests
- 28. Ruby中的多线程系统调用
- 29. C#中的线程操作
- 30. 线程是否表示线程安全?
然后TCB的地址被存储在哪里以及它如何管理? –
这将是用户进程内部的数据结构,就像任何其他用户级别的数据结构一样。它将由用户级线程库管理。 –
好的,谢谢。我明白了:) –