Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33152
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 62
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-17 20:56
个人简介

品味工作生活人生,实现自我人生价值,

文章分类
文章存档

2014年(5)

分类: LINUX

2014-04-17 22:30:40

 

一、线程分类

(一)用户级线程(User Level Thread)


1、特点

(1)由应用程序完成所有线程的管理;

①通过线程库(用户空间)管理

②一组管理线程的过程

(2)核心不知道线程的存在;

(3)线程切换不需要核心态特权;

(4)调度是应用特定的。

2、线程库

(1)创建、撤消线程;

(2)在线程之间传递消息和数据;

(3)调度线程执行;

(4)保护和恢复线程上下文。

3、对应用户级线程的核心活动

(1)核心不知道线程的活动,但仍然管理对应进程的活动;

(2)当线程调用系统调用时,整个进程阻塞;

(3)但对线程库来说,线程仍然是运行状态,即线程状态是与进程状态独立的。

4、用户级线程的优点和缺点

(1)优点:

①线程切换不调用核心。

②调度是应用程序特定的:可以选择最好的算法。

③ULT可运行在任何操作系统上(只需要线程库)。

(2)缺点:

①大多数系统调用是阻塞的,因此核心阻塞进程,故进程中所有线程将被阻塞。

②核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上。

(二)核心级线程(Kernel Level Thread)


1、特点

(1)所有线程管理由核心完成;

(2)没有线程库,但对核心线程工具提供API;

(3)核心维护进程和线程的上下文;

(4)线程之间的切换需要核心支持;

(5)以线程为基础进行调度;

(6)例子:Windows NT,OS/2。

2、核心级线程的优点和缺点

(1)优点:

①对多处理器,核心可以同时调度同一进程的多个线程。

②阻塞是在线程一级完成。

③核心例程是多线程的。

(2)缺点:

在同一进程内的线程切换调用内核,导致速度下降。

(三)用户级与核心级的结合方法


特点:

1、线程创建在用户空间完成;

2、大量线程调度和同步在用户空间完成;

3、程序员可以调整KLT的数量;

4、可以取用户级和核心级中最好的。

(四)轻型进程(LWP)

1、每个用户级线程利用LWP与内核通信;

2、每个LWP支持一个或多个用户级线程,并映射到一个核心级线程;

3、每个LWP对应用程序可见,内核看到的是多个LWP而看不到用户级线程。

(五)四类线程间的关系


二、线程的状态与转换

用户级线程




                                               
轻型进程状态                                                                                                    

阅读(2376) | 评论(0) | 转发(0) |
0

上一篇:linux线程浅析

下一篇:全排列递归算法

给主人留下些什么吧!~~