
图解系统
一共22篇文章
专题:第期
-
4.6 深入理解 Linux 虚拟内存管理
作者:公众号@bin的技术小屋 来源:3.5 万字 + 60 张图 |一步一图带你深入理解 Linux 虚拟内存管理(opens new window) 这一篇会比较硬核,是比较全面的一篇 Linux 虚拟内存管理的文章,文章多达 3.5 万字 + 60 张图,耐心读下去,肯定对 Linux 虚拟内存管理有很深刻的理解! 开车! 内存管理子系统可谓是 Linux 内核众多子系统中最为复杂最为庞大的…... 数字生活指南- 90
- 0
-
4.7 深入理解 Linux 物理内存管理
作者:公众号@bin的技术小屋 来源:一步一图带你深入理解 Linux 物理内存管理(opens new window) #1. 前文回顾 在上篇文章 《深入理解 Linux 虚拟内存管理》 (opens new window)中,我分别从进程用户态和内核态的角度详细深入地为大家介绍了 Linux 内核如何对进程虚拟内存空间进行布局以及管理的相关实现。在我们深入理解了虚拟内存之…... 数字生活指南- 123
- 0
-
5.1 进程、线程基础知识
先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了。 城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人家让你休息就休息,让你工作就工作,毕竟摊位不多,每个人都要占这个摊位来工作,城里要工作的人多着去了。 所以城管为了公平起见,它使用一种策略(调度)方式,给每个人一个固定的工作时间(时间片),时间到了就会通知…... 数字生活指南- 109
- 0
-
5.2 进程间有哪些通信方式?
直接开讲! 每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些? #管道 如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。 $ ps auxf | grep mysql 上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的…... 数字生活指南- 69
- 0
-
5.3 多线程冲突了怎么办?
先来看看虚构的小故事 已经晚上 11 点了,程序员小明的双手还在键盘上飞舞着,眼神依然注视着的电脑屏幕。 没办法这段时间公司业绩增长中,需求自然也多了起来,加班自然也少不了。 天气变化莫测,这时窗外下起了蓬勃大雨,同时闪电轰鸣。 但这一丝都没有影响到小明,始料未及,突然一道巨大的雷一闪而过,办公楼就这么停电了,随后整栋楼都在回荡着的小明那一声撕心裂肺的「卧槽」。 此时,求小明的心里面积有多大? 等…... 数字生活指南- 36
- 0
-
5.4 怎么避免死锁?
面试过程中,死锁也是高频的考点,因为如果线上环境真多发生了死锁,那真的出大事了。 这次,我们就来系统地聊聊死锁的问题。 死锁的概念; 模拟死锁问题的产生; 利用工具排查死锁问题; 避免死锁问题的发生; #死锁的概念 在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就只能等待,直到锁被释放。 那…... 数字生活指南- 39
- 0
-
5.5 什么是悲观锁、乐观锁?
生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情呢?牛逼之人,必有牛逼之处。 那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。 如何用好锁,也…... 数字生活指南- 35
- 0
-
5.6 一个进程最多可以创建多少个线程?
大家好,我是小林。 昨天有位读者问了我这么个问题: 大致意思就是,他看了一个面经,说虚拟内存是 2G 大小,然后他看了我的图解系统 PDF 里说虚拟内存是 4G,然后他就懵逼了。 其实他看这个面经很有问题,没有说明是什么操作系统,以及是多少位操作系统。 因为不同的操作系统和不同位数的操作系统,虚拟内存可能是不一样多。 Windows 系统我不了解,我就说说 Linux 系统。 在 Linux 操作…... 数字生活指南- 18
- 0
-
5.7 线程崩溃了,进程也会崩溃吗?
来源:公众号@码海 原文地址:美团一面:线程崩溃了,进程也会崩溃吗?(opens new window) 大家好,我是小林。 之前分享这篇文章的时候:进程和线程基础知识全家桶,30 张图一套带走 (opens new window),提到说线程的一个缺点: 很多同学就好奇,为什么 C/C++ 语言里,线程崩溃后,进程也会崩溃,而 Java 语言里却不会呢? 刚好看到朋友(公众号:码海&n…... 数字生活指南- 27
- 0
-
6.1 进程调度/页面置换/磁盘调度算法
最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。 然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。 所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。 #进程调度算法 进程调度算法也称 CPU 调度算法,毕竟…... 数字生活指南- 35
- 0
-
7.1 文件系统全家桶
不多 BB,直接上「硬菜」。 #文件系统的基本组成 文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。 文件系统的基本数据单位是文件,它的目的是对磁盘上的文件进行组织管理,那组织的方式不同,就会形成不同的文件系统。 Linux 最经典的一句话是:「一切皆文件」,不仅普通的文件和目录,就…... 数字生活指南- 36
- 0
-
7.2 进程写文件时,进程发生了崩溃,已写入的数据会丢失吗?
大家好,我是小林。 前几天,有位读者问了我这么个问题: 大概就是,进程写文件(使用缓冲 IO)过程中,写一半的时候,进程发生了崩溃,已写入的数据会丢失吗? 答案,是不会的。 因为进程在执行 write (使用缓冲 IO)系统调用的时候,实际上是将文件数据写到了内核的 page cache,它是文件系统中用于缓存文件数据的缓冲,所以即使进程崩溃了,文件数据还是保留在内核的 page cache,我们…... 数字生活指南- 64
- 0