操作系统学习-07-01-文件系统全家桶
大纲
文件系统的基本组成
文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。
文件系统的基本数据单位是文件,它的目的是对磁盘上的文件进行组织管理,那组织的方式不同,就会形成不同的文件系统。
Linux 最经典的一句话是:「一切皆文件」,不仅普通的文件和目录,就连块设备...
2023-04-03 00:00:00 |
Linux
操作系统学习-06-01-进程调度/页面置换/磁盘调度算法
进程调度/页面置换/磁盘调度算法
最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。
然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。
所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。
进程...
2023-04-03 00:00:00 |
Linux
操作系统学习-05-07-线程崩溃了,进程也会崩溃吗?
Carsh
很多同学就好奇,为什么 C/C++ 语言里,线程崩溃后,进程也会崩溃,而 Java 语言里却不会呢?
刚好看到朋友(公众号:码海 (opens new window))写了一篇:「美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃?」
我觉得写的很好,所以分享给大家一起拜读拜读,本文分以下几节来探讨:
线程崩溃,进程一定会崩溃吗
进程...
2023-04-03 00:00:00 |
Linux
操作系统学习-05-06-一个进程最多可以创建多少个线程?
接着,来看看读者那个面经题目:一个进程最多可以创建多少个线程?
这个问题跟两个东西有关系:
进程的虚拟内存空间上限,因为创建一个线程,操作系统需要为其分配一个栈空间,如果线程数量越多,所需的栈空间就要越大,那么虚拟内存就会占用的越多。
系统参数限制,虽然 Linux 并没有内核参数来控制单个进程创建的最大线程个数,但是有系统级别的参数来控制整个系统的最...
2023-04-03 00:00:00 |
Linux
操作系统学习-05-05-什么是悲观锁、乐观锁?
什么是悲观锁、乐观锁?
生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。
但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情呢?牛逼之人,必有牛逼之处。
那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应...
2023-04-03 00:00:00 |
Linux
操作系统学习-05-04-怎么避免死锁?
怎么避免死锁?
面试过程中,死锁也是高频的考点,因为如果线上环境真多发生了死锁,那真的出大事了。
这次,我们就来系统地聊聊死锁的问题。
死锁的概念;
模拟死锁问题的产生;
利用工具排查死锁问题;
避免死锁问题的发生;
死锁的概念
在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程...
2023-04-03 00:00:00 |
Linux
操作系统学习-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