进程:(linux称为task,进程描述符:PCB(process control block))
口语化:就是一个程序运行起来的状态
专业回答:进程是操作系统分配资源的基本单位(独立的内存空间,每个进程都有自己的独立的内存空间)
线程:
口语化:是一个进程中的不同执行路径
专业化:线程是执行调度的基本单位
线程共享进程的内存空间,没有独立的内存空间。
纤程(Fiber)
用户态的线程,线程中的线程,切换和调度不用经过OS(操作系统)
优势:1.占用资源很少 (操作系统启动一个线程需要1M,Fiber启动需要4k。)
2.切换比较简单
3.可以启动很多个 4w+
java中对于纤程的支持:
利用Quaser库
<dependency>
<groupId>co.paralleluniverse</groupId>
<artifactId>quaser-core</artifactId>
<version>0.8.0</version>
</dependency>
纤程的应用场景
1.很短的计算任务,不需要和内核打交道,并发量比较高的时候
Linux
进程的创建和启动:
系统函数 fork() exec()
从A,fork B的话,A称之为B的父进程,B为A的子进程。
linux进程调度策略
默认调度策略
实时进程:优先级分高低 (FIFO–first in first out),优先级一样(RR–round robin)
普通进程:CFS(Completely Fair Scheduler)
中断
从汇编角度来理解软中断(0x80中断)