美文网首页程序员
进程,线程的详解

进程,线程的详解

作者: ExecutorofZero | 来源:发表于2020-12-07 10:40 被阅读0次

进程与线程的区别是什么?这是一个老生长谈的一道面试题。处于不同层面对该问题的理解也大不相同。对于用户层面来说,进程就是一块运行起来的程序,线程就是程序里的一些并发的功能。对于操作系统层面来说,标准回答是“进程是资源分配的最小单位,线程是cpu调度的最小单位”。接下来先从操作系统层面介绍一下进程与线程。

进程

在程序启动时,操作系统会给该程序分配一块内存空间,对于程序但看到的是一整块连续的内存空间,称为虚拟内存空间,落实到操作系统内核则是一块一块的内存碎片的东西。为的是节省内核空间,方便对内存管理。
image.png

就这片内存空间,又划分为用户空间与内核空间,用户空间只用于用户程序的执行,若要执行各种IO操作,就会通过系统调用等进入内核空间进行操作。每个进程都有自己的PID,可以通过ps命令查看某个进程的pid,进入/proc/可以查看该进程的详细信息,如cgroup,进程资源大小等信息。

线程

线程是进程的一个执行单元,一个进程可以包含多个线程,只有拥有了线程的进程才会被CPU执行,所以一个进程最少拥有一个主线程。
image.png

由于多个线程可以共享同一个进程的内存空间,线程的创建不需要额外的虚拟内存空间,线程之间的切换也就少了如进程切换的切换页表,切换虚拟地址空间此类的巨大开销。至于进程切换为什么较大,简单理解是因为进程切换要保存的现场太多如寄存器,栈,代码段,执行位置等,而线程切换只需要保存线程执行的上下文即可。线程的的切换只需要保存线程的执行现场(程序计数器等状态)保存在该线程的栈里,CPU把栈指针,指令寄存器的值指向下一个线程。相比之下线程更加轻量级。

可以说进程面向的主要内容是内存分配管理,而线程主要面向的CPU调度。

相关文章

  • Android 面试常问知识

    Q1:线程间的通信进程间通信的几种方式进程间通信方式详解Q2:线程安全SharePreferences 是否线程安...

  • java多线程详解

    多线程详解 一、什么是线程,进程 线程 是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作...

  • 线上cpu 内存占用高的排查

    cpu占用高 1.查看进程 top详解 查找线程 : 查看该进程所有线程信息,找到占用率最高的那个 或者 将线程...

  • ios多线程详解

    ios多线程详解 一、前言 在ios中每个进程启动后都会建立一个主线程...

  • 进程,线程的详解

    进程与线程的区别是什么?这是一个老生长谈的一道面试题。处于不同层面对该问题的理解也大不相同。对于用户层面来说,进程...

  • Swift 多线程之GCD基础用法介绍

    线程?进程? 关于进程和线程的关系和区别网上可以找到很多很好的详解和比喻,在此简单说下二者的含义(在下的拙见) 基...

  • iOS开发之多线程详解

    多线程详解 多线程基础相关知识 进程:类似车间 系统正在运行的应用程序;每个进程都是独立的,都运行在其专用且受保护...

  • [持续]关于 node.js 的优质博客

    [转]Node.js的线程和进程详解:https://feclub.cn/post/content/node_pr...

  • iOS 多线程详解

    iOS 多线程详解 Slogan : 可能是最通俗易懂的 iOS多线程 详细解析文章 1. 基础概念 1.1 进程...

  • iOS中你必须了解的多线程

    多线程概念详解 什么是进程? 简单的说进程就是我们电脑上运行的一个个应用程序,每一个程序就是一个进程,并且每个进程...

网友评论

    本文标题:进程,线程的详解

    本文链接:https://www.haomeiwen.com/subject/utmzwktx.html