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

笔记开始

1. 进程

进程:就是一个程序运行起来的状态,进程是操作系统用来分配资源的基本单位,分配资源指的是独立的内存空间

e145cba80f331b8bada1ecfadf2566f7.png

e40ee3b522e303b33fb6287dcf3ce791.png

僵尸进程:当A进程fork(底层调的clone)了一个B进程,那么A叫做B的父进程,父进程当中会维护子进程的PCB结构,如果子进程已经退出,父进程没有释放子进程的pcb,那么这个子进程在系统当中看到的就是一个被defunct标记的僵尸进程,(僵尸进程只占pcb,影响不是太大,如果太多的话就有影响,僵尸进程的标记是defunct)

孤儿进程:子进程还没退出,父进程先退出了,那么子进程就没有了父亲,这个时候系统会将这个子进程分配给父进程的父进程去管理(系统会交给一个特殊的进程去处理,没有太大影响,只是换了个爹)

7442036e1a9ee8a64cb3949d2e3a776a.png

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)级别可以支持

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

b72d6d15ff8b5e0ddfeeed9334be36e6.png

4. 内核线程

内核线程:内核启动之后经常要做一些后台操作,这些由Kernel Thread来完成,只在内核空间运行,用户态不能访问

5. 进程调度

进程(任务)调度:内核进程调度器决定,该哪个进程允许,何时运行,运行多长时间,这个过程叫做进程调度,linux下:每个进程都有自己的调度方案,可以自定义,但是linux内核有许多内置的调度方案,不需要我们自己写

5-1.单任务:一个操作系统上面只能干一件事儿

6ba775b7645beeb433913d5a8312e750.png

5-2.多任务:

可以多个进程运行,分抢占式和非抢占式,(现在呢大多是抢占式,由进程调度器控制)

fcd585f2a74bef656750ff3a88aa7b24.png

5-3.linux2.5采用O(1)调度策略

linux2.5采用O(1)调度策略,比如每个进程分配10毫秒,偏向服务器,但是对交互不友好,比如有的进程比较着急,但是也需要排队等待一个10毫秒

linux2.6采用CFS(Completely Fair Scheduler)调度策略,按优先级分配时间片的比例,记录每个进程的执行时间,如果有一个进程执行时间不到应该分配的比

181c0b16f0780c0e29bc322c3d6cacff.png

5-4.进程调度的基本概念

0332d7027dc8eb999cceea18ab361b3f.png

5-5.linux默认的调度策略:

实时进程(急诊)优先级分高低-FIFO(优先级高的先执行),优先级一样-RR(round robin);普通进程:CFS

364d2e214eb2ddb0c0d852879461ce5b.png

6.中断:

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

a3a3dc3ea97a6ce684906f21b764769b.png

软中断(十六进制的80中断):软件给的中断,系统调用的操作都会进行软中断,现在的硬件层面的支持有sysenter

1c5f8dff9651fea81180156fedab0a61.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值