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