0%

  • 前面已经说过,将程序存储在内存中分为三步:

    1. 在编译阶段将一个完整的程序分为好几段;
    2. 在内存中找到空闲的空间来存储这些程序段
    3. 将每个程序段存储在找到的空闲内存中,并将基地址存储在进程控制块 PCB 的 LDT 表中。

    这一章节就要详细描述第二步。

阅读全文 »

  • 内存的使用仍要从计算机如何工作开始讲起。根据冯 · 诺依曼的理论,在计算机中,程序和数据是以同等的地位存储在存储器中的,计算机工作就是不断地“从内存中取出指令 - CPU分析指令 - CPU执行指令”的过程,由此,内存就被使用了起来。
阅读全文 »

  • 仍以生产者-消费者为例来讲述死锁问题:如果把生产者进程的 P(empty)P(mutex) 对调、消费者进程的 P(full)P(mutex) 对调,就会产生死锁问题。
阅读全文 »

  • 由于 linux-0.11 使用的是单核 CPU,所以我们可以利用关中断法来对信号量临界区进行保护,信号量的代码实现如下
阅读全文 »

  • 靠临界区保护信号量(保护信号量的修改处,如前面的 P(semaphore s)、V(semaphore s) ),靠信号量实现进程之间的同步。
阅读全文 »