进程和线程的区别是面试提问频率最高的问题,没有之一


我们首先了解一下进程和线程的概念。

进程:一个进程就是一个正在执行程序的实例。

线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

这就是进程和线程。从他们的概念扩展开来,我们可以这样回答进程和线程的区别:

1、一个程序至少有一个进程,一个进程至少有一个线程,线程是轻量级的进程。

2、进程在执行过程中拥有独立的存储空间,而多个线程共享内存。

3、进程是系统资源分配的最小单位,线程是CPU调度的最小单位。

A process is an active program i.e. a program that is under execution. It is more than the program code as it includes the program counter, process stack, registers, program code etc. Compared to this, the program code is only the text section.

A thread is a lightweight process that can be managed independently by a scheduler. It improves the application performance using parallelism. A thread shares information like data segment, code segment, files etc. with its peer threads while it contains its own registers, stack, counter etc.

这样的回答可能能够通过面试官的考核,但并没有真正点明问题所在。

比如在Linux系统上,实际上线程的概念并不存在。

线程仅仅被视为一个与其他进程共享资源的进程。

而Windows则提供了线程专有的机制。

进程的概念是比较明确的,它就对应着程序的一次运行。

那么线程到底是啥?

CSAPP把线程称为进程的一个执行单元。

维基百科把线程称为操作系统能够进行运算调度的最小单位。

听起来还是云里雾里的。

那么,要解答线程“是”什么,不如先看看线程“有”什么。

线程的所有物,主要就是以下几部分:

程序计数器,一组寄存器、栈和状态字。

另外,它还共享地址空间、全局变量、打开的文件等,也就是进程的资源。

我们可以看到,这些共享的资源,主要是内存相关的。

而线程独有的这些东西,则对应着CPU的执行逻辑。

因此,我对线程的理解就是:被进程管理的,共享资源的一次完整的CPU执行逻辑组合

转载于:https://www.cnblogs.com/sh1296/p/10791213.html

谈谈进程和线程的区别相关推荐

  1. Linux进程与线程的区别 详细总结(面试经验总结)

    首先,简要了解一下进程和线程.对于操作系统而言,进程是核心之核心,整个现代操作系统的根本,就是以进程为单位在执行任务.系统的管理架构也是基于进程层面的.在按下电源键之后,计算机就开始了复杂的启动过程, ...

  2. 进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈...

    进程和线程的区别?什么时候用进程?什么时候用线程? 答:首先得知道什么是进程什么是线程? 我的理解是进程是指在系统中正在运行的一个应用程序:程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的 ...

  3. Linux进程与线程的区别

    2019独角兽企业重金招聘Python工程师标准>>> Linux进程与线程的区别 cnyinlinux 本文较长,耐心阅读,必有收获! 进程与线程的区别,早已经成为了经典问题.自线 ...

  4. 进程与线程的区别(面试题)

    进程与线程的区别 1.进程是资源分配最小单位,线程是程序执行的最小单位: 2..进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段.堆栈段和数据段,线程没有独立 ...

  5. task.run 强制结束线程_图文介绍进程和线程的区别

    点击蓝色"最码农"关注我哟 加个"星标",每天下午18:03,一起学技术 进程和线程的概念 先了解一下操作系统的一些相关概念,大部分操作系统(如Windows. ...

  6. 进程与线程的区别和联系

    概念 进程 进程(Process )是指计算机中已运行的程序.进程曾经是分时系统的基本运作单位.--维基 · 进程是正在执行的程序: · 进程是可以分配处理器并由处理执行的实体: 线程 线程(Thre ...

  7. 进程和线程的区别, 面相对象补充, 进程, 数据共享, 锁, 进程池, 爬虫模块(requests, bs4(beautifulsoup))...

    一. 进程和线程的区别?     第一:         进程是cpu资源分配的最小单元.         线程是cpu计算的最小单元.     第二:         一个进程中可以有多个线程.   ...

  8. 进程和线程的区别【转】

    进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程 ...

  9. [Java]进程与线程的区别(转)

    [Java]进程与线程的区别(转) 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自 ...

最新文章

  1. Smarty 中的 if 语句条件修饰词
  2. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
  3. 安卓工业平板电脑的蓝牙开发教程
  4. C/S构架和B/S架构的比较
  5. Angular Component的默认changeDetection策略
  6. [react] 请说下react组件更新的机制是什么
  7. 关刀机器人_小学机器人活动总结
  8. python 为抓取而生
  9. 使用jquery简化ajax开发
  10. Jquery Ui AutoComplete自动填写的功能
  11. 关于 cocos2d-x win32 版本的 cpu 占用改良
  12. 使用python对文件下的文件批量重命名
  13. Python原理 -- 深浅拷贝
  14. Python 读取/保存 图片,发现有色差,可以怎么解决了?
  15. linux mysql命令不存在_mysql命令、mysqldump命令找不到解决
  16. virtualbox窗口和win10窗口切换
  17. 10个精选国外免费空间
  18. linux 显卡 1050ti,MAX-Q终于出中端卡了 GTX1050Ti MAX-Q显卡曝光
  19. python中import re_python中re模块
  20. minisforum HX90G/HX99G miniPC-Hackintosh-Opencore 黑苹果efi引导文件

热门文章

  1. Flutter瀑布流及通用列表解决方案
  2. 神马搜索如何提升搜索的时效性?
  3. Android Flutter 内存机制初探
  4. 技术如何秒懂你?阿里百万级QPS资源调度系统揭秘
  5. 【译】Celeste 手感的 10 个设计细节
  6. 《江湖X:汉家江湖》游戏论剑系统技术全解析
  7. ORACLE TEXT FILTER PREFERENCE(三)
  8. 关于Oracle中varchar2和dbms_output.put_line的长度限制问题小结
  9. ssm学习之ssm框架详解
  10. script标签属性sync和defer