进程 线程 纤程 中断

进程 线程 纤程 中断

进程和线程的区别?
答案:
口语化:进程就是程序于兴起来的状态,线程是进程中的不同的执行路径
专业:进程是OS(操作系统)分配资源的基本单位,线程是执行调度的基本单位

点击一个程序 的 会把程序放在内存中间 分配独立的内存空间
进程到达内存中后,cpu去读操作指令 线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)
线程的实现每个操作系统中不同
linux 就是一个普通的进程,不过和其他进程共享资源(内存空间 全局数据等)
其他系统有各自所谓的LWP的实现 Light Weight Process(轻量级进程)
高层面的理解:一个进程中的不同的执行路线

纤程 用户态的线程,跑在用户空间 和线程的调度完全不一样切换和调用不需要经过操作系统
优点: 1: 占用资源很少 OS :线程 1M Fiber :4K
2:切换比较简单
3:启动很多10W+
2020年 内置纤程的语言: Kotlin Scala Go Python(lib) …java?需要类库(open jdk:loom 还不成熟)
java对于纤程的支持:没有内置
利用Quaser库(不成熟)

new SuspendableRunnable() 在JVM 用户空间切换

纤程的应用场景

很短的计算任务,不需要内核打交道,并发量高
GO语言比JAVA最先进的核心。内置纤程

进程

linux中也成为task,是系统分配资源的基本单位
资源:独立的地址空间,内核数据结构(进程描述符…)全局变量 数据段…
进程描述符:PCB (Process Control Block)linux 管理的时候把相应的进程信息都放在PCB中,每个PCB大小不固定,每个进程有一个对应的PCB

内核线程

内核启动之后经常需要做一些后台操作,这些有kernel Thread来完成只在内核空间运行

进程创建和启动

系统函数:linux 本身是用C写的,对外提供一些类库,C中提供一些接口
fork()exec()
从A fork B,A称之为B的父进程

僵尸进程 孤儿进程

僵尸进程
ps -ef|grep defuct
父进程产生子进程后,会维护子进程的一个PCB的结构,子进程退出,父进程释放,如果父进程没有释放PCB,子进程成为僵尸进程 可手动(wait)zombie.c
孤儿进程
子进程结束之前,父进程已经推出
孤儿进程会成为init进程的孩子,有1号进程为
orpha.c

进程调度

内核集成调度器决定:该那个进程运行?何时开始?运行多长时间?
linux 内核每一个进程都一个对应调度方案

多任务
非抢占式
除非进程主动让出cpu(yielding),否则一直执行

抢占式(大多数)
有进程调度器强制开始或暂停(抢占)某一进程的执行

进程调度
linux2.5 经典Unix O(1)调度策略,偏向服务器,对交互不友好

linux2.6.23 采用CFS完全公平调度算法 (Completely Fair Scheduler)
按优先级分配时间片的比例,记录每个进程的执行时间,如果一个进程执行的时间不到他应该分配的比例,优先执行
基本概念
进程类型:
IO密集型,大部分时间用于等待IO
CPU密集型,大部分时间用于闷头计算
集成优先级:
(0 - 99)实时进程>普通进程
普通进程nice值(-20 - 19)
时间分配:
linux采用优先级的CPU时间比
其他系统多采用按优先级的时间片
linux默认调度策略
对于实时进程:使用SCHED_FIFO(First In First Out)和SCHED_RR(Round Robin)两种
对于普通进程:使用CFS
其中登记最高的是FIFO,这种进程除非自己让出CPU否则Linux会一直执行它
除非更高级的FIFO和RR抢占它
RR只是这种进程中是同级别的FIFO中平均分配
只有实时进程主动让出,或者执行完毕后,普通进程才有机会执行

中断

硬件和操作系统的通信机制

中断控制器 - (特定位置)> CPU->kernel(OS) ->中断处理器
硬中断-硬件中断
软中断-和内核打交道的时候-调用系统函数。int 0x80 或者用sysenter原语 通过ax寄存器填入调用号

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值