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


(多)线程存在的意义


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

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

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

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

在用户空间实现线程


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

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

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


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

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


在内核中实现线程


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


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

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

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




参考《现代操作系统》








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值