为了协调双方的通信,管道通信机制必须提供以下3方面的协调能力:
? 互斥。当一个进程正在对pipe进程读/写操作时,另一进程必须等待,程序中使用
lock(fd[1],1,0)函数实现对管道的加锁操作,用lock(fd[1],0,0)解除管道的锁定。 ? 同步。当写进程把一定数量的数据写入pipe后,便去睡眠等待,直到读进程取走数
据后,再把它唤醒。当读进程试图从一空管道中读取数据时,也应睡眠等待,直至写进程将数据写入管道后,才将其唤醒。
? 判断对方是否存在。只有确定写进程和读进程都存在的情况下,才能通过管道进行
通信。 5)实验体会:
通过本次实验,我们理解了进程的实质和进程管理的机制。进程是操作系统中最重要的概念,是现代操作系统的关键。实验中我们在Linux 系统下实现进程从创建到终止的全过程,体会了进程的创建过程、父进程和子进程的关系、进程状态的变化、进程之间的同步机制、进程调度的原理和以信号和管道为代表的进程间通信方式的实现。
实验三存储器管理实验 实验目的
1) 理解内存页面调度的机理
2) 掌握几种理论页面置换算法的实现方法 3) 了解HASH数据结构的使用
4) 通过实验比较几种调度算法的性能优劣
页面置换算法是虚拟存储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现FIFO、LRU、NRU和OPT几种经典页面置换算法的基础上,比较各种页面置换算法的效率及优缺点,从而了解虚拟存储实现的过程。
准备知识
(1) C++、指针、结构体(类) (2) HASH表查找方式
(3) 操作系统相关内存交换知识 (4) 用到的LINUX函数
int getpid() 获得当前进程的id
void srand ( int a ) 以a为种子产生随机数 int rand() 根据前面的种子,返回一个随机数
实验内容
程序整体截图:
对比以下几种算法的命中率:
1) 先进先出算法FIFO(First In First Out)
运行结果截图:
2) 最近最少使用算法LRU(Least Recently Used)
运行结果截图:
3) 最佳置换算法OPT(Optimal Replacement)
运行结果截图:
实验四文件系统实验 实验目的
1) 掌握文件系统的工作机理。 2) 理解文件系统的主要数据结构。 3) 学习较为复杂的LINUX下的编程
实验内容
1) 设计并实现一个一级(单用户)文件系统程序 a.提供以下操作: ? ? ?
文件创建/删除接口命令create/delete 目录创建/删除接口命令mkdir/rmdir 显示目录内容命令ls
b.创建的文件不要求格式和内容 2) 设计并实现一个二级文件系统程序 a.提供用户登录; b.文件、目录要有权限 3) 程序设计思想
设计一个简单的文件系统,包括格式化、显示目录(文件)、创建文件、登录等几个简单命令的实现,而且能完成超级块的读写、节点的读写等过程。这是一个比真正的文件系统简单得多、但又能基本体现文件系统理论的程序。在超级块的使用上,采用操作系统关于这方面的经典理论:在节点使用上,主要模仿LINUX的EXT2文件系统。 4)程序截图:
5)实验体会:
通过本次实验,我们理解了内存页面调度的机制,掌握了几种理论页面置换算法的实现
方法,了解了 HASH 数据结构的使用。页面置换算法是虚拟存储管理实现的关键,FIFO、 LRU、NRU 和 OPT 是几种经典页面置换算法,我们通过实现这几种算法,比较了较各种页面置换算法的效率及优缺点,从而了解了虚拟存储实现的过程。
程序源代码:(部分源码截图)
存储器管理实验源代码部分截图: