java中执行main函数,也就是执行一个命令,jvm去负责调用操作系统哪些指令,会掉
操作系统里的MAIN方法,是整个系统的,生成系统进程,执行java main,在调用JAVA
main 之前是创建虚拟机
初始化,跟虚拟机相关的东西都会被创建
进程是资源分配的最小单位
java test 执行jdk里的命令,参数是文件名(test),在执行系统级的main函数 然后main调用java 的main,
还调用其他函数,初始化java虚拟机,需要的资源,内存大小,垃圾处理器
然后创建虚拟机(可以在之前写好,也有默认的)
虚拟机本质上也是一个进程(任务)
创建虚拟机
initializeJVM
createVM
销毁虚拟机 detroyVm()
解释时间片
在一个CPU上,操作系统的任务调度是采用时间片轮转的抢占式调度方式,每个任务执行一小段时间
后被强制暂停去执行下一个任务,每个任务轮流执行,任务执行的一小段时间就叫做时间片,
时间片非常短,各个任务之间是快速切换的,给人的感觉是多个任务在“同时进行”,这也就是并发,
时间片轮转的时候,切换的时候会保存当前进程的所有状态,就是保存上下文环境,以便下次继续开始
能够恢复到切换时的状态,继续执行。
一个时间段,多个进程切换,是并发,需要上下文
描述:关键词
并发:时间段,多个进程,单个CPU,伪同步,单个时间点不同,肉眼同时
并行:时间点,多个进程 ,多个CPU,真同步,
并发:是多个进程在一个CPU下,在一段时间内,让多个进程都能推进,但是不是真同步,
单个点来看还是一个时间点只执行一个进程,一个时间段内,当做多个进程同时执行
并行:是多个进程在多多核CPU下的分别,同时运行的,一个时间点上,确实是同步执行的
因为进程的运行是在CPU上的,CPU有寄存器,保存的是进程运行的各种临时数据,为了
达到切换和便于恢复的目的,就有了将CPU寄存器保存和恢复的做法,
归根结底是为了接着上次的位置继续运行
内核态:
操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态或者核心态
用户态:
用户程序的权限最低,称为用户态