操作系统与虚拟机底层
文章平均质量分 93
最小的帆也能远航
不必借光而行,你我亦是星辰!
展开
-
操作系统面试
可以这么说,操作系统是一种运行在内核态的软件。它是应用程序和硬件之间的媒介,向应用程序提供硬件的抽象,以及管理硬件资源。可以这么说,内核是一个计算机程序,它是操作系统的核心,提供了操作系统最核心的能力,可以控制操作系统中所有的内容。内核空间,这个内存空间只有内核程序可以访问;⽤户空间,这个内存空间专⻔给应⽤程序使⽤,权限比较小;⽤户空间的代码只能访问⼀个局部的内存空间,⽽内核空间的代码可以访问所有内存空间。因此,当程序使⽤⽤户空间时,我们常说该程序在⽤户态执⾏,⽽当程序使内核空间时,程序则在内核态。原创 2024-02-18 15:33:09 · 935 阅读 · 1 评论 -
Chrome底层原理和HTTP协议
1.Chrome为什么打开一个页面,会有4个进程多进程架构的学习从计算的角度来说,单线程就是一个接一个的计算,多线程就是同时处理多个计算。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,就是说允许单个程序创建多个并行执行。单线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程也是程序,所以线程需要占用内存,线程越多占用内存也越多,多线程需要协调和管理,所以需要CPU时间跟踪线转载 2022-03-08 10:50:15 · 429 阅读 · 0 评论 -
HTTP长连接和短连接原理
1. HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。2. 如何理解HTTP协议是无状态的HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的..转载 2022-03-07 15:26:08 · 463 阅读 · 0 评论 -
深入理解Tomcat整体架构和处理请求流程
1.Tomcat整体结构由上图可知Tomcat的顶层容器是Server,而且一个Tomcat对应一个Server,一个server有多个service提供服务.service包含两个重要组件:Connector和Container.这个后面详细讲解.这个Server由谁来管理呢?当然是Catalina了,她是tomcat的管理类,她的三个方法load,start,stop分别用来管理整个服务器的生命周期.Load****方法:Load方法根据conf/server.xml文件创建Server并调用Se转载 2022-03-07 10:56:44 · 229 阅读 · 0 评论 -
JVM各种垃圾回收器的使用以及核心参数调优
JVM为了更有效率的对堆空间进行垃圾回收,把堆空间进行了分代,分为年轻代、老年代和永久代(在1.8版本以后,永久代已经被彻底移除了,被元空间取而代之)。当一个对象出生时,会首先选择在eden区为对象分配空间,当eden区被占满分配不下时,会触发一次Minor GC,MinorGC运行时,会将垃圾回收后eden区存活的对象移至Survivor1区,当Survivor某个区有了对象后,下一次进行MinorGC时,垃圾回收后会将eden区和存放对象的Survivor区里的剩余存活对象复制到另外一块空白的Sur转载 2022-03-06 09:36:02 · 1196 阅读 · 0 评论 -
GC常见算法
1、GC的概念GC:Garbage Collection 垃圾收集1960年 Lisp使用了GCJava中,GC的对象是Java堆和方法区(即永久区)我们接下来对上面的三句话进行一一的解释:(1)GC:Garbage Collection 垃圾收集。这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM。在C/C++里是由程序猿自己去申请、管理和释放内存空间,因此没有GC的概念。而在Java中,后台专门有一个专门用于垃圾回转载 2022-03-04 15:33:07 · 964 阅读 · 0 评论 -
垃圾回收机制
1. 概述垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。2. 垃圾判断算法2.1 引用计数法给每个对象添加一个计数器,当有地方引用该对象时计数器加1,当引用失效时计数器减1。用对象计数器是否为0来判断对象是否可被回收。缺点:无法解决循环引用的问题。先创建一个字符串,String m = new String("jack");,这时候 “jack” 有一个引转载 2022-03-04 10:53:36 · 1072 阅读 · 0 评论 -
内存屏障详解
内存屏障是硬件之上、操作系统或JVM之下,对并发作出的最后一层支持。再向下是是硬件提供的支持;向上是操作系统或JVM对内存屏障作出的各种封装。内存屏障是一种标准,各厂商可能采用不同的实现。本文仅为了帮助理解JVM提供的并发机制。首先,从volatile的语义引出可见性与重排序问题;接下来,阐述问题的产生原理,了解为什么需要内存屏障;然后,浅谈内存屏障的标准、厂商对内存屏障的支持,并以volatile为例讨论内存屏障如何解决这些问题;最后,补充介绍JVM在内存屏障之上作出的几个封装。为了帮助理解,会简要讨论转载 2022-03-03 16:15:59 · 2257 阅读 · 0 评论 -
JMM内存模型
1.为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。1.1.CPU和缓存一致性我们应该都知道,计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又免不了要和数据打交道。而计算机转载 2022-03-03 09:43:09 · 1130 阅读 · 0 评论 -
JVM底层原理
1.基础1.JVM整体架构JVM(虚拟机):指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。比如kotlin、scala等。b.jvm有很多,不只是Hotspot,还有JRockit、J9等等2.JVM内存结构3.类加载过程1.加载:在硬盘上查找并通过IO读入字节码文件2.连接:执行验证原创 2022-03-02 17:34:48 · 1507 阅读 · 0 评论 -
JVM底层原理
1.基础1.JVM整体架构JVM(虚拟机):指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。比如kotlin、scala等。b.jvm有很多,不只是Hotspot,还有JRockit、J9等等2.JVM内存结构3.类加载过程1.加载:在硬盘上查找并通过IO读入字节码文件2.连接:执行验证原创 2022-03-02 17:31:52 · 173 阅读 · 0 评论 -
JVM底层原理
1.基础1.JVM整体架构JVM(虚拟机):指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。比如kotlin、scala等。b.jvm有很多,不只是Hotspot,还有JRockit、J9等等2.JVM内存结构3.类加载过程1.加载:在硬盘上查找并通过IO读入字节码文件2.连接:执行验证原创 2022-03-02 17:28:05 · 3196 阅读 · 1 评论 -
synchronized关键字用法
1、一套清晰的规则其实很容易发现,无论是加了锁的方法还是加了锁的代码块,无是加的是对象锁还是加的是类锁,只要上的是同一把锁,那么它们的访问规则就应该是相同的。也就是上了同一把锁的东西,要么一起可以被访问,要么一起禁止别人访问。因此,如果想搞清楚访问的规则,我们首先要搞清楚锁的类型。然后判断,只要上的是同一把锁,访问的规则就应该相同。那么java中的锁有那些类型呢。可以简单的总结为两种类型:java中共有两种类型的锁:(1)类锁:只有synchronized修饰静态方法或者修饰一个类的class对象时,转载 2022-03-01 14:40:05 · 343 阅读 · 0 评论 -
【并发编程】MESI--CPU缓存一致性协议
概念MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议。MESI协议中的状态CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示):M: 被修改(Modified)该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应原创 2022-03-01 09:48:51 · 202 阅读 · 0 评论 -
操作系统与虚拟机底层
1.冯诺依曼计算机模型详解现代计算机模型是基于-冯诺依曼计算机模型计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼计算机模转载 2022-02-28 16:09:26 · 291 阅读 · 0 评论