30、文件缓存:常用文档应该放在触手可得的地方上一节,我们讲了文件系统的挂载和文件的打开,并通过打开文件的过程,构建了一个文件管理的整套数据结构体系。其实到这里,我们还没有对文件进行读写,还属于对于元数据的操作。那这一节,我们就重点关注读写。 系统调用层和虚拟文件系统层文件系统的读写,其实就是调...2025-10-31趣谈Linux操作系统
31、输入与输出:如何建立售前售后生态体系?到这一节,操作系统作为一家外包公司,里面最核心的职能部门差不多都凑齐了。我们有了项目管理部门(进程管理),有为了维护项目执行期间数据的会议室管理部门(内存管理),有项目执行完毕后归档的档案库管理部门(文件系统)。 这一节,我们来规划一下这家公司的售前...2025-10-31趣谈Linux操作系统
32、字符设备(上):如何建立直销模式?上一节,我们讲了输入输出设备的层次模型,还是比较复杂的,块设备尤其复杂。这一节为了让你更清晰地了解设备驱动程序的架构,我们先来讲稍微简单一点的字符设备驱动。 这一节,我找了两个比较简单的字符设备驱动来解析一下。一个是输入字符设备,鼠标。代码在driv...2025-10-31趣谈Linux操作系统
33、字符设备(下):如何建立直销模式?上一节,我们讲了一个设备能够被打开、能够读写,主流的功能基本就完成了。我们讲输入输出设备的时候说到,如果一个设备有事情需要通知操作系统,会通过中断和设备驱动程序进行交互,今天我们就来解析中断处理机制。 鼠标就是通过中断,将自己的位置和按键信息,传递给...2025-10-31趣谈Linux操作系统
34、块设备(上):如何建立代理商销售模式?上一章,我们解析了文件系统,最后讲文件系统读写的流程到达底层的时候,没有更深入地分析下去,这是因为文件系统再往下就是硬盘设备了。上两节,我们解析了字符设备的mknod、打开和读写流程。那这一节我们就来讲块设备的mknod、打开流程,以及文件系统和下层...2025-10-31趣谈Linux操作系统
35、块设备(下):如何建立代理商销售模式?在[文件系统]那一节,我们讲了文件的写入,到了设备驱动这一层,就没有再往下分析。上一节我们又讲了mount一个块设备,将block_device信息放到了ext4文件系统的super_block里面,有了这些基础,是时候把整个写入的故事串起来了。 还...2025-10-31趣谈Linux操作系统
36、进程间通信:遇到大项目需要项目组之间的合作才行前面咱们接项目的时候,主要强调项目之间的隔离性。这是因为,我们刚开始接的都是小项目。随着我们接的项目越来越多,就难免遇到大项目,这就需要多个项目组进行合作才能完成。 两个项目组应该通过什么样的方式进行沟通与合作呢?作为老板,你应该如何设计整个流程呢?...2025-10-31趣谈Linux操作系统
37、信号(上):项目组A完成了,如何及时通知项目组B?上一节最后,我们讲了信号的机制。在某些紧急情况下,我们需要给进程发送一个信号,紧急处理一些事情。 这种方式有点儿像咱们运维一个线上系统,为了应对一些突发事件,往往需要制定应急预案。就像下面的列表中一样。一旦发生了突发事件,马上能够找到负责人,根据处理...2025-10-31趣谈Linux操作系统
38、信号(下):项目组A完成了,如何及时通知项目组B?信号处理最常见的流程主要是两步,第一步是注册信号处理函数,第二步是发送信号和处理信号。上一节,我们讲了注册信号处理函数,那一般什么情况下会产生信号呢?我们这一节就来看一看。 信号的发送有时候,我们在终端输入某些组合键的时候,会给进程发送信号,例如,C...2025-10-31趣谈Linux操作系统
39、管道:项目组A完成了,如何交接给项目组B?在这一章的第一节里,我们大致讲了管道的使用方式以及相应的命令行。这一节,我们就具体来看一下管道是如何实现的。 我们先来看,我们常用的匿名管道(Anonymous Pipes),也即将多个命令串起来的竖线,背后的原理到底是什么。 上次我们说,它是基于管...2025-10-31趣谈Linux操作系统