利用文件级锁来实现行级锁

    行级锁是比较高级的功能,在各个操作系统都有提高,但没有统一标准。在POSIX规范中,提供一个文件级的锁,本文就是提供一种方案,利用文件级的锁来实现行级的锁。
    有人会觉得这个没有什么必要,因为可以直接调用操作系统的接口。这样也可以,不过由于POSIX和标准C库是跨多个平台,我们利用标准库的接口来实现,就不会有平台的问题。如果在性能方面要求不是太苛刻的话,这个方案实际上相当不错。这个方案是应用程序级的,跟系统级会有一定的差距。
    这个方案的核心思想就是将系统中调度部分移到应用程序级。我们先描述下这个命题:
        假设多个进程P1....PN要共享访问文件F,现在程序库中只有锁定整个文件F的函数和在文件中定位偏移量的函数。要求如何使用这些函数来实现共享访问文件F,可以读写。

       现在,我们来描述这个算法:
        1、为文件F创建一个文件FS。
        2、在FS中记录F的文件信息,比如长度,以及每个进程请求的资源。尽量包括超时设定,防止进程突然死亡,资源成了僵尸。
         3、每个进程请求资源的时候,先锁定FS,比对其中已经被锁定资源,如果没有则分配。再释放FS的锁。

         利用文件锁对FS,来控制F的多进程访问,实际上F都不需要加锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值