1、线程和进程的控制原语:
在以上的图片当中详细标明了线程和进程的创建、回收、但区别在于,线程可以设置自己的线程状态,如:在pthread_create()函数当中,可以在attr中设置分离状态,从中可以达到自己回收资源的目的。
2、进程和线程的各自共享的区域:
进程:具有自己的独立地址空间,刚fork后。 data段、text段、堆、栈、环境变量、全局变量、宿主目录位置、进程工作目录位置、信号处理方式。
线程:属于寄存器和栈的集合,除了这两点,几乎与主线程一样,即没有独立地址的空间,一个进程当中能够有多个线程。
进程是操作系统中最小的资源分配单位,而线程是最小的执行单位。
3、 线程与进程的区别:
1.进程是系统进行资源分配(内存,文件,网络)的最小单位,线程是CPU(CPU指向的最小单位是指令)调度执行的最小单位;
2.线程在进程的内部,所有的线程共享地址空间,进程之间都是相互独立的地址空间
2.进程是拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈
3.线程统一具有就绪,阻塞和执行三种基本状态,同样具有状态之间的转换关系(把着部分的功能归为线程)
3.进程通信 --管道、信号量、共享内存、消息队列 线程通信 --全局、堆区
4 多线程的执行是不安全的,多进程的执行是相对比较安全的
4.线程相对能减少并发执行的时间和空间的开销:
1.线程的创建时间比进程短;(进程在创建时还需创建其他的管理信息,如内存怎么管理,打开的文件怎么管理,而线程的创建直接从用所属进程已经管理好的资源)
2.线程的终止时间比进程短;
3、同一进程内的线程切换时间比进程短;(内存管理,线程具有同一个内存空间,属于同一个进程的页表的随从线程拥有同一个页表,不需要切换页表,而进程的切换需要切换页表,涉及到访问的地址空间不同,里面的cache,tob信息等硬件信息都会无效,需重新加载)
4.由于同一进程的各线程间共享内存和文件资源,可直接进行不通过内核的通信;