线程与进程--线程

在传统的操作系统中,进程是系统进行资源分配的单位,由于并行技术、网络技术、并发程序设计效率的反正,引入了多线程机制;

1、多线程环境下的进程与线程

1、多线程下的进程

在单线程进程模型中,进程和线程的概念可以不加区别,它是由进程控制块和用户地址空间,以及系统/用户堆栈等组成。在进程运行时,处理器的寄存器由进程控制,而进程不运行时,这些寄存器的内容会被保护,所进程与进程之间的关系比较疏远,相对独立,进程管理的开销大,进程间通信效率低微。


image.png

使用单线程进程进行并发程序设计称为并发多进程程序设计,采用此种方式时,并发进程之间的切换和通信均要借助进程管理和进程通信机制,因而实现代价较大,进一步影响了并发的粒度。

为解决这一问题,我们将一个进程的运行划分为两个部分:对资源的管理者和实际的指令执行序列


image.png

如果把进程的管理和执行相分离,进程是操作系统中进行保护和资源分配的单位,允许一个进程中包含由多个可并发执行的控制流,这些控制流的切换时,不需要通过进程调度,通信时可以借助共享内存区,这就是并发多线程序设计


image.png

在多线程环境中,仍然有与进程相关的是PCB 和用户地址空间,而每个线程则存在独立堆栈,以及包含寄存器信息、优先级、其它有关状态信息的线程控制块。线程之间的关系较为密切,一个进程中的所有线程共享其拥有的状态和资源。它们驻留在相同的地址空间,可以存取相同的数据。例如,当一个线程改变了主存中一个数据项时,如果这时其它线程也存取这个数据项,它便能看到相同的结果。


image.png

2、多线程环境下的线程概念

线程则是指进程过程中的一条执行路径(控制流),每个进程内允许包含多个并行执行的路径,这就是多线程。多线程时系统进行处理器调度的基本单位,同一个进程下的所有线程共享进程获得的主内存空间和资源。线程具体:

  • 一个线程执行状态(就绪、运行。。。)
  • 有一个受保护的线程上下文,当线程不执行时,用于存储现场信息
  • 一个独立的程序指令计数器
  • 一个执行堆栈
  • 一个容纳局部变量的静态存储器
  • 无挂起
    其含义以下特性:
  • 并行性:同一个进程的多线程可以在一个或多个处理器上并发或并行的运行
  • 共享性:同一个进程中的所有线程共享进程获得主存空间和一切资源
  • 动态性:线程也是程序在相应数据集上的一个执行,由创建而产生,至撤销而消亡,由生命周期
image.png

空间是完成一个程序的运行所需占有和管理的内存空间,它封装了对进程的管理,包括对指令代码、全局数据和 I/O 状态数据等共享部分的管理。线程封装了并发(concurrency),包括对 CPU 寄存器、执行栈(用户栈、内核栈)和局部变量、过程调用参数、返回值等线程私有部分的管理。线程主动地访问空间。

3、线程的状态

于进程相似,线程也有一个生命周期,因而也存在各种状态。从理论上来说,线程的关键状态由:运行、就绪、和阻塞。其状态变换类似于进程

2、线程的实现

从实现的角度,线程分为两种,用户级线程(ULT 如Java),内核级线程(KLT 如OS/2)。后者可归结为内核支撑线程或轻量进程。还有一些为混合式线程;


image.png

1、内核级线程 KLT

在纯内核级线程设施中,线程管理的所有工作由操作系统OS内核来完成。KLT专门提供一个API,以供调用,应用区不需要有线程管理的代码,而是由内核调度KLT。

image.png

2、用户级线程 ULT

纯 ULT 设施中,线程管理的全部工作都由应用程序来做,内核是不知道线程的存在的。用户级多线程由线程库来实现,任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行来实现多线程。线程库是一个 ULT 管理的例行程序包,它包含了建立/毁灭线程的代码、在线程间传送消息和数据的代码、调度线程执行的代码、以及保护和恢复线程状态(contexts)的代码。


image.png

Jacketing 技术
为了解决用户级线程的缺点,使用一种称作jacketing的技术。主要思想是把阻塞式的系统调用改造成非阻塞式的,当线程调用系统调用,首先调用 jacketing 实用程序,由jacketing 程序来检查资源使用情况,以决定是否调用系统调用或传递控制权给另一个线程;

image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,098评论 0 23
  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 11,898评论 3 34
  • 1 我的大学生活之大学英语学习 1) 在这个学期的大学英语学习中,我的GPS [Gains]我学会了不少的新单词以...
    17数408王媛阅读 208评论 5 1
  • 嗯 我知道您的意思,也知道您的顾虑,开始的时候就很清楚,然后分开了半年,然后她又联系了我,上次我过去后,也说过以后...
    没钟意阅读 199评论 0 0
  • 作者 娜娜 一句戏言唐国现,桐叶玉圭诸侯位。 叔虞勤政民爱戴,建了祠堂留纪念。 始建年代无从考,北魏郦道有记载。...
    芙蕖姑娘阅读 744评论 1 1