理解计算机系统_并发编程(4)_基于线程的并发(一):线程基础

前言
       

        以<深入理解计算机系统>(以下称“本书”)内容为基础,对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定

引入

        并发编程的第三种形式:线程

回顾进程

        此前对进程的理解是:进程=进程空间+进程上下文.笔者再简化:进程上下文=进程空间指针,如图所示:

        注:这个模型可能不严谨,但以应用作为出发点(不是专业写操作系统代码),目的是把进程上下文简化成指针,帮助理解.进程有个专门的结构来维护,叫做PCB(进程控制块),里面也包含了相关内容,此处不研究. 

        根据模型做了以下假设:程序运行的过程是CPU不断从进程空间调取数据处理的过程,这个过程看作进程上下文参与了.每个指令的数据都是通过上下文从进程空间传给CPU的.当CPU从当前进程切换到其他进程时(由于时间片或者信号中断),进程上下文会保存当前数据指针(进程上下文),当进程切换回来时,继续切换前进程的执行.该模型把进程两个物理部分连接了起来.

        /*这个模型虽然简陋且不一定准确,但可以讲得通.*/

基于进程和基于I/O复用的并发,基于线程的并发的联系

        1.进程特点:一个流一个单独进程,内核自动调度,共享数据困难.

        2.I/O多路复用特点:只有一个进程,显式调度流,所有流共享整个地址空间.

         基于线程的并发,是两者的混合(黑体字放一起):一个进程,所有流共享地址空间,内核自动调度.所以线程是3种方法里最后讲的,有点像将其他2种方法的优点结合起来.

线程模型     

        线程定义:运行在进程上下文中的逻辑流.

        每个线程都有他自己的线程上下文,包括一个唯一的整数线程ID(Thread ID,TID)、栈、栈指针、程序计数器、通用目的寄存器和条件码.所有的运行在一个进程里的线程共享该进程的整个虚拟地址空间.---黑体字是原话

        ---解读:线程模型和进程模型基本一致.特别提到了线程有一个ID,内核通过一个整数ID识别线程

线程和进程的对比

        1.线程之间是独立和对等的,进程分了父子进程,进程运行时有一些特殊要求.例如父子进程共享文件A指针,当子进程关闭文件A后,父进程也要关闭文件A,才表示完全切断和文件A的联系.

        2.线程上下文比一个进程上下文小得多.所以线程切换比进程切换快得多.---黑体字是原话

        ---解读:照上面图而言,线程上下文和进程上下文应该差不多,都是些指针.但实际上由于进程采用虚拟空间,所以有对应页表要切换,而换页表得开销是比较大的.---进程比线程慢主要原因切换页表.

小结

        线程基本概念        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重庆彭枫

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值