Loading

进程 线程 纤程 中断

1. 进程和线程有什么区别?

进程是OS分配资源的基本单位

线程是执行调度的基本单位。

分配资源最重要的是:独立的内存空间,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)

2. 什么是纤程

用户态的线程,线程中的线程,切换和调度不需要经过OS

纤程的优势:

占有资源很少,线程占1M ,纤程占4K

切换比较简单

启动很多个10W+

纤程的应用场景:很短的计算任务,不需要和内核打交道,并发量高

3. 僵尸进程

父进程产生子进程后,会维护子进程的一个PCB结构,子进程退出由父进程释放,如果父进程没有释放,那么子进程成为一个僵尸进程

危害:占用少量资源,比如进程号,Linux进程号是有限制的

4. 孤儿进程

子进程结束之前,父进程已经退出,孤儿进程会成为init进程的孩子,由1号进程维护,基本没有危害

5. 进程调度基本概念

进程类型

  • IO密集型,大部分时间用于等待IO
  • CPU密集型,大部分时间用于计算

进程优先级

  • 实时进程>普通进程(0-99)
  • 普通进程nice值(-20-19)

时间分配

  • linux采用按优先级的cpu时间比
  • 其他系统多采用按优先级的时间片

6. linux默认的调度策略

对于实时进程:使用SCHED_FIFO和SCHED_RR两种
对于普通进程:使用CFS(Completely Fair Scheduler,按优先级分配时间片的比例,记录每个进程的执行时间,如果有一个进程执行时间不到他应该分配的比例,优先执行)

其中等级最高的是FIFO,这种进程除非自己让出CPU否则linux会一直执行它,除非更高等级的FIFO和RR抢占它

RR只是这种线程中是同级别FIFO中的平均分配

只有实时进程主动让出或者执行完毕,普通进程才有机会运行

7. 中断

硬件跟操作系统内核打交道的一种机制

软中断(80中断) == 系统调用

系统调用:int 0x80 或者 sysenter原语

通过ax寄存器填入调用号

参数通过bx cx dx si di传入内核

返回值通过ax返回

java读网络 – jvm read() – c库read() - > 内核空间 -> system_call() (系统调用处理程序)-> sys_read()

posted @ 2021-12-15 17:47  ZT丶  阅读(32)  评论(0编辑  收藏  举报