进程和线程的区别
先要了解进程和线程的区别,首先我们要知道什么是进程,什么是线程,仔细看了看csapp中关于进程和线程的描述,加上自己的理解和脑补,总结起来大概是这样的。
进程
最经典的定义是一个执行中的程序的实例。
书上有提到系统中的每个程序都是运行在某个进程的context上的。也就是说进程包含context,那么context又是什么呢?context指的是程序正确运行所需要的状态组成的。也就是我们常说的环境。那么总结起来就是程序运行在context中,context包含于进程中,那么进程就是程序执行所需要的环境(处理器,主存,I/O设备)加上运行在环境之上的程序。
线程
了解了什么是进程之后,我们来看看什么是线程。很多书中都有提到,线程是轻量级进程。其实是这样的,一个进程实际上可以由多个线程作组成,每个线程都运行在进程的环境下,并且共享着同样的代码和全局数据。其实我认为可以这么理解,线程是进程中所执行的程序的子程序。