线程和进程的区别

一、进程和线程的区别:

  1. 关系:进程包含线程。
  2. 根本区别:进程是系统分配资源的最小单位;线程是系统调度CPU执行的最小单位。
  3. 存储:多个进程的内存是隔离开的,一个进程中的多个线程可以共享内存。
  4. 开销:线程的创建、销毁的代价都比进程小。即 进程的状态转换 开销大于线程。
  5. 线程(假如有bug)可能会导致整个进程挂掉无法运行;而 进程间是独立运行的(也可能存在进程通信)
  6. 操纵者不同:进程的操纵者是操作系统(OS);线程的操纵者一般是程序员。
  7. 拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。

  8. CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。

简单用图记忆一下 进程与线程之间的关系:

二、什么是进程?——Process

  每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运 行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程; 同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

  • 进程是系统分配资源的最小单位。
  • 操纵者:进程是由操作系统创建及管理的。(操作系统管理进程:(1)先创建一个PCB结构体——>用于 描述进程信息;(2)把多个进程PCB结构体,通过一定的数据结构组织起来)
  • 系统对进程的调度:主要以 时间片轮转调度算法(一个CPU以时间片轮转调度的方式,依次执行多个进程)
  • 进程的状态:创建状态、就绪状态、运行状态、阻塞状态、终止/销毁状态。

程序 和 进程

·   程序是在一个静态磁盘上的一个可执行文件。

·   进程是动态的,将可执行文件加载到系统中。加载就是将信息放在内存中,分配一些资源,并且执行程序中所有指令。

进程的存储—虚拟地址空间:

  1. 进程不直接使用物理内存,而是使用虚拟地址空间;
  2. 虚拟内存空间 里面里面是使用 分页式存储管理(页-Page-类似于书页目录)

PCB结构体:

(1)PID:进程ID,是进程的唯一身份标识(类似于数据库 主键,唯一性),但是它不是固定不变的,是每次启动进程时动态分配的。

(2)进程状态:5个。

(3)内存指针:进程内存地址

(4)资源清单:io设备,(硬件设备),硬盘文件

        文件描述符表:定位硬盘中的文件,包括 默认创建三个文件描述符(输入输出):类似于java中的System.out(标准输出) 、 System.err(错误输出) 、System.in(标准输入)。

(5)调度信息:进程执行了多少代码,等待了多久.....

(5)上下文:保存本次的执行状态,以便下次执行。

三、什么是线程?——Thread

  一个线程就是一个 " 执行流 ". 每个线程之间都可以按照顺讯执行自己的代码 . 多个线程之间 " 同时 " 执行着多份代码。线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。
  • 线程是系统调度CPU执行的最小单位。
  • 操纵者:线程的操纵者一般是编程人员。
  • Java线程的状态:创建状态、可运行状态、等待状态、超时等待状态、阻塞状态、销毁状态。
  • 线程比进程更轻量级。所以虽然多进程也可以并发,也选择多线程。

  • 线程的优势:(1)创建线程比创建进程更快;(2)销毁线程比销毁进程更快(3)调度线程比调度进程更快

Java中常见创建线程的方式:
  1. 继承Thread类;
  2. 实现Runnable接口;
  3. 实现Callable接口;

详细会写于另一个帖子。

四、总结

一个程序至少有一个进程,一个进程至少有一个线程。

重点是:区别(在一里面)。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值