Java程序员需要掌握的计算机底层知识
CPU基本组成、指令乱序执行、合并写技术、非同一访问内存 NUMA,操作系统、内核、用户态与内核态,进程、线程、纤程、中断,内存管理等等
寒泉Hq
当你试图解决一个你不理解的问题时,复杂化就产生了
展开
-
Java程序员需要掌握的计算机底层知识(五):内核同步方法
内核同步机制关于同步理论的一些基本概念临界区(critical area): 访问或操作共享数据的代码段简单理解:synchronized大括号中部分(原子性)竞争条件(race conditions)两个线程同时拥有临界区的执行权数据不一致:data unconsistency 由竞争条件引起的数据破坏同步(synchronization)避免race conditions锁:锁是完成同步的手段(门锁,门后是临界区,只允许一个线程存在)上锁解锁必须具备原子性(如果连上锁的过程都会被打断的原创 2020-06-14 09:46:54 · 68007 阅读 · 0 评论 -
Java程序员需要掌握的计算机底层知识(四):内存管理
内存管理1、单进程DOS时代DOS时代 - 同一时间只能有一个进程在运行(也有一些特殊算法可以支持多进程)windows9x - 多个进程装入内存 1:内存不够用 2:互相打扰为了解决这两个问题,诞生了现在的内存管理系统:虚拟地址 分页装入 软硬件结合寻址分页(内存不够用),内存中分成固定大小的页框(4K),把程序(硬盘上)分成4K大小的块,用到哪一块,加载那一块,加载的过程中,如果内存已经满了,会把最不常用的一块放到swap分区, 把最新的一块加载进来,这个就是著名的LRU算法LRU算法 .原创 2020-06-13 23:07:54 · 67819 阅读 · 1 评论 -
Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
面试高频问题问:进程和线程有什么区别?答:进程是一个程序运行起来的状态(运行态),线程是一个进程中不同的执行路径(线程只是其中一个)。更为专业的回答:进程是操作系统用来分配资源的基本单位,线程是操作系统用来执行调度的基本单位。进程、线程、纤程1、进程双击QQ.exe,操作系统通过IO把它从磁盘取出来,放进内存中,形成一个进程。再双击QQ.exe,又开启一个进程…(同一个可以多次启动,开启多个进程)进程最重要的资源,是它被分配的自己独立的内存空间。程序开始执行之后,首先有一个main主线程原创 2020-06-12 17:52:49 · 69664 阅读 · 0 评论 -
Java程序员需要掌握的计算机底层知识(二):操作系统、内核、用户态与内核态、系统调用的执行过程
操作系统启动过程通电 -> bios uefi 工作 -> 自检 -> 到硬盘固定位置加载bootloader -> 读取可配置信息 -> CMOSCMOS用来存储可以配置的信息,需要通电才能存储信息,主板上有块电池给它通电。鸿蒙操作系统:一遍管理硬件,一般对外暴露接口,管理应用。内核管理硬件。应用程序属于外围程序。后面我们讲到的都是Linux推荐一本书《Linux内核设计与实现》,是介于源码分析和应用中间的一本书,比较浅显、平实的语言勾勒出Linux原创 2020-06-12 10:53:52 · 70600 阅读 · 0 评论 -
Java程序员需要掌握的计算机底层知识(一):CPU基本组成、指令乱序执行、合并写技术、非同一访问内存 NUMA
微机原理、计算机组成原理、操作系统读书的原则:不求甚解,观其大略汇编语言(机器语言)的执行过程汇编语言的本质:机器语言的助记符 其实它就是机器语言计算机通电 -> CPU读取内存中程序(电信号输入)->时钟发生器不断震荡通断电 ->推动CPU内部一步一步执行(执行多少步取决于指令需要的时钟周期)->计算完成->写回(电信号)->写给显卡输出(sout,或者图形)量子计算机Java相关硬件知识原创 2020-06-11 16:35:38 · 68860 阅读 · 2 评论