java程序员需要知道的底层知识(四)

笔记开始

  1. 进程
    进程:就是一个程序运行起来的状态,进程是操作系统用来分配资源的基本单位,分配资源指的是独立的内存空间
    java程序员需要知道的底层知识(四)_第1张图片
  2. 线程
    线程:是一个进程中不同的执行路径,线程是操作系统进行执行调度的基本单位,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)
    线程在linux中的实现:就是一个普通的进程,只不过和其他进程共享资源(内存空间 全局数据等等);其他系统都有各自的LWP(Light Weight Process轻量级进程)的实现,高层面理解:一个进程中不同的执行路线
  3. 纤程
    纤程/协程(Fiber)(线程中的线程):jvm是运行在用户空间的,jvm的线程与操作系统的线程是一 一对应的,jvm新开一个线程需要通过系统调用,通过内核创建,然后再同步回用户态;而纤程是在jvm的一个线程里面分出来的分支,不需要跟操作系统内核打交道,也不会跟操作系统的线程一 一对应,切换快速,是在jvm层面调度的,用户态的线程,切换和调度不需要经过os 优势:
    1、占资源少,os线程需要1M,Fiber:4k, 2、切换比较简单,
    3、启动很多个 目前支持内置纤程的语言:Kotlin,Scala,Go,Python(lib),java(没有内置、盼望内置)在类库(quasar-core)级别可以支持
    应用场景:很短的计算任务,不需要和内核打交道,并发量高
    java程序员需要知道的底层知识(四)_第2张图片
  4. 内核线程
    内核线程:内核启动之后经常要做一些后台操作,这些由Kernel Thread来完成,只在内核空间运行,用户态不能访问
  5. 进程调度
    进程(任务)调度:内核进程调度器决定,该哪个进程允许,何时运行,运行多长时间,这个过程叫做进程调度,linux下:每个进程都有自己的调度方案,可以自定义,但是linux内核有许多内置的调度方案,不需要我们自己写
    5-1.单任务:一个操作系统上面只能干一件事儿
    java程序员需要知道的底层知识(四)_第3张图片

6.中断:

硬中断:键盘、网卡、打印机等硬件进行的中断,中断处理机制的实现细节,比如: 1、键盘按下会产生一个中断信号传递给一个芯片(中断处理器),然后中断处理器告诉给cpu,2、cpu根据中断向量表找到固定的处理程序,3、然后这个处理程序将这个中断信号交给内核(kernel),4、内核找到中断处理程序开始处理,找到正在运行的程序当中正在等待键盘输入的程序,5、然后才是程序开始处理

java程序员需要知道的底层知识(四)_第4张图片

软中断(十六进制的80中断):软件给的中断,系统调用的操作都会进行软中断,现在的硬件层面的支持有sysenter
java程序员需要知道的底层知识(四)_第5张图片

上一篇:https://segmentfault.com/a/11...

你可能感兴趣的:(java)