总结:进程是os分配资源的基本单位,线程是执行调度的基本单位
自己总结:进程是操作系统内部分配了一块内存空间,进程运行在里面,进程包含线程,线程是执行cpu与操作系统之间资源调度的基本单位,点qq.exe 开辟一个进程,一个进程包含多个线程,然后线程本身是没有内存空间的
linux中分配一个线程就是进程
迁程(协程fiber):线程中的线程,用户态中的线程,不访问os操作系统,线程内部分线程,更轻量级,切换更快
(冷知识,每创建一个线程有一个线程栈)
纤程:用户态的线程,线程中的线程,切换和调度不需要经过OS
优势:1:占有资源很少 OS : 线程1M Fiber:4K 2:切换比较简单 3:启动很多个10W+
目前2020 3 22支持内置纤程的语言:Kotlin Scala Go Python(lib)… Java? (open jdk : loom)
一个进程在linux里面叫一个pcb
迁程vs线程池:很短的计算任务,不需要和内核打交道,并发量高
linux启动进程:
现在操作系统多用抢占式
进程调度
2.6采用CFS调度策略:Completely Fair Scheduler
按优先级分配时间片的比例,记录每个进程的执行时间,如果有一个进程执行时间不到他应该分配的比例,优先执行
默认调度策略:
实时 (急诊) 优先级分高低 - FIFO (First In First Out)先进先出(级别高的先执行),优先级一样 - RR(Round Robin轮询)
普通: CFS
linux内核版本:2.6.23
必需用c写
软中断:p9级别问了
1.硬件级别中断
2,应用层面:软中断
直接用汇编语:sysenter,通过ax寄存器填入调用号
软中断执行过程:
中断是通知硬件的一个信号,键盘输入信号
线程十万个就不行 迁程没问题
非阻塞:用户空间进来,调用read没有停在那里,异步执行