5. 线程的实现方式
来源:互联网 发布:sql replace替换空值 编辑:程序博客网 时间:2024/06/05 19:14
进程的概念包含两个特点:
- 资源所有权:一个进程包括一个存放进程映像的虚拟地址空间;一个进程总是拥有对资源的控制或所有权。操作系统提供保护功能,以防止进程之间发生不必要的与资源相关的冲突。
- 调度/执行:一个进程沿着可以通过一个或多个程序的执行路径执行。其执行过程可能与其他进程的执行过程交替进行。因此,一个进程具有一个执行状态和一个被分配的优先级,它是一个可被操作系统调度和分派的实体。
既然上述两个特点是独立的,为区分这两个特点,分派的单位通常称为线程,而拥有资源所有权的单位通常仍称为进程。
线程的实现可以分为:用户级线程和内核级线程。
- 用户级线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态切换,速度快,操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。
- 内核级线程:由操作系统内核创建和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。
两者的区别:
1)内核级线程是OS内核可感知的,而用户级线程是OS内核不可感知的。
2)用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
4)在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。
5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。
2)用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
4)在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。
5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。
0 0
- 5. 线程的实现方式
- 线程的实现方式
- 线程的实现方式
- 线程的实现方式
- 线程的实现方式
- Android线程、线程、线程的实现方式!
- android 线程的实现方式
- java线程的实现方式
- 实现线程的方式二
- Java线程的实现方式
- 实现线程同步的方式
- 线程-实现线程的两种方式
- 线程的2种实现方式
- 用消息的方式实现线程通信
- 实现线程的两种方式
- 线程的实现及其启动方式
- 实现线程的两种方式
- java线程的三种实现方式
- MySQL数据文件介绍及存放位置
- LeeCode: Remove Element
- BOW(bag of words)
- C++中实现单例模式方法
- SSIS Lookup 找不到匹配数据
- 5. 线程的实现方式
- Logistic regression (逻辑回归) 概述
- 字节对齐详解
- 【opencv】cvCaptureFromFile的使用
- Hibernate的clear(),flush(),evict()方法详解
- LA 3027 Corporative Network 合作网络【并查集+路径压缩】
- object-c笔记
- CodeForces - 38E Let's Go Rolling!
- Light OJ 1356 Prime Independence 最大独立集+素数筛选