操作系统
1、进程和线程
进程(Process)是一个程序在其自身地址空间中的一次运行活动,是系统进行资源申请,调度和独立运行的基本单位。
线程是进程中的一个实体,是被系统独立调动和分派的基本单位。
进程和线程的区别:线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它与同属一个进程的其他线程共享所拥有的全部资源。
根本区别: 进程是操作系统资源分配的最小单位; 线程是CPU调度和执行的基本单位。
开销上的区别:进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之 间切换的开销小。
内存上的区别:系统会为每个进程分配不同的内存空间,而不会为线程分配内存,线程使用所属进程的资源。
线程的状态:新建,就绪,运行,阻塞/等待/睡眠、死亡。
2、进程和线程的通讯方式
进程间通讯:管道,信号,信号量,消息队列,共享内存,套接字(Socket)、临时文件。
- 管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在亲缘进程间使用。通常是指父子进程关系。
- 信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生