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

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


程序是什么?


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

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 资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。


进程与程序的区别


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

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

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

感谢收看;如果能帮到您是我最大的荣幸;

程序、进程以及线程的爱恨情仇相关推荐

  1. 一个程序员的人情世故、爱恨情仇

    摘要: 提起程序员这职业,很多人的眼里大多数都会浮现一个词 - - - 闷葫芦,有的程序员就会反驳了,放你娘的狗屁!程序员也会有浪漫的,也会有别人没有达得到的高度好吧!无疑包括人情世故.爱恨情仇! 你 ...

  2. IE浏览器将于明年6月“退役”,程序员和IE的爱恨情仇终结了

    今天,微软在Windows消息中心再次提醒用户,IE浏览器将在今年正式退役,在6月15日之后,IE11将不再被支持,所有调用该浏览器的功能都将重定向至Edge. 早在2021年初,微软就曾表示,将在2 ...

  3. 那些年程序员和PM的爱恨情仇,删产品PPT的你是想笑死我吗?

    01.产品狗想提需求?先跪下 02.其实我没睡着,我只是猝死了 03.你删我代码?我删你PPT 04.上一个产品经理还在医院没出来呢 05.别开会了,让我回去写bug吧 06.程序员单身的主要原因 0 ...

  4. 产品经理和程序员的爱恨情仇

    产品经理跪求程序员,程序员跪求程序成功上线! 前几天纯银V在微博上发了一条微博「很多人吐槽"人人都是产品经理"这句话,其实在我看来,这句话的正确理解是"人人都应该学习产品 ...

  5. 深入Java虚拟机之 --- JVM的爱恨情仇

    (本文参考深入理解JAVA虚拟机第二版第2章) 系列文章: 深入Java虚拟机之 - JVM的爱恨情仇 JAVA 垃圾回收机制(一) - 对象回收与算法初识 JAVA 垃圾回收机制(二) - GC回收 ...

  6. 初识angular.js之爱恨情仇

    angular.js Angular.JS 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS很小, ...

  7. 借华为鸿蒙系统发布,谈谈操作系统的爱恨情仇发展史

    2019.08.09,华为在其全球开发者大会上,正式向全球发布了全新的自有系统 HarmonyOS 鸿蒙--基于微内核的面向全场景的分布式操作系统.余承东在现场表示, HarmonyOS 鸿蒙拥有分布 ...

  8. Maven的爱恨情仇

    前言 在如今的互联网项目开发当中,特别是Java开发中,可以说Maven是随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven ...

  9. 零基础学FPGA(一):与FPGA的爱恨情仇

    我笑夏蝉唱不完少年梦 ,他说街灯亮不过明日光. --胡歌 最近挺迷茫的,要做的事真的很多,要学的东西也很多,看见什么都觉得很有趣,很实用,想学一手.记得财哥曾经说过:事情少的时候,你会认真的,抓紧时间 ...

最新文章

  1. 阿里深度序列匹配模型SDM:如何刻画大型推荐系统的用户行为?
  2. 常用的数据结构-散列表
  3. oracle实例无法启动也无法关闭
  4. poj3252 组合数学
  5. linux mkfs.ext3 参数,linux命令mkfs.ext3用法[阮胜昌]
  6. tensorflow的tf.transpose()简单使用
  7. 关于LocalBroadcastManager的介绍和优势
  8. html中label的寬度無法修改,如何设置HTML span、label 的宽度
  9. Linux学习笔记---使用MfgTool工具烧写官方系统(一)
  10. 树分解 宽度 如何分解 算法
  11. python_14 多态,封装,反射
  12. 输入法快捷键_关于日语输入法,你需要知道的一切
  13. SSM框架整合demo
  14. SIP协议详解eXosip源码库用法分析
  15. 22条创业军规,让你5分钟读完《创业维艰》
  16. Mybatis实现逆向工程
  17. 自控力lesson14书摘——克服‘紧张症’的法则
  18. Atypical Games推出《辐射岛》和《辐射之城》的后续游戏
  19. 键盘之争:QWERTY还是Dvorak
  20. WordPress使用SQL语句批量替换失效的蓝奏云下载地址

热门文章

  1. 拓扑排序之变量序列代码
  2. leetcode 211. Add and Search Word - Data structure design Trie树
  3. .团队组建及项目启动
  4. 如何捕获和分析 JavaScript Error
  5. 如何控制并发和控制死锁(内含pb的处理要点)
  6. JavaScript setTimeout函数
  7. [ZT]国家颁布防沉迷系统 网游三小时后经验减半
  8. 使用IDEA在SpringBoot项目中连接数据库
  9. java ee domain作用_java EE应用概述
  10. 初玩树莓派所遇见的坑