(in+1)%BUFFER_SIZE ==out 时,缓冲为满。这种方法最多允许缓冲的最大项数为
BUFFER_SIZE -1。其实这个问题在上学期的数据结构课程里就讲过,就是用牺牲一个存
储单元为代价来区分空和满两种状态,因为如果不牺牲一个存储单元,空和满两种状态是
一样的。
消息传递系统,管道机制。这部分好好看看书。中文版 P87,都不难。第一、直接通信和
间接通信。直接通信,需要通信的每个进程必须明确地命名通信的接收者或发送者(对称
寻址和非对称寻址)。间接通信,用过邮箱或端口来发送和接收消息。一个进程可能通过
许多不同的邮箱与其他进程通信,但两个进程仅在其共享至少一个邮箱时可相互通信。第
二、同步和异步,又称阻塞和非阻塞,具体含义 P89 下部。第三、缓冲,P90 上部。
第四章 线程(老师答疑时候亲口和我说,线程这一章重点就两个:第一是线程的一系列概
念,第二个是多线程的模型。其余的可以不看)
先明确线程的概念,线程是 CPU 使用的基本单元,它由线程 ID、程序计数器、寄存器集
合和栈组成。它与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源。特
别看一下 P111 的那张图,这张图表明了线程之间可以共享代码,数据和文件,但不共享
寄存器和栈。
推荐文章:
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
下面几点好好记住:
1、线程是一个实体,2、被系统独立调用和分配的基本单位(CPU 使用的基本单元);
3、自己基本不拥有资源,只拥有一些在执行中必不可少的资源,可与同属于一个进程的
其他线程共享所拥有的全部资源;4、可以创建和撤销另一个线程;5、同一进程的多个线
程可以并发执行。
线程和进程的对比:
1、调度:传统 OS 中,调度和分派的基本单位是进程,拥有资源的基本单位也是进程。引
入线程的 OS 中,调度和分派的基本单位是线程,拥有资源的基本单位是进程。
2、并发性:在引入线程的系统中,进程之间可以并发执行,同一进程中的多个线程之间
也可以并发执行,使系统具有更好的并发性,进一步提高了资源利用率及系统吞吐量。
3、拥有资源:进程是拥有资源的基本单位。线程本身不拥有资源,只拥有一定的必不可
少的资源,可以访问其隶属进程的资源,可供同意进程的线程共享。
4、系统开销:系统创建以及撤销进程时的开销远大于创建和撤销线程时的开销。进程间
切换的开销也远大于切换线程时的开销。
为什么要引入进程和线程:
OS 引入进程:使多个程序并发执行,改善资源利用率,提高系统吞吐量。
OS 引入线程:1、减少程序并发执行时所付出的时空开销。2、使 OS 具有更好的并发性。
说到多线程的用处,看书 4.1.1 有详细说明,比如服务器给多个请求分别建立线程。