From 3937604aa75ef353ef4141bd3ae62944fd0b0ecf Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Tue, 24 Sep 2019 16:20:04 +0800 Subject: [PATCH] begin conclusion on signals and monitor chp18.md, not finished yet. --- c++ note/chp7/chp7conclusion.md | 2 +- thu_os/chp18.md | 37 ++++++++++++++++++++++ thu_os/images/synchroniaztion_methods.png | Bin 0 -> 56580 bytes 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 thu_os/chp18.md create mode 100644 thu_os/images/synchroniaztion_methods.png diff --git a/c++ note/chp7/chp7conclusion.md b/c++ note/chp7/chp7conclusion.md index e161c10..5879a3d 100644 --- a/c++ note/chp7/chp7conclusion.md +++ b/c++ note/chp7/chp7conclusion.md @@ -31,7 +31,7 @@ Sales_data::isbn(&total); + 从语言的功能层面,一个`const`的对象只能调用它的标记为`const`的成员函数。这是很自然的,因为编译器会认为没有`const`标记的成员函数会修改对象的成员变量。所以,对于只读的成员函数,尽量都标记为`const`,以便其`const`的对象也可以调用这些函数。 -+ 从变量类型的方面。对于一般的对象,如`Sales_data total`这种,`this`指针的类型为`Sales_data* const`,即`this`指针是`const pointer to non-const object`,在这种情况下,`this`指针是不能指向`const`的对象的。为了指定`this`指针的类型为`const Sales_data* cosnt`,即`const pointer to const object`,就需要在函数的参数列表和具体实现之间加上`const`修饰符。实际上,这也是`const`对象只能调用`const`成员函数在语言层面的原因。 ++ 从变量类型的方面。对于一般的对象,如`Sales_data total`这种,`this`指针的类型为`Sales_data* const`,即`this`指针是`const pointer to non-const object`,在这种情况下,`this`指针是不能指向`const`的对象的。为了指定`this`指针的类型为`const Sales_data* const`,即`const pointer to const object`,就需要在函数的参数列表和具体实现之间加上`const`修饰符。实际上,这也是`const`对象只能调用`const`成员函数在语言层面的原因。 - class scope and defining a member function outside the class - a function to return `this` object diff --git a/thu_os/chp18.md b/thu_os/chp18.md new file mode 100644 index 0000000..ce8c79f --- /dev/null +++ b/thu_os/chp18.md @@ -0,0 +1,37 @@ +进程管理(4):信号量与管程 +======================== + +在[进程管理(3):同步互斥](chp17.md)中,我们提到,为了解决同步互斥问题,操作系统会提供一些高级抽象方法供应用进程调用,这样应用进程就不需要自己利用繁琐的软件方法来解决同步互斥了。存在三种高级抽象方法,分别是锁,信号量与条件变量,其中锁也在上面那篇中讨论过了,这里主要是讨论信号量与条件变量。同步互斥的层次结构如下图所示: + +![sychronization_methods](images/synchronization_methods.png) + +## 信号量 + +> 为什么要引入信号量? + +前面我们已经用锁机制方便的解决了临界区的互斥访问问题了,但是锁机制似乎并不能适用于更一般的情况。例如操作系统某些资源是有多个的,可以让多个进程共同访问,只有当访问的进程多于资源数量的时候才对进程访问加以限制。很明显,对于这种情况,使用锁机制的结果是一次只能有一个进程访问资源,这无疑是对资源的一种浪费。 + +此外,锁机制只能解决进程间的互斥访问问题,并不能推广到进程间的同步问题。 + +因此,有必要引入一个新的机制,既可以合理地对多个资源进行分配,又可以同时兼顾同步与互斥问题。这就是引入信号量机制的原因。 + +> 什么是信号量? + +信号量是操作系统提供的一种协调共享资源访问的方法。它采用一种简明的方法来协调多个资源的访问,即采用信号量来表示当前剩余的系统资源数量。如果有一个进程请求某个资源,则将该资源的信号量递减;反之,如果某个进程释放了资源,就将该资源的信号量递增。这里对信号量的操作都是被操作系统封装起来的,因此可以看到,信号量更多的是一种抽象数据类型,由一个整型变量和两个基本操作组成,通常用`P`操作和`V`操作来表示递减和递增,分别对应了荷兰语里面的`尝试减少`和`增加`。 + +```c +class Semaphore{ +private: + int sem; + +public: + void up(); + void down(); +} +``` + +> 信号量的实现 + +为了实现信号量,主要就是需要实现它的两个成员函数`down`和`up`。 + +当一个进程请求资源时,首先应该检查`sem`当前的值,如果`sem > 0`,表示系统还有剩余的资源,则执行`--sem`并且将资源分配给请求进程;如果`sem <= 0`,则表示当前系统已经没有这种资源了,仍然执行`--sem`,表示新增了一个进程在等待这个资源。由于当前进程得不到它请求的资源,此时应该释放CPU的控制权,调度其他进程进入运行状态。为了在资源空闲时可以唤醒当前进程,可以对每个信号量新增一个等待队列,并且将等待该信号量的进程加入等待队列中。 diff --git a/thu_os/images/synchroniaztion_methods.png b/thu_os/images/synchroniaztion_methods.png new file mode 100644 index 0000000000000000000000000000000000000000..0c50fb9fcb5616496ac2e0da3bd03ee3ede43e1b GIT binary patch literal 56580 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