用户级线程和内核级线程具有的优缺点

  1. 用户级线程

用户空间管理线程,每个进程需要有专用的线程表,用来跟踪进程中的线程,这个表和内核中的进程表类似,仅仅记录各个线程的属性,每个线程的程序计数器,堆栈,寄存器,状态等。线程表由运行时系统管理。

优点1:
堆栈指针和计数器被切换,新的进程就自动投入运行。
如果机器有一条保存所有寄存器的指令和一条装入全部寄存器的指令,进程切换就会自在几条指令内完成。这样的线程切换会比至少陷入内核更快一个数量级;
优点2:允许每个进程拥有自己的调度算法;
优点3:用户线程具有良好的扩展性;(因为内核线程中需要一些固定的表格空间和堆栈空间,如果内核线程非常大,就会出现问题)。
优点4:可以在现有的操作系统上;
缺点:
1:阻塞调用不好实现;
解释:一个线程读取键盘,该线程进程系统调用是不被接受的,这样会停止所有的线程,使用线程的主要目标,首先要允许每个线程进行阻塞调用,还要避免被阻塞的线程影响其他的线程,
2:一个线程开始运行,该进程中的其他线程就不能运行,除非第一个线程放弃CPU,在一个进程内部没有时钟中断,

2.内核中线程

每个进程没有线程边表,内核中有记录系统中所有线程的线程表。

优点1:内核线程不需要任何新的非阻塞的系统调用,
优点2:进程中线程引起的页面故障好检查。
缺点:系统调用花销巨大。

实际应用模式:二者结合使用,
内核识别内核级线程,对其进行调度,一些内核级线程会被多个用户级线程多路复用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章