我是靠谱客的博主 羞涩太阳,最近开发中收集的这篇文章主要介绍全局变量和静态局部变量的区别_这可能是最全面的进程与线程区别总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

进程概念的引入

我们都知道:操作系统(OS)的基本特征是并发和共享,即在系统中同时存在几个相互独立的程序,它们交叉地运行,并共享资源。操作系统在用户和应用程序之间控制与协调硬件的使用。势必有一个词语来描述资源的竞争、程序之间的合作和协同以及程序之间的通信,而程序的概念不能描述程序在内存中的运行状态,由此引入进程的概念,即描述程序在内存中的执行时的动态特征,也就是在执行中的程序,一个具有独立功能的程序在一定数据集合上的一次动态执行的过程。windows10,ctrl+shift+esc打开任务管理器,如下图1-1中的腾讯QQ和网易云音乐的exe文件就是一个进程。

5016205aa999bb76f42b6bc73d865ccd.png

1-1 计算机的任务管理器

线程概念的引入

由于进程是资源的拥有者,所以在创建、撤销、切换的操作中需要较大的时空开销,限制了并发程度的进一步提高。为了减少进程切换的开销,把进程作为进程资源分配单位和调度单位的两个属性分开处理,即进程还是资源分配的基本单位,但是不作为调度的基本单位(很少调度和切换),把调度执行和切换的责任交给线程,这样做的好处就是:不但提高系统的并发程度,还能适应新的多处理机(SMP)环境的运行,充分发挥其性能。因此,线程就是进程中的一个实体,进程中独立执行的子任务,不拥有系统资源,只是作为系统调度和分配的基本单位,其和进程中的其他线程共享进程全部资源。

进程和线程的区别

  1. 组成与结构区别。进程是一个实体。每个进程都有其独立的地址空间,一个进程包括:程序代码、当前活动和相关数据(Stack栈--通常是临时数据,如局部变量、函数参数、返回地址等;Heap堆--通常是程序运行中申请的动态内存;数据段--通常是全局变量)。线程是一个轻型实体,一个标准线程包括线程ID、当前指令指针、寄存器集合和堆栈。进程线程都有程序段、数据段,只不过进程由进程控制块(PCB)记录进程的外部特征和描绘进程的动态变化过程。线程由线程控制块(TCB)来描述线程的动态变化;
  2. 进程是系统资源分配的基本单位,有独立的内存空间和系统资源;线程是系统调度和分配的基本单位,与进程中的其他线程贡献进程的资源。处理机分给线程,即处理机上真正运行的是线程;
  3. 动态性。进程是程序在多道程序中的一个执行过程,它是动态产生和动态消亡的,有自己的声明周期和各种不同的状态。同样,线程作为进程中的一个轻量级进程,也有其生命周期和不同状态。进程和线程的各种状态变化分别如图1-2和图1-3所示;
  4. 并发性。不仅进程之间可以并发执行,同一进程中的线程也可以并发执行。但是线程间需要消息通信的方法实现同步。进程之间相互独立,通信比较困难,而线程共享一段区域,通信比较方便。进程执行的过程中包含比较固定的入口、执行顺序、出口,而线程的这些过程会被应用程序所控制;
  5. 系统开销。在创建和撤销进程时,系统都要为之分配和回收资源,所导致系统开销要明显大于创建和撤销线程时的系统开销。
9233f5ec7ef8212adb897824a9021b8c.png

1-2 进程的状态变化

a71412c158450cbc76d6c81703f46e51.png

1-3 线程的状态变化

最后

以上就是羞涩太阳为你收集整理的全局变量和静态局部变量的区别_这可能是最全面的进程与线程区别总结的全部内容,希望文章能够帮你解决全局变量和静态局部变量的区别_这可能是最全面的进程与线程区别总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部