进程与线程
进程与线程的区别在面试题中非常常见,然而大多数人一般都只是网上找资料,背背下来就完事了(就和我应对epoll面试题一样……)本文将从一些底层角度去剖析进程与线程——主要是从linux内核角度。 首先还是贴一下我对于这种面试题的一些常规回答: 1. 线程的划分尺度小于进程,简单说是一个程序至少有一个进程,一个进程至少有一个线程。 线程是cpu调度的 基本单位,进程和线程都能创建和撤销线程;同一个进程内的多个线程之间可以并发执行。 2. 进程拥有独立的地址空间和其他资源,而同一个进程中的线程共享(当然各自也会有一些用于运行必不可少的 资源)。这就意味着一个进程崩溃,在保护模式下,不会影响到其他进程,而一个线程崩溃,其同一进程内的 所有线程都会崩溃。因此,多进程比多线程更健壮,但一般来说多进程效率较差,因为线程切换代价较小。 3. 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出 口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控…