《C#并发编程经典实例》学习笔记-进程(process)和线程(thread)

正文首要参考自孙钟秀主编的《操作系统教程》一书中关于进度和线程的局地。

进程

何以引入进度?

一,刻画系统动态性,发挥系统并发性,升高能源利用率。

以C#为例,在编辑器Visual Studio
Code写了几行代码,保存为cs文件。在未运营情形的下的代码,称之为静态的先后。静态的先后是1个针锋相对的定义。当程序运转起来,它的运行看重于电脑(CPU)和主存储器能源,笔者可以称为动态的顺序。以该程序动态执行的经过为着力单位,抽象出2个概念,进度,即开展中的程序。

进程二字,紧要是强调动态性。处理器调动进度,存储器为经过分配过程空间,为统计机分配调动控制进度的半空中,进度之所以创建。当资源不足,恐怕需等候某些事件时有暴发,进程暂停实施。乃至最后经过运转结果,程序退出主存储器,进度没有。进度的面世到没有,无疑是在持续地动态变化。

二,解决共享性。

当您做到一个公用函数时,该函数可以被多少个程序调用。
图片 1

函数A在被先后甲调用,程序甲正在等候写入磁盘数据操作的回到,处理器空闲,为增强处理器利用功效,程序乙于此同时开头施行,进入先河点a。

那会儿,如何描述函数A?A处于等待点?A处于起首点a?试着引入进度的概念,将函数和顺序联系起来,A对于程序甲构成进程A,A对于程序乙构成进程A。进程A居于等待点,进度A地处先导点。

经过(process)这一个名词最早是一九六零年在MIT的MULTICS和IBM集团的
TSS/360系统中指出的,直到当前对经过的概念和称号均不合并,差距的系统中应用差其余术语名称,例如,MIT称经过(process),IBM集团尽职分(task)和
Univac公司称运动(active)。可以说进程的定义各个多种,国内学界比较一致的见解是:经过是3个可并发执行的拥有独自成效的次第关于有个别数据集合的几次实施进度,也是操作系统举办财富分配和保障的主导单位(1978年全国操作系统学术会议)

经过属性:

  1. 结构性。进度至少有三要素组成:程序块、数据块、进度控制块。
  2. 共享性。八个进程可共享相同的顺序。
  3. 动态性。进度是动态的定义,有生命周期。程序作为一组有序指令的体系合集,是静态概念,程序可以当作一种系统资源永远存在。
  4. 独立性。进度既是系统中财富分配和保险的着力单位,也是系统调度的独自单位(单线程进度)。凡是未建立进程的次序,都不可以看做单身单位出席运作。日常,每一个进程都足以分级独立的速度在
    CPU上有助于。
  5. 制约性:并发进程之间存在着制约关系,进度在进行的关键点上急需互相等待或互通音讯,以保证程序执行的可再次出现性和测算结果的惟一性。
  6. 并发性:进程可以并发地执行,进度的出现质量立异能源利用率和提升系统效用。

线程

乘机交互技术、网络技术和软件设计技术的腾飞,给并发程序设计作用带来了一多种新的标题,紧要表以往:

  • 经过时空的开发大,频仍的历程调度将成本多量电脑时间,要为各种进程分配存储空间范围了操作系统中经过的总数。
  • 进度通讯的代价大,每回通讯均要涉及通讯进度之间或通讯进程与操作系统之间的音讯传递。
  • 进度之间的并发性粒度较粗,并发度不高,过多的进度切换和通讯延迟使得细粒度的并发贪小失大。
  • 不切合并行总结和分布并行统计的须要,对于多处理器和分布式的计量环境来说,进度之间多量往往的通讯和切换,会大大下落并行度。
  • 不切合客户!服务器计算的渴求。对于
    C/S结构来说,那多少个急需反复输入输出并同时多量乘除的服务器进程(如数据库服务器、事务监督程序)很难突显功能。

如果说操作系统中引入进度的目的是为着使多个程序能并发执行,以革新能源使用率和增加系统功用,那么,在操作系统中再引入线程,则是为了削减程序出现执行时所付出的时空费用,使得并发粒度更细、并发性更好。

经过可以分为两项功能:一是独自分配财富,二是被调度分派执行。分配财富仍由进程完毕,无需频仍切换。抽出线程的定义,将被调度分派执行的职务移交给线程,可以被频仍的调度和切换。

进度和线程的相对概念

单线程(结构)进度(single threaded
process):进程在任方今刻唯有三个举办控制流
在单线程(结构)进度(single threaded
process)中,进程和线程的概念能够不加区分。

图片 2

多线程(结构)进程(multiple threaded process):

  • 在同一进度中布置出多条控制流;
  • 多控制流之间可以并行执行;
  • 多控制流切换不需通过进度调度;
  • 多控制流之间还足以经过内存区直接通信,下跌通讯支出

图片 3

八线程环境中经过的概念:进度是操作系统中进行保证和财富分配的中坚单位。
它具有:

  • 三个虚拟地址空间,用来包容进程的映像;
  • 对总计机、其余(通讯的)进程、文件和 I/O能源等的有支配有保证的拜访。

而传统进度原先所负责的控制流执行职分交给称作线程的一些形成。

二十四线程环境中的线程概念:线程是操作系统进度中可见独立执行的实体(控制流),是电脑调度和分担的焦点单位。线程是经过的组成部分,各个进程内允许包涵四个冒出执行的实业(控制流),那就是多线程。同壹个进度中的全部线程共享进度取得的主存空间和财富,但不享有能源。

线程具有:

  • 线程执行景况(运转、就绪、等待⋯⋯)。
  • 当线程不运转时,有1个受保证的线程上下文,用于存储现场消息。所以,观看线程的一种艺术是运营在经过内三个单身的次第计数器。
  • 二个实施堆栈。
  • 3个兼收并蓄局地变量的主存存储区。

线程属性:

  1. 并发性:同一进度的多少个线程可在三个或多少个电脑上出现或相互地进行,而经过之间的产出执行衍生和变化为不一样进度的线程之间的面世执行。
  2. 共享性:同一个进度中的全数线程共享但不享有进度的情形和财富,且驻留在进度的同二个主存地址空间中,可以访问同一的数额。所以,需求有线程之间的通讯和一块机制。通信和一块的落到实处丰盛有利于。
  3. 动态性:线程是先后在对应数据集上的三遍实践进度,由成立而发生,至撤消而化为乌有,有其生命周期,经历各个地方的变迁。每种进度被成立时,至少还要为其创设二个线程,须要时线程可以再创制其他线程。
  4. 结构性:线程是操作系统中的基本调度和分担单位,因此,它具有无可比拟的标识符和线程控制块,其中应包罗调度所需的整套私有音信。

进度可以分开为七个部分:财富聚集和线程集合。进度要支撑线程运转,为线程提供地点空间和各样能源,它包裹了管理音讯,包罗对指令代码、全局数据和
I/O状态数据等共享部分的管住。线程封装了实施消息,蕴含对CPU寄存器、执行栈(用户栈、内核栈)和局地变量、进程调用参数、再次回到值等线程私有部分的保管。由于线程具有许多古板进程所具备的特点,所以也把线程称为轻量进度LWP(Light-Weight Process)。

图片 4

相关文章