2009-06-02 52 views

回答

7

信号量,锁,条件变量等是操作系统的概念,通常必须根据操作系统内核的特性来实现。因此,通常不可能孤立地研究它们 - 你也需要考虑内核代码。或许这样做的最好方法是在诸如Understanding The Linux Kernel之类的书的帮助下查看Linux内核。

-2

可以赶上很多IPC(进程间通信)图书的,可以解释一下你的来龙去脉需要。有一本经典书。 Unix网络编程进程间通信Richard Richans。你会得到你需要的一切。 :)

+4

信号量,锁和条件变量不是进程间通信机制,并且与网络无关。 – 2009-06-02 08:01:52

1

为了基本了解,你可以参考书籍Operating System Concepts,by Avi Silberschatz,Peter Baer Galvin,Greg Gagne,真的很不错。

您还可以访问Dave Marshall's网站获得一些支持。请参阅那里的信号量部分。

2

在底层,如果你想实现这样的事情,你将需要使用汇编语言。 C和C++根本不公开编写并发代码所需的那些功能---除了使用在其实现中使用汇编程序的库。

3

学习操作系统概念的一个很好的起点可能是Andrew Tanenbaum的“现代操作系统”。他还在另一本关于他自己的操作系统(Minix)的书中被称为“操作系统:设计与实现”,该书更详细地介绍了编码。你应该能够在你的本地图书馆找到这些书。

相关主题您可能想查找关于如何以及为什么使用信号量的信息:竞争条件,同步,多线程,消费者生产者问题。

2

Minix的东西是相当不错的。一个更简单的例子是MicroC/OS的东西。它带有一本详细的教科书,所有的资源都在那里。它具有基本元素,代码很小,可以在相对较短的时间内理解它。

http://www.micrium.com/products/rtos/kernel/rtos.html

http://en.wikipedia.org/wiki/MicroC/OS-II

你可以做的另一件事,是在Linux上的应用程序进行伪造出来的操作系统。我通过建立基本剔与itimer,然后用函数调用swapcontext(男子2 swapcontext),这将保存在堆栈的REG左右交换线程这样做。这会让你感到丑陋的东西,你只需要实现信号量/互斥/定时器等等。这很有趣。

不管有些职位的说,是不是需要汇编。了解它总是会有所帮助。当你编写高级应用程序时,理解内部/编译器/等的工作方式绝不会让人感到痛苦。

1

有趣的是,Stevens Book是用于描述同步原语及其用法的经典文本之一。他似乎认为他们可以用来控制进程间通信。我倾向于同意他的观点。网络,不,IPC是的。肯定是的。