进程和线程大白话理解(操作系统学习笔记)

396 阅读2分钟

1.程序是怎么开发的?

首先我们需要了解一个程序是怎么开发的?你写程序首先需要使用高级语言,但计算机并不懂什么是高级语言,他只懂二进制,于是我们使用编译器将高级语言转换成机器语言,你的程序变成了二进制可执行代码(binary executable code),但现在计算机还不能自动运行,他需要一个程序去告诉他,他需要做什么。首先,他需要把二进制可执行代码加载进内存(memory),同时,为了程序运行,他还需要一些计算机系统的资源,那么什么负责分配计算机资源呢?

2.什么负责分配计算机资源?

操作系统会帮忙加载可执行代码进内存,同时分配相关资源,当做好这些,程序在计算机看来已经算开始执行了。现在的状态就像是餐馆做鱼香肉丝,厨师(操作系统)已经做好了,并且放进盘子了(加载进内存了)。这个时候,这道菜虽然顾客还没吃到(程序还没干你想让他干的事),但他确实已经变成了鱼香肉丝。二进制代码进入了内存,相关资源已经分配完毕,你的程序已经变成了一个进程(procese)。

3.什么是进程?

为什么说这时候已经变成进程了,进程是什么?当一个程序进入执行状态的一瞬间,他就变成了一个进程。也就是说,当他没有运行(excute)的时候,他就是一个程序(program),但是当他开始执行的一瞬间,他就变成了进程(procese)。

4.什么是线程?

那么什么是线程(thread)呢?线程是进程运行时的基本单元,一个进程可以有一个或好几个进程。可以理解为进程是一个老板,他接受分配的任务,于是他根据需要找了一个或好几个打工人(thread)来帮他干活,记住老板是不会干活的,干活的只有打工人(线程),但对于甲方(计算机)来说,他是直接对接老板(进程)的,你可以在任务管理器看到不同的老板(进程)拿到的资源和干的活。如下图所示,每一项都是一个老板(进程):

image.png