您的位置:首页 > 其它

操作系统基础知识-用户空间实现线程-内核实现线程

2017-06-02 20:08 246 查看
(多)线程存在的意义

1.某些活动随着时间的推移会被阻塞,将应用程序分解成可准并行运行的多个顺序线程,程序设计模型会简单些。

2.线程比进程更轻量级,创建,销毁都方便。

3.多个线程允许计算和I/O处理类活动彼此重叠进行,从而加快应用程序执行速度。

4.为真正并行提供实现可能。

在用户空间实现线程





1.整个线程包放在用户空间,内核对此一无所知。所以它可以在不支持线程的操作系统上实现。

2.用户空间管理线程时,每个进程需要其专有的线程表,用来跟踪该进程中线程,与内核的进程表类似。不过他仅仅记录各个线程的属性,如线程的程序计数器,堆栈指针,寄存器和状态等。也就是说当一个线程的状态切换时,只需程序计数器,堆栈指针,寄存器的相应信息改变就可以,也即其线程切换速度极快。

3.允许进程有自己的调度算法,拓展性强(这是相比于内核空间内核线程需要一定固定表格和堆栈空间)。



4.一个线程开始运行,除非该线程自动放弃CPU,否则该进程其他线程就不能运行(此时的单独进程无法进行轮转调度,也没有时钟中断)。

5.阻塞系统的调用问题,一个线程阻塞时,整个进程将阻塞。



在内核中实现线程




此时每个进程没有自己的线程表而是内核中有该线程表,此时线程的切换等需要系统调用.



1.一个线程阻塞时,内核可以调用进程其他线程。

2.当有多个处理机时,一个进程的多个线程可以同时执行



3.线程创建,销毁开销大(需要内核的调度)



参考《现代操作系统》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息