|
发表于 2004-4-28 16:45:12
|
显示全部楼层
基本上两种thread: user thread和kernel thread
user thread是在kernel之上的用户层而由thread library执行的, 通常执行速度比较快而且好管理
kernel thread是由kernel自己制造并运行, 速度比较慢, 可是是由KERNEL控制,所以用户本身不用担心像blocking system call此类的问题, WinNT,SOLARIS,DIGITAL UNIX支持此kernel thread
至于multithread model 有三种(基本上现在的OS都支持kernel和user thread):
1, Many to One: 一个kernel thread, 好几个user threads, 这种模式只能1个thread access 内核, 所以不支持parallel 和 multiprocessors, 现在的OS已经不用这个模式了。
2。one to one: 这个模式模拟很多个kernel thread和user thread, 而一个user thread相对一个kernel thread, 此模式支持paralle 和 multiprocessors,但缺点是每次制造一个user thread, 就要同时制造一个kernel thread, 而过量的制造kernel threads会导致系统效率下降。 WinNT, OS2都是用这个模式
3。many to many: 这个模式也是模拟很多个kernel 和 user thread, 但一个user thread 可以对应好几个kernel thread, 而且这种模式下, 通常user thread的数量不可能大过kernel thread, 而one to one 的优点就是user 可以制造多少user thread 都可以。但是concurrency没有办法实现, 因为kernel 一次只能schedule 一个thread. 而many to one 虽然可以实现concurrency, 但是限制了用户制造user thread 的数量, 太多会让kernel 负担加大, 而效率下降。many to many 可以克服以上的所有劣势, user 不但可以不受数量的拘限, 而且达到concurrency. Solaris, DIGITAL UNIX和LINUX都是这种模式。 |
|