Fork me on GitHub

08 2020 档案

摘要:概述 由于内存的运行速度和CPU的运行速度相差太多,所以现代计算机CPU都不是直接操作内存,而是直接操作寄存器和高速缓存,如果只有一个CPU这个事情就很简单,但是如果计算机中有多个核,那每个CPU都从主内存中读取了同一个变量,如何保证缓存的一致性,就变得非常麻烦,现在常用的解决办法有两种。 总线锁定 阅读全文
posted @ 2020-08-31 21:51 猿起缘灭 阅读(4385) 评论(1) 推荐(1) 编辑
摘要:概述 本文会介绍HashMap部分源码和一些常见问题。 HashMap中参数介绍 /**默认初始化容量大小*/ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /**最大容量*/ static final int MAXIM 阅读全文
posted @ 2020-08-30 22:21 猿起缘灭 阅读(273) 评论(0) 推荐(0) 编辑
摘要:概述 第一次听说这个概念是在看kafka原理的时候,因为当时很好奇为什么kafka一个基于磁盘存储的MQ会那么快,当时找到的答案是kafka采用磁盘顺序读写和零拷贝技术,从而使得kafka的吞吐量非常大。本文就介绍一下操作系统中的零拷贝技术原理,之后会介绍kafka是如何使用操作系统的零拷贝技术实现 阅读全文
posted @ 2020-08-21 17:13 猿起缘灭 阅读(1524) 评论(0) 推荐(2) 编辑
摘要:概述 进程之间需要协作完成一个事情,往往就需要通信,而且这个问题是面试的时候,面试官非常喜欢问的问题,很少有面试官会去问操作系统页面置换算法的。本文就介绍一下进程之间常用的通信方式。 信号 信号是在软件层面对中断的模拟。 特性 任何时候都可以发出,无论接收信号目标进程是处于什么状态,如果接收信号的目 阅读全文
posted @ 2020-08-20 16:49 猿起缘灭 阅读(283) 评论(0) 推荐(0) 编辑
摘要:概述 线程安全问题,是一个非常重要且复杂的问题。在多线程修改共享变量的时候,如果不做特殊的处理,变量的最终的结果往往不会符合我们的预期,原因很简单,因为现代的计算机都做了多级的缓存,而且使用了多核,那每个线程修改某个变量是在CPU的高速缓存中修改,而且修改完之后并不是立即就同步到主存中,这就导致某一 阅读全文
posted @ 2020-08-19 19:20 猿起缘灭 阅读(700) 评论(0) 推荐(0) 编辑
摘要:概述 上节讲了操作系统内存管理,讲到由于内存空间有限,无法把全部的进程所需的资源都放入内存,所以提出了很多的页面置换算法,这一节面临一个新的问题,就是内存中那么多的进程,到底应该选择哪一个进程执行,这是一个很重要的问题。为了达到不同的目的,就会有不同的策略,比如在交互式系统中,我们肯定希望计算机的响 阅读全文
posted @ 2020-08-17 19:06 猿起缘灭 阅读(377) 评论(0) 推荐(0) 编辑
摘要:概述 在前几篇讲内存管理的时候,提到地址空间是内存的抽象。那进程就是CPU的抽象,一个程序运行起来以后就是一个进程,线程是进程创建出来的,其本身并不能独立运行,一个进程可以创建出来多个线程,他们之间会共享进程的堆空间,公共变量等。本文就详细介绍一个进程和线程基础。 进程 进程定义 一个具有一定独立功 阅读全文
posted @ 2020-08-16 16:42 猿起缘灭 阅读(481) 评论(0) 推荐(0) 编辑
摘要:概述 上一篇文章把分段和分页介绍了一下,以及两者的寻址方式和优化方法都介绍了,这节主要介绍另一个重要问题,页面置换算法,当内存空间不足时,需要把内存中的页放入磁盘,那到底选择哪些页放到磁盘上比较好呢?这篇文章会回答这个问题。 如何解决内存不够用 早期的解决办法是采用覆盖技术,但是覆盖技术需要程序员做 阅读全文
posted @ 2020-08-14 12:08 猿起缘灭 阅读(369) 评论(0) 推荐(0) 编辑
摘要:概述 程序都需要被加载到内存中才可以运行,在远古时代^_^,程序的内存只有非常非常小的几kb,如果要运行的程序很大,大到超过了内存,而且还想要运行这样的程序,要怎么做呢?如果在内存中同时运行几个程序,如何确保某个程序不会修改别的程序的内存中的值呢?以上的问题总结下来基本就三大核心问题: 进程之间如何 阅读全文
posted @ 2020-08-12 19:14 猿起缘灭 阅读(673) 评论(0) 推荐(0) 编辑
摘要:概述 本文是介绍操作系统文章的第一篇,主要介绍计算机的硬件和软件构成,以及软硬件是如何配合工作的,操作系统在其中扮演的角色,本系列文章主要介绍操作系统的几个核心的问题,比如操作系统的内存管理,文件系统,进程调度等,由于我并不是一个专业的操作系统工程师,😄,所以写作的时候不会写很多书面语言,会使用通 阅读全文
posted @ 2020-08-10 17:30 猿起缘灭 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:概述 继续刷题,本篇算法主要偏向字符串和数组部分 第二十五题 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解 阅读全文
posted @ 2020-08-03 15:36 猿起缘灭 阅读(126) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示