从新整理操做系统概念系类——线程和多线程模型

前言

为何有线程这个概念呢?多线程

传统的进程只能串行执行一系列程序。所以,引入线程来增长并发度。并发

这个时候cpu执行的最小单位就是线程了。函数

线程是一个基本的cpu执行单元,也是程序执行流的最小单位。操作系统

引入线程以后,不只是进程之间能够并发,进程内的各线程之间也能够并发,从而进一步提高了系统的并发度,使得一个进程内也能够并发处理各类任务。线程

引入线程后,进程只做为除cpu以外的系统资源的分配单元。blog

正文

线程属性

线程的实现方式

线程分为用户级线程和内核级线程。进程

用户线程指不须要内核支持而在用户程序中实现的线程,其不依赖于操做系统核心,应用进程利用线程库提供建立、同步、调度和管理线程的函数来控制用户线程。资源

不须要用户态/核心态切换,速度快,操做系统内核不知道多线程的存在,所以一个线程阻塞将使得整个进程(包括它的全部线程)阻塞。同步

因为这里的处理器时间片分配是以进程为基本单位,因此每一个线程执行的时间相对减小。程序

内核线程:由操做系统内核建立和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程因为I/O操做而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程。

操做系统只能知道内核级线程,所以只有内核级线程才是处理机分配的单位。

在上面的模型中,该进程由两个内核级线程,三个用户级线程,在用户看来,这个进程由3个线程。可是即便该进程在一个4核处理机上的计算机运行,也最多只能分配到两个核,最多只能有两个用户线程并发执行。

用户级线程和内核级线程映射问题

多对一模型

一对一模型

多对多模型

相关文章
相关标签/搜索