Skip to content

Latest commit

 

History

History
12 lines (12 loc) · 1.4 KB

README.md

File metadata and controls

12 lines (12 loc) · 1.4 KB

os-experiment-3

experiment 3 of os,student number PB15111591. 本次实验选择了三个进程间通信方式:共享内存(Shared memory)、内存映射(Mapped Memory)、信号量(Semaphores)。C文件分别用其英文名字命名。 已经编译过,所以可以保证正确性。执行只需要用指令 gcc + 文件名,可以编译出可执行文件a.out,打开执行即可。因为不清楚Linux环境下如何对操作信号 量,主要参考了文献中Advanced Linux Programming的通讯样例。并在程序后面加上了自己的注释和理解,并非完全照搬。 下面对三个程序的代码稍作解释。 内存共享的主要功能是用户将自己想要发送的信息保存在一个数组中,创建一块共享内存,打印它的地址、大小,然后将数组内容写入共享内存中。最后重新赋一 块地址空间给共享内存,打印这个字符串。 信号量则是定义了仅一个信号的信号量集,定义了它的五个操作:创建、销毁、初始化、等待、释放。最后自己写了一个函数,模拟一个进程的操作:等待信号量 ,允许操作时输出1,然后释放信号量。 内存映射则是先让用户输入一串字符串,新建一个文件,然后将该文件映射到内存中,再将字符串写入映射到的内存。最后释放内存。需要注意的是,这里并没有 任何输出结果。