42、IPC(下):不同项目组之间抢资源,如何协调?IPC这块的内容比较多,为了让你能够更好地理解,我分成了三节来讲。前面我们解析完了共享内存的内核机制后,今天我们来看最后一部分,信号量的内核机制。 首先,我们需要创建一个信号量,调用的是系统调用semget。代码如下: 123456789101112...2025-10-31趣谈Linux操作系统
41、IPC(中):不同项目组之间抢资源,如何协调?了解了如何使用共享内存和信号量集合之后,今天我们来解析一下,内核里面都做了什么。 不知道你有没有注意到,咱们讲消息队列、共享内存、信号量的机制的时候,我们其实能够从中看到一些统一的规律:它们在使用之前都要生成key,然后通过key得到唯一的id,并且...2025-10-31趣谈Linux操作系统
40、IPC(上):不同项目组之间抢资源,如何协调?我们前面讲了,如果项目组之间需要紧密合作,那就需要共享内存,这样就像把两个项目组放在一个会议室一起沟通,会非常高效。这一节,我们就来详细讲讲这个进程之间共享内存的机制。 有了这个机制,两个进程可以像访问自己内存中的变量一样,访问共享内存的变量。但是同...2025-10-31趣谈Linux操作系统
39、管道:项目组A完成了,如何交接给项目组B?在这一章的第一节里,我们大致讲了管道的使用方式以及相应的命令行。这一节,我们就具体来看一下管道是如何实现的。 我们先来看,我们常用的匿名管道(Anonymous Pipes),也即将多个命令串起来的竖线,背后的原理到底是什么。 上次我们说,它是基于管...2025-10-31趣谈Linux操作系统
38、信号(下):项目组A完成了,如何及时通知项目组B?信号处理最常见的流程主要是两步,第一步是注册信号处理函数,第二步是发送信号和处理信号。上一节,我们讲了注册信号处理函数,那一般什么情况下会产生信号呢?我们这一节就来看一看。 信号的发送有时候,我们在终端输入某些组合键的时候,会给进程发送信号,例如,C...2025-10-31趣谈Linux操作系统
37、信号(上):项目组A完成了,如何及时通知项目组B?上一节最后,我们讲了信号的机制。在某些紧急情况下,我们需要给进程发送一个信号,紧急处理一些事情。 这种方式有点儿像咱们运维一个线上系统,为了应对一些突发事件,往往需要制定应急预案。就像下面的列表中一样。一旦发生了突发事件,马上能够找到负责人,根据处理...2025-10-31趣谈Linux操作系统
36、进程间通信:遇到大项目需要项目组之间的合作才行前面咱们接项目的时候,主要强调项目之间的隔离性。这是因为,我们刚开始接的都是小项目。随着我们接的项目越来越多,就难免遇到大项目,这就需要多个项目组进行合作才能完成。 两个项目组应该通过什么样的方式进行沟通与合作呢?作为老板,你应该如何设计整个流程呢?...2025-10-31趣谈Linux操作系统
35、块设备(下):如何建立代理商销售模式?在[文件系统]那一节,我们讲了文件的写入,到了设备驱动这一层,就没有再往下分析。上一节我们又讲了mount一个块设备,将block_device信息放到了ext4文件系统的super_block里面,有了这些基础,是时候把整个写入的故事串起来了。 还...2025-10-31趣谈Linux操作系统
34、块设备(上):如何建立代理商销售模式?上一章,我们解析了文件系统,最后讲文件系统读写的流程到达底层的时候,没有更深入地分析下去,这是因为文件系统再往下就是硬盘设备了。上两节,我们解析了字符设备的mknod、打开和读写流程。那这一节我们就来讲块设备的mknod、打开流程,以及文件系统和下层...2025-10-31趣谈Linux操作系统
33、字符设备(下):如何建立直销模式?上一节,我们讲了一个设备能够被打开、能够读写,主流的功能基本就完成了。我们讲输入输出设备的时候说到,如果一个设备有事情需要通知操作系统,会通过中断和设备驱动程序进行交互,今天我们就来解析中断处理机制。 鼠标就是通过中断,将自己的位置和按键信息,传递给...2025-10-31趣谈Linux操作系统