步骤一 :准备实验环境 打开terminal输入命令进入文件夹输入
cd/home/shiyanlou/oslab/命令进入文件夹输入 tar -zxvf hit-oslab-linux-20110823.tar.gz \ -C/home/shiyanlou/ 命令,解压压缩包。
步骤二:完成sem.c文件的编写 1.对sem_open() 方法的实现。 其功能:创建一个信号量,或打开一个已经存在的信号量。
2.对sem_wait() 方法的实现。 其作用为:信号量的 P 原子操作。如果继续运行的条件不满足,则令调用进程等待在信号量 sem 上。返回 0 表示成功,返回 -1 表示失败。
3.对sem_post() 方法的实现。 其作用为:信号量的 V 原子操作。如果有等待 sem 的进程,它会唤醒其中的一个。返回 0 表示成功,返回 -1 表示失败。
4.实现sem_unlink()方法。 其作用为: 删除名为 name 的信号量。返回 0 表示成功,返回 -1 表示失败。
步骤三:完成pc.c文件的编写
步骤四:完成运行环境搭建 进入oslab根目录执行sudo ./mount-hdc,随后将unistd.h复制到usr/include下,将sem.h复制到usr/include/linux下,最后使用sudo umount hdc卸载hdc,将pc.c文件移动到usr/root目录下,此目录需要挂载hdc才可以访问。移动成功之后直接重新编译linux并在虚拟环境内运行。
这次实验加深了我对进程同步与互斥概念的认识;让我掌握了信号量的使用,并应用它解决生产者——消费者问题,并且还掌握了信号量的实现原理。
学习时间 316分钟
操作时间 75分钟
按键次数 2883次
实验次数 13次
报告字数 1407字
是否完成 完成