对于Linux内核来说,并不区分进程和线程。在创建进程或者线程时,都会调用fork()函数,在fork()内部会调用clone()实现创建的功能,而进程和线程的区别就在这里:在调用clone()函数时,如果创建的是线程,需要传递一些参数标志来指明需要共享的资源,因为线程是在进程内部,多个线程可以共享进程的一些资源。
对于常说的"进程是资源分配的基本单位",我的理解是因为在调用fork()创建进程时需要给每个进程创建独立的进程地址空间;而对于线程就不需要,因为它会与进程共享一块地址空间。对于常说的"线程是CPU调度的最小单位",我的理解是:像对于常见Linux调度器,比如CFS,实时调度器等都是以线程为基本单位来进行调度。因此"进程是资源分配的基本单位",“线程是CPU调度的最小单位”。
进程与线程的理解
最新推荐文章于 2020-06-15 22:45:28 发布