程序、进程以及线程的爱恨情仇

很多人都听说过程序,也听过程序员这种职业!那么什么是程序呢?又为什么叫程序员呢?
还有那传说中的进程以及线程又是什么鬼?
他们之间又有怎样的瓜葛呢?请听我娓娓道来…!

大象装冰箱,开始第一步:


程序是什么?


程序是为实现特定目标或解决特定问题,而用计算机语言编写的命令序列的集合;
一个程序应该包括以下两个方面的内容:

1.对数据的描述
在程序中要制定数据的类型和数据的组织形式,即数据结构;

2.对操作的描述
即操作步骤,也就是算法;一般分为系统程序和应用程序两大类;
(计算机中的程序在港澳台地区成为程式)
程序就是为使电子计算机执行一个或多个操作或执行某一任务按序设计的计算机指令的集合由程序计算器控制。程序也是用汇编语言、高级语言等开发编制出来的可以运行的文件;
在计算机中称可执行文件;

这就是度娘为我们准备的超标准的答案;你懂了吗?
在这里插入图片描述

什么?你还不懂;

这么说吧!(开始我的表演…)
程序是啥?打开手机、电脑等等,你看到的每一个OOXX的图标都是程序;
程序是啥?程序就好比装着一大堆圣旨的木头箱!
箱子可以有很多种,里面的圣旨也可以有很多张;
圣旨代表什么呢?
那就是命令!这命令也有大小之分,就好比“天子(程序员)”与“诸侯(计算机)”;
这诸侯一声令下,他管那片一切绿灯;这就形成了程序;
但,天子一声令下,那就有了天高皇帝远的“佳话”了;
执行便是程序(可执行文件【可以运行的文件】);不执行便不是(不可执行文件);
(不同程序设计语言编写的程序就如同不同国家的圣旨一样);
程序员的存在就相当于天子的存在;
这么一想,我还有点小骄傲;我正在从事的职业还是皇族呢!
程序员.equals(天子);true;
在这里插入图片描述

那进程和线程又是什么嘞?

我找到了以下内容:


进程是什么?


执行中的程序叫做进程(Process),是一个动态的概念,是系统进行资源分配和调度的基本单位。现代的操作系统都可以同时启动多个进程。比如:我们在用酷狗听音乐,也可以使用 eclipse 写代码,也可以同时用浏览器查看网页。进程具有如下特点:

  1. 进程是程序的一次动态执行过程, 占用特定的地址空间。
  2. 每个进程由 3 部分组成:cpu、data、code。每个进程都是独立的,保有自己的cpu 时间,代码和数据,即便用同一份程序产生好几个进程,它们之间还是拥有自己的这 3 样东西,这样的缺点是:浪费内存,cpu 的负担较重。
    3.多任务(Multitasking)操作系统将 CPU 时间动态地划分给每个进程,操作系统同时执行多个进程,每个进程独立运行。以进程的观点来看,它会以为自己独占 CPU 的使用权。
    4.进程的查看
     Windows 系统: Ctrl+Alt+Del,启动任务管理器即可查看所有进程。
     Unix 系统: ps or top。
    在这里插入图片描述

线程是什么?


一个进程可以产生多个线程。同多个进程可以共享操作系统的某些资源一样,同一进程
的多个线程也可以共享此进程的某些资源(比如:代码、数据),所以线程又被称为轻量级
进程(lightweight process)。

  1. 一个进程内部的一个执行单元,它是程序中的一个单一的顺序控制流程。
  2. 一个进程可拥有多个并行的(concurrent)线程。
  3. 一个进程中的多个线程共享相同的内存单元/内存地址空间,可以访问相同的
    变量和对象,而且它们从同一堆中分配对象并进行通信、数据交换和同步操作。
    4.由于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便而且信息传递的速度也更快。
    5.线程的启动、中断、消亡,消耗的资源非常少。
    在这里插入图片描述

你懂了吗?
停…别说what说国语;

那进程到底是啥嘞?

就好比天子要向区诸侯国下达了选秀女的一堆圣旨;(这天子有强迫症!!)
这一大堆的圣旨一到,诸侯这一看,整吧!全诸侯国就开始安装圣旨上写的要求去找人;
这个实施圣旨的动作就是进程;

那线程又是啥嘞?

就好比诸侯把银子都发下去了,手底下的人也急了,这是天子选秀啊!那得块那得好啊!
大伙一合计,分头干!这一分头干就产生了线程!


线程和进程的区别


每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。
线程可以看成是轻量级的进程,属于同一进程的线程共享代码和数据空间,每个线
程有独立的运行栈和程序计数器(PC),线程切换的开销小。
线程和进程最根本的区别在于:进程是资源分配的单位,线程是调度和执行的单位。
多进程: 在操作系统中能同时运行多个任务(程序)。
多线程: 在同一应用程序中有多个顺序流同时执行。
线程是进程的一部分,所以线程有的时候被称为轻量级进程。
一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个线程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,除了 CPU 之外(线程在运行的时候要占用 CPU 资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。


进程与程序的区别


程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,
有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个
程序可以有多个进程,或者一个进程都没有。除此之外,进程还有并发性和交往性。简单地
说,进程是程序的一部分,程序运行的时候会产生进程。

最后说一下他们之间的关系;

就好像一把装弹待发的散弹枪:程序就是子弹,进程就是子弹出膛到击中目标的过程,线程就是那颗颗钢珠;
没有线程可以是单进程,没有线程可以是还没运行的程序;但相反就不行了;

感谢收看;如果能帮到您是我最大的荣幸;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值