个人简介

Echo Blog


江湖无名 安心练剑
  • 操作系统学习-05-03-多线程冲突了怎么办?
    竞争与协作 在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调度的方式,让每个进程执行每次执行一个时间片,时间片用完了,就切换下一个进程运行,由于这个时间片的时间很短,于是就造成了「并发」的现象。 另外,操作系统也为每个进程创建巨大、私有的虚拟内存的假象,这种地址空间的抽象让每个程序好像拥有自己的内存,而实际上操作系统在背后秘密地让多个地址空间「复用」...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-05-02-进程间通讯
    进程间有哪些通信方式? 每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些? 管道 如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。 $ ps auxf | grep mysql 上面命令行里...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-05-01-进程、线程基础知识
    进程、线程基础知识 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了。 城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人家让你休息就休息,让你工作就工作,毕竟摊位不多,每个人都要占这个摊位来工作,城里要工作的人多着去了。 所以城管为了公平起见,它使用一种策略(调度)方式,给每个人一个固定的工...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-04-07-深入理解 Linux 物理内存管理
    前文回顾 在上篇文章 《深入理解 Linux 虚拟内存管理》中,我分别从进程用户态和内核态的角度详细深入地为大家介绍了 Linux 内核如何对进程虚拟内存空间进行布局以及管理的相关实现。 在我们深入理解了虚拟内存之后,那么何不顺带着也探秘一下物理内存的管理呢? 所以本文的目的是在深入理解虚拟内存管理的基础之上继续带大家向前奋进,一举击破物理内存管理的知识盲区,使大家能够俯瞰整个 Lin...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-04-06-深入理解 Linux 虚拟内存管理
    深入理解 Linux 虚拟内存管理 内存管理子系统可谓是 Linux 内核众多子系统中最为复杂最为庞大的一个,其中包含了众多繁杂的概念和原理,通过内存管理这条主线我们把可以把操作系统的众多核心系统给拎出来,比如:进程管理子系统,网络子系统,文件子系统等。 由于内存管理子系统过于复杂庞大,其中涉及到的众多繁杂的概念又是一环套一环,层层递进。 如何把这些繁杂的概念具有层次感地,并且清晰地,...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-04-05-
    如何避免预读失效和缓存污染的问题? 咋一看,以为是在问操作系统的问题,其实这两个题目都是在问如何改进 LRU 算法。 因为传统的 LRU 算法存在这两个问题: 「预读失效」导致缓存命中率下降 「缓存污染」导致缓存命中率下降 Redis 的缓存淘汰算法则是通过实现 LFU 算法来避免「缓存污染」而导致缓存命中率下降的问题(Redis 没有预读机制)。 MySQL 和 Linux 操...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-04-04-在 4GB 物理内存的机器上,申请 8G 内存会怎么样?
    Q 问题「在 4GB 物理内存的机器上,申请 8G 内存会怎么样?」 存在比较大的争议,有人说会申请失败,有的人说可以申请成功。 这个问题在没有前置条件下,就说出答案就是耍流氓。 这个问题要考虑三个前置条件: 操作系统是 32 位的,还是 64 位的? 申请完 8G 内存后会不会被使用? 操作系统有没有使用 Swap 机制? ...
    2023-04-03 00:00:00 | Linux
  • 操作系统学习-04-03-内存满了,会发生什么?
    Q (1)为什么操作系统需要内存管理和虚拟内存,除了给进程分配内存和防止进程间相互影响,还有什么用? (2)除了 OOM,内存满了之后会有什么处理? 先来说说第一个问题:虚拟内存有什么作用? 第一,虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU 访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比...
    2023-04-03 00:00:00 | Linux