操作系统进程同步互斥实验

操作系统进程同步互斥实验

ID:46584685

大小:168.31 KB

页数:7页

时间:2019-11-25

操作系统进程同步互斥实验_第1页
操作系统进程同步互斥实验_第2页
操作系统进程同步互斥实验_第3页
操作系统进程同步互斥实验_第4页
操作系统进程同步互斥实验_第5页
资源描述:

《操作系统进程同步互斥实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、进程的同步互斥实验实验目的1、进一步认识并发执行的实质2、分析进程竞争资源的现象,学习解决进程同步互斥的方法实验内容1、编写程序,使用相关函数实现父子进程对共享文件的同步互斥访问。2、修改程序,观察对临界资源访问的互斥控制的作用。实验基础一、临界资源的互斥访问为了实现多进程对临界资源的互斥访问,一个进程访问临界资源的典型程序段类似如下形式:{……….进入区临界区;退出区其余代码;………}其中,进入区中判断资源是否可用,如果可用,则资源数量减1,进程进入临界区;否则进程阻塞等待。退出区中资源数量加1,唤醒阻塞等待该资源的进程。进入区和退

2、出区都是原子操作。操作系统中,通常用信号量来实现进入区和退出区,即P操作和V操作。为了实现用户程序中对某些资源的同步互斥访问,操作系统也提供了一些函数接口,功能类似于对特定临界区的进入区和退出区功能。二、相关的系统调用(1)lockf(files,function,size):用作锁定文件的某些段或者整个文件。函数原型:#includeintlockf(intfiles,intfunction;longsize)其中:files是文件描述符;参数function可以取以下值:F_LOCK:锁定一个区域。F_ULOC

3、K:解除锁定。参数size指明了从文件当前位置开始的一段连续锁定区域的长度,当size为0时,锁定记录将由当前位置一直扩展到文件尾。如果lockf的参数function取值为F_LOCK,而指定文件的对应区域已被其他进程锁定,那么lockf的调用进程将被阻塞直到该区域解锁。通过使用lockf函数,可实现多进程对共享文件进行互斥访问。进程的实现中,必须使得每个进程在使用文件前对文件加锁,使用文件后解锁。(2)open:打开一个文件函数原型:#include#include#include

4、intopen(char*path,intflags,mode_tmode);其中:参数path是指向所要打开的文件的路径名指针。参数falgs规定如何打开该文件,它必须包含以下值之一:O_RDONLY,只读打开;O_WRONLY,只写打开;O_RDWR,读/写打开;O_CREAT,当文件不存在时创建文件,需参数mode;O_APPEND,不论当前文件位置在何处,将文件指针移至文件尾,为write添加数据到文件;O_TRUNC,当以可写的方式成功打开普通文件时,截断该文件的长度为0。参数mode规定对该文件的访问权限

5、。open系统调用可以只使用前面介绍的这两个参数,省略第三个参数mode。第三个参数是在用O_CREAT创建文件时使用,指出新建文件的存取许可权。由这个参数指出的存取许可权还要和umask进行运算后才得到新建文件的真正存取许可权。该运算是由umask按位取反,再按位与上第三个参数给出的数取或(~umask&mode)。例如:umask为022,mode为0770,则新建文件的存取许可权为0750即-rwxr-x---。(3)read:读文件函数原型:#includeintread(intfd,void*buf,si

6、ze_tnbytes)该系统调用从文件描述符fd所代表的文件中读取nbytes个字节,到buf指定的缓冲区内。所读取的内容从当前的读/写指针所指示的位置开始,这个位置由相应的打开文件描述中的偏移值(off_set)给出,调用成功后文件读写指针增加实际读取的字节数。使用read系统调用时,应注意设置的数据缓冲区充分大,能够存放所要求的数据字节,因为内核只复制数据,不进行检查。返回:-1:错误;0:文件偏移值是在文件结束处;整数:从该文件复制到规定的缓冲区中的字节数。通常这个字节数与所请求的字节数相同。除非请求的字节数超过剩余的字节数,这

7、时将返回一个小于请求的字节数的数字。(4)write:写文件函数原型:#includeintwrite(intfd,void*buf,size_tnbytes)该调用从buf所指的缓冲区中将nbytes个字节写到描述符fd所指的文件中。(5)lseek:定位一个已打开文件。函数原型:#includeintlseek(intfildes,off_toffset,intwhence);系统调用根据whence指定的位置将文件描述符fildes指向文件的文件指针偏移offset长度的字节数。Whenc

8、e的取值及其含义如下:·SEEK_SET:从文件头开始计算偏移量,文件指针值就是offset的值。·SEEK_CUR:从文件指针的当前位置开始计算偏移量,文件指针值是当前指针的值加上offset的值。·SEEK_END:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。