zoukankan      html  css  js  c++  java
  • 进程 线程 纤程 中断

    进程就是一个程序运行起来的状态,线程是一个进程中的不同的执行路径。

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

    下面这哥们对CPU组成说的很好。

    https://blog.csdn.net/yaoji8151/article/details/106531671

    线程:每个操作系统实现是不一样的,对于linux而言就是一个普通进程,只不过和其他进程共享资源(内存共享、全局数据等),linux 启动一个进程fork()方法,从现有的进程main里面克隆一个新的进程,就相当于是一个子进程。其他系统都有各自LWP(Light Weight Process轻量级进程),高层面,一个进程中的不同执行路径。

    纤程(协程、Fiber):线程中的线程,在JVM的线程里面,JVM是跑在用户态的,操作系统OS是跑在内核态,JVM中每个线程都需要向操作系统申请,所以是“重”线程;

    Fiber 在一个线程中在分出不同的分支,去并行执行,目前线程(目前来说10000个线程就卡不行了,CPU来回切片)而fiber是在用户空间,不需要跟硬件CPU打交道,在用户态的,所以切换特别快几万个几十万个都没问题。纤程和线程最大的区别是,它跑在用户空间,是用户空间里面的线程的,它不经过操作系统内核的,JVM自己管理自己切换。多个纤程对应1个线程。(用户态的线程,线程中的线程,切换和调度不需要经过OS,

    优势:1. 占用资源很少OS:线程1M,纤程4K

               2. 切换比较简单

               3. 启动很多个10W+)

    目前2020 3 22支持内置纤程的语言:Kotlin Scala Go Python(lib)... Java?jdk14不支持纤程 (open jdk : loom)jdk15可能会有。

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

    有人说go语言比java先进的地方,就在它支持纤程。

    进程:linux中也称为task,是系统分配资源的基本单位;资源:独立的地址空间 内核数据结构(进程描述符..),全局变量 数据段;进程描述符:PCB(Process Control Block)

    僵尸进程:ps -ef|grep defuct 父进程产生子进程后,会维护一个子进程的PCB结构,子进程退出,由父进程释放,如果父进程没有释放,那么子进程称为一个僵尸进程zombie。

    孤儿进程:子进程结束之前,父进程已经退出,孤儿进程会称为init进程的孩子,由 进程进行维护 orphan。孤儿进程没啥影响,影响不大。

    来不及写了,晚上继续写

  • 相关阅读:
    Linux 下编译hello world 的C 语言程序
    C语言实现二维数组操作--元素个数确定
    Linux Eclipse安装和配置命令行(jre、jdk)
    段错误bug的调试
    fopen与open的区别
    同样的c代码,为何在windows下和linux下执行结果不一样?
    VIM快捷键
    浅谈C中的wprintf和宽字符显示
    Know More About Oracle Row Lock
    【教学视频】Maclean教你一步一步使用Vbox在Linux 5上安装Oracle 11gR2 RAC
  • 原文地址:https://www.cnblogs.com/belen87/p/14166357.html
Copyright © 2011-2022 走看看