进程和线程
进程是运行的程序,是资源分配和调度的基本单位,是线程的容器。每个进程都有自己的地址空间,该空间包括代码段,数据段和堆栈段。
线程,又名迷你进程、是操作系统能够进行运算调度的最小单位,它包含在进程中,是进程执行的实际单元。一条线程指的是进程中的一个单一顺序的控制流,一个进程可以并发执行多个线程,每个线程可并发执行多个不同的任务。线程的资源共享与内存。
多进程和多线程
多进程:进程间数据分开,共享困难;占用内存多,切换缓慢;但编译调试简单;进程间不会互相影响。多进程,一般在要运行的功能交互情况较少场景下使用。
多线程:线程间共享一个进程数据;占用内存少,切换迅速;但编译调试困难;一个线程损坏,会使整个进程挂掉。多线程,一般用于提高系统并发性,如需要大量IO或需要大量计算的场景。
进程的状态
进程之于cpu有3种状态,分别是运行态,就绪态和阻塞态。
运行态的进程:指的是 该时刻真正占用CPU的进程
就绪态的进程:指的是 可以运行但CPU正在处理其他进程而被暂停的进程
阻塞态的进程:指的是 除非有特定外部事件(如等待用户输入)发生,否则不能运行的进程
运行态和就绪态会因为的CPU调度而来回切换,运行态会因为需要外部事件而变成阻塞态,阻塞态也会因得到有些输入而变为就绪态。