操作系统之进程(Processes)和线程(Threads)

要搞明白进程与线程的概念及两者区别,先要了解程序。

程序Program

A program is an executive file.
程序(如firefoc.exe)一个保存在磁盘中的可执行文件,包含代码或一组处理器指令。
程序是使用高级语言编写而成,但电脑只理解二进制代码,所以程序必须转换成二进制代码, 而这是编译器(compiler)的工作。
操作系统之进程(Processes)和线程(Threads)_第1张图片

要执行一个程序,就先要将它加载到内存RAM(random access memory),还需要程序运行所需要的资源,比如寄存器、计数器、堆栈指针、堆、内存页等。这些资源是由操作系统管理的。
这是操作系统的工作。它会帮助将可执行程序加载到RAM并分配资源。程序就可以运行。

进程

在我们“碰”一个程序之前,他只是一个程序,但我们运行它之后,它就变成了进程。即,进程可以被认为是一个正在执行的程序。一个程序可以有多个进程。
每个进程都有自己独立的内存地址空间。这意味着当一个进程发生故障时,其他进程会继续运行。(Chrome是每一个tab都有自己的进程而闻名的。
操作系统之进程(Processes)和线程(Threads)_第2张图片

线程

线程实际上是一个(正在执行的)进程的基本执行单元。 一个进程中至少有一个线程,称为主线程,往往有多个线程。而每个线程都有自己的资源,但他们共享内存地址空间,可以使用该共享内存空间在线程之间进行通信。但是一个行为不当的线程可能会导致整个进程中断。

操作系统之进程(Processes)和线程(Threads)_第3张图片

操作系统如何在CPU上运行线程或进程?

通过上下文切换(context switch)

你可能感兴趣的:(windows,linux,ubuntu,centos,gnu)