linux中线程的实现以及跟windows系统的比较

1.在linux内核中(只说内核,即核心级线程的实现),它并不区分进程跟线程的区别,实际上,它都是将它们当做进程来实现的,通是通过fork,然后fork调用clone函数。内核级线程有自己的task_struct,自己的内核栈,相较于普通的进程,它只是没有自己的地址空间,而且它从来不会切换到用户空间去执行。内核级线程也是独立的调度单元。。这是linux内核级线程的实现。。linux核心级线程只能由其它核心线程创建,这意味着linux的用户不可以直接创建核心级线程来并行处理自己的程序。。。

另外再说linux pthread库实现的线程。简单来说,linux pthread创建的线程运行在用户空间,但它是内核支持线程(可以在/proc/pid/task目录下看到),它在内核中是有调度实体的,就是可以作为独立调度单元。它应该是有内核支持的线程,但它绝不是上面所说的内核线程,因为内核线程是操作系统创建的用于执行内核任务的,它是不会切换到用户空间执行的。注意这里的内核支持线程跟用户级线程的区别,用户级线程在内核并没有独立的调度实体。它在多处理机上是无法并行的,而linux pthread创建的线程,是支持多处理机上并行处理的。

2.在windows内核中,它是专门设计了支持内核线程的机制的。它在每个task_struct内,为每个内核级线程提供了tcb控制块,每个tcb用于描述自己的独立的资源,并且支持创建核心级线程来并行执行某一个进程的多个核心级线程。而且windows提供api可以将线程指定在某个处理机上运行。如此便可以达到并行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值