操作系统基础18-死锁
2020-11-18 10:19·重学IT的老猫
在多道程序环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为死锁。
2020-11-18 10:19·重学IT的老猫
在多道程序环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为死锁。
2020-11-13 15:55·重学IT的老猫
哲学家就餐问题(dining-philosophers problem)是一个经典的进程之间的同步互斥问题。该问题是1965年由荷兰学者Dijkstra提出的。
2020-11-12 00:56·重学IT的老猫
进程同步问题是一个非常重要且相当有趣的问题,本篇我们对其中比较有名的读者-写者问题来进行学习。
读者-写者
假设一个数据库为多个并发进程所共享。有的进程可能只需要读数据库,而另一些进程可能更新(即读和写)数据库。为了区分这两种类型的进程,我们称前者为读者(Reader),称后者为写者(Writer)。显然,如果多个读者同时访问共享数据,而不会产生副作用。但如果某个写者和其他进程**(或读者或写者)**同时访问数据库时可能导致数据不一致的错误。
2020-11-11 11:37·重学IT的老猫
在上一篇操作系统基础14提到通过信号量解决生产者消费者问题。本篇来详细说说操作系统中的经典问题-生成者消费者问题
该问题是一个著名的同步问题。通俗的描述是:一群生产者进程正在生产产品,并将这些产品提供给消费者进程去消费。为使生产者和消费者能够并发执行。在两者之间设置了一个公共区域,生产者进入公共区域生产产品并放入其中。消费者进入公共区域并取走产品进行消费。
在这篇文章中, 我将向大家介绍一种我认为比较合理的 Redis 源码阅读顺序, 希望可以给对 Redis 有兴趣并打算阅读 Redis 源码的朋友带来一点帮助。
刚开始阅读 Redis 源码的时候, 最好从数据结构的相关文件开始读起, 因为这些文件和 Redis 中的其他部分耦合最少, 并且这些文件所实现的数据结构在大部分算法书上都可以了解到, 所以从这些文件开始读是最轻松的、难度也是最低的。
/* This structure defines an entry inside the slow log list */
typedef struct slowlogEntry {
robj **argv;
int argc;
long long id; /* Unique entry identifier. */
long long duration; /* Time spent by the query, in nanoseconds. */
time_t time; /* Unix time at which the query was executed. */
} slowlogEntry;
2020-11-10 22:55·重学IT的老猫
上一篇介绍操心系统中的同步互斥的基本概念,本篇继续对同步互斥进行学习
基本概念
锁是一个更高等级的编程抽象。
包含一个二进制变量(锁定/解锁),两个操作:
2020-11-02 11:26·重学IT的老猫
进程同步是一个操作系统级别的概念,在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入了进程同步的概念。