进程、线程、多线程相关总结

一、说说概念

1、进程(process

狭义定义:进程就是一段程序的执行过程。

广义定义:进程是一个程序关于某个数据集合的一次运行。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

简单的来讲进程的概念主要有两点第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

进程状态:进程有三个状态,就绪、运行和阻塞。就绪状态其实就是获取了出cpu外的所有资源,只要处理器分配资源就可以马上执行。就绪状态有排队序列什么的,排队原则不再赘述。运行态就是获得了处理器分配的资源,程序开始执行。阻塞态,当程序条件不够时候,需要等待条件满足时候才能执行,如等待i/o操作时候,此刻的状态就叫阻塞态。

2、程序

说起进程,就不得不说下程序。先看定义:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是在处理机上的一次执行过程,它是一个动态的概念。这个不难理解,其实进程是包含程序的,进程的执行离不开程序,进程中的文本区域就是代码区,也就是程序。

3、线程

通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。

4、多线程

在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。

最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率。

二、说说区别

1、进程与线程的区别:

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

三、说说优缺点

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP(多核处理机)机器上运行,而进程则可以跨机器迁移。

四、总结

入职第一天闲的无聊,参考下别人的总结自己也简单总结了下。知道以上的基本面试够用了,至于进程、线程的细节,底层构成,调度等问题是操作系统的东西。我就不详述了。

五、实例

1、多线程写日志,涉及到单例模式,异步写

转载于:https://www.cnblogs.com/iOS-mt/p/4326594.html

进程、线程、多线程相关总结相关推荐

  1. 易语言多线程大漠多线程进程线程多线程

    进程-线程-多线程 1.进程(process) 狭义定义:进程就是一段程序的执行过程 简单的来讲进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域( ...

  2. Python_进程/线程/多线程理解

    目录 进程.线程.多线程: 1.进程与线程区别 (1)进程与线程区别 (2)多进程与多线程区别 (3)更多区别 2. 进程简单理解 3. 线程简单理解 进程.线程.多线程: 进程:资源分配的最小单位. ...

  3. 程序-进程-线程 ( 多线程 )

    1.程序 (program) 是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态的对象. 2.进程 (process) 是程序的一次执行过程,或是正在运行的一个程序.动态过程: ...

  4. 线程、进程、多线程、多进程和多任务有啥关系?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取后台回复"k8s",可领取k8s资料 可能学习操作系统开 ...

  5. 线程、进程、多线程、多进程 和 多任务 小结

    目录 1 进程 2 线程 3 多进程 4 多线程 5 线程与进程的关系 6 线程和进程的区别 7 进程的优缺点 7.1 进程的优点 7.2 进程的缺点 8 线程的优缺点 8.1 线程的优点 8.2 线 ...

  6. php多线程模型,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?

    PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体:PHP进程通讯方式有管道及有名管道,信号,共享内存等:PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是 ...

  7. java 多线程 进程_Java多线程1:进程与线程概述

    进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都 ...

  8. python进程线程协程区别_Python3多线程与协程

    python中的多线程非常的常用,之前一直糊里糊涂地使用,没有一些系统性的概念,记录一下~ 0x001 多线程的优势:可将长时间占用的程序放到后台 可能会加速程序执行速度 能够实现一些类似同步执行的效 ...

  9. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

最新文章

  1. Windows 7新睹为快!!
  2. 【PHP7源码分析】PHP7到底有多快,基准测试与特性分析告诉你
  3. MySQL-数据类型
  4. java_函数的重载
  5. Python笔记-Flask返回字符串、Json、模板数据
  6. SQLi LABS Less-29
  7. atitit.为什么技术的选择方法java超过.net有前途
  8. OpenGL基础26:Assimp库
  9. ai png转矢量图_Boxy SVG for Mac(矢量图编辑器)
  10. OFFICE技术讲座:影响文字效果的四个因素是哪些
  11. BXP无盘技术应用于网吧的一些经验(转)
  12. IO流和NIO流的区别
  13. 局域网ip扫描工具_中科院网络工程师网络安全视频教程10端口扫描
  14. 解决微信端无法使用window.open打开文件的问题
  15. MATLAB实现psf,C++实现Matlab的psf2otf函数
  16. python seek函数whence_file.seek(offset[, whence])
  17. 【华为OD机试真题 python】 5键键盘【2022 Q4 | 100分】
  18. Highcharts3D环形图
  19. chrome浏览器虚拟摄像头
  20. java实现会员充值功能

热门文章

  1. java局部变量全局变量,实例变量的理解
  2. 2019半年总结:Teams are powerful
  3. LeetCode中等题之根据字符出现频率排序
  4. 华为托起小康股份、北汽蓝谷、长安汽车股价
  5. 如何在CPU上优化GEMM(上)
  6. 英特尔内存革新助平安云 Redis 云服务降本增效
  7. Ubuntu 系统如何修改主机名
  8. android 字体上添加横线,字体下面添加下划线
  9. MVC案例-架构分析
  10. java多线程(三)