操作系统小实验

生产者消费者问题

共享缓冲区中放置一个数字,取值范围为[0, 10],初值为0。生产者将此值加1,消费者将此值减1。

  1. 场景1

    • 同一进程内启动一组生产者线程和一组消费者线程

    • 缓冲区为本进程的全局变量

  2. 场景2

    • 启动一组生产者进程和一组消费者进程

    • 同一个数据文件为缓冲区

  • 输入

    • p:生产者数量

    • c:消费者数量

  • 输出

打印当前共享缓冲区中的数值,或者生产者消费者的状态。如

Producer 1: 0 -> 1

Consumer 2: 1 -> 0

Consumer 3: waiting

...

Producer 0: 0 -> 1

Consumer 3: (resume) 1 -> 0

...

Producer 1: 9 -> 10

Producer 2: waiting

Consumer 1: 10 -> 9

Producer 2: (resume) 9 -> 10

 

 

银行家算法程序

  • 输入

    • p: 进程数量

    • r:资源数量

    • 各进程的 max, allocation

  • 输出

    • 若产生死锁,打印提示:死锁状态。

    • 否则,给出一种调度顺序。

页式存储逻辑地址到物理地址映射

  • 条件:64位地址空间

  • 输入:

    • 页记录大小(如       4Byte)

    • 页大小(如 4KB)

    • 页表级数(如,2表示2级页表,n表示n级页表)

    • 逻辑地址(十六进制)

  • 输出:物理地址(物理块号,块内偏移)

说明:页表随机产生,为便于验证可令逻辑页号 n 的物理块号为 n。

 

混合索引逻辑地址到物理地址映射

  • 条件:自定义混合索引 inode      结构

    • 必须包括一次,二次,和三次间接块

    • 逻辑块 n 对应物理块       n

  • 输入:文件逻辑地址

  • 输出

1.   输出 inode 详细信息(间接块不展开)

2.   物理地址(物理块号,块内偏移)

 


你可能感兴趣的:(操作系统小实验)