`
longxj
  • 浏览: 101783 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

linux file lock

阅读更多

linux的文件锁分为两种:

一种是advasory lock,只能保证进程内对同一个文件锁的互斥有效,但是多个进程可以同时对一个文件加互斥的锁,所以这种锁是加在file 结构上;一种是mandatory lock,这种锁可以保证多个进程无法对同一个文件都加上互斥锁,所以这种锁是加在inode 结构上的。

当加mandatroy lock时,如果已有进程在文件上加了互斥锁a,那么进程创建的file_lock b结构将会加入到a的等待链表中,此时a叫做blocker,b被称为waiter。由于进程想要的资源(加锁)无法被满足,所以进程要么被阻塞,进程的描述符被加入到 b的等待链表中;要么系统调用直接返回错误。(取决于调用时的flag值)

分享到:
评论

相关推荐

    6_file_lock.tgz

    linux 文件锁的 实现 。(此为博客http://blog.csdn.net/shallnet 文章对应源码下载)

    file结构体和inode结构体

    `struct file` 是 Linux 内核中的一个重要数据结构,它用来描述内核空间中每一个打开的文件。这个结构体在 `include/linux/fs.h` 文件中定义。 **定义与作用** `struct file` 的定义如下: ```c struct file { ...

    06-file_io.zip_file操作_linux poll

    本教程通过一系列示例深入探讨了Linux下的文件I/O操作,其中包括`copy_file`、`lock_set`、`poll`、`select`、`standard_io`和`producer`等核心概念。以下是对这些知识点的详细说明: 1. **copy_file**: `copy_file...

    Red Hat Enterprise Linux 5 Global File System 2

    Red Hat Enterprise Linux 5 Global File System 2 Red Hat Enterprise Linux 5 Global File System 2(以下简称 GFS2)是一种高可用性的 Cluster 文件系统,旨在提供高性能、可靠性和可扩展性的文件存储解决方案。...

    解决git:fatal:Unable to create”…/.git/index.lock” 的错误

    报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下命令删除即可. rm -rf /Users/dianji/project/ccpay.h5/.git/index....

    在linux平台用hugetlbfs模拟lock_sga

    为了解决这个问题,我们可以使用hugetlbfs(HugeTLB File System)来模拟`lock_sga`的功能。 1. **理解SGA和hugetlbfs** - **SGA**是Oracle数据库的一个关键组件,它包含了数据缓冲区、重做日志缓冲区、共享池等...

    Linux C++ curl 文件下载功能代码

    在Linux系统中,C++与curl库结合可以实现强大的网络文件下载功能。curl是一个命令行工具,用于获取或传输数据,支持多种协议,包括HTTP、HTTPS、FTP等。在C++编程中,我们可以利用libcurl这个库来实现相同的功能。本...

    MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error

    【MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error】是一个常见的MySQL服务器启动时遇到的问题。这个问题通常表明MySQL的InnoDB存储引擎无法获取对`ibdata1`文件的锁,`ibdata1`是InnoDB用来存储数据和系统表...

    Linux2.4.30内核文件系统学习

    int (*lock)(struct file *, int, struct file_lock *); // 文件锁定 ssize_t (*readv)(struct file *, const struct iovec *, unsigned long, loff_t *); // 分散读取 ssize_t (*writev)(struct file *, const ...

    linux下svn命令大全.txt

    例如,`svn lock -m "lock testfile" test.php`。 - `svn unlock PATH`:解除文件的锁定状态。 ### 5. 更新 (Update) `svn update [-r revision] path` 命令用于将工作副本更新到最新版本,或者指定版本号进行更新...

    linux驱动头文件位置及作用

    - **功能**:定义了与文件系统操作相关的结构体和宏,例如`struct file_operations`和`struct inode`。此外,还定义了获取文件主次设备号的宏`MINOR`和`MAJOR`。 3. **`<linux/errno.h>`** - **位置**:`linux-...

    Linux in Action

    Linux in Action guides you through 12 real-world projects, including automating a backup-and-restore system, setting up a private Dropbox-style file cloud, and building your own MediaWiki server....

    linux上安装skywalking

    bootstrap.memory_lock: false bootstrap.system_call_filter: false ``` 保存后,执行以下命令: ``` sysctl -p ``` 然后,创建一个用户 `tycoon`,并修改 `/etc/security/limits.conf` 文件,添加以下内容: ``` ...

    解决Linux下刻录光盘问题.pdf

    首先,需要启用 XKB 扩展特性,可以按下 “Ctrl+Shift+NumLock” 或者 “Shift+NumLock” 组合键,有些系统下会听到一声响, 有些系统并没有响声,这时就可以用数字小键盘来控制鼠标。 每个数字键的作用如下: * 4...

    3_threads_write_file.rar_linux综合_threads_线程综合例子

    本示例"3_threads_write_file.rar"是关于在Linux下如何使用线程进行文件写入操作的一个综合实例。这个例子将帮助你深入理解和掌握线程在实际编程中的应用。 首先,我们要了解Linux下的线程API,它主要基于POSIX标准...

    file_operations结构体解析.doc

    文件操作结构体(file_operations)是 Linux 驱动程序中最重要的涉及 3 个重要的内核数据结构之一,分别为 file_operations、file 和 inode。在 Linux 中,inode 结构用于表示文件,而 file 结构则表示打开的文件的...

    oracle 数据库用户被锁定在linux下操作

    在使用 SQLPlus 命令行工具时,可能会出现一些错误,例如:“bash: sqlplus: command not found”或“Error 6 initializing SQL*Plus SP2-0667: Message file sp1<lang>.msb not found SP2-0750: You may need to ...

    头文件及内核函数说明总结-linux设备驱动程序

    * `mutex_lock`:定义互斥锁锁定,用于锁定互斥锁。 * `register_chrdev_region`:定义注册字符设备,用于注册字符设备。 * `ioctl`:定义执行各种硬件控制的函数,用于实现硬件控制。 三、设备驱动程序编写 在 ...

    Linux驱动开发庖丁解牛之三 揭开字符设备驱动程序的面纱

    本文详细介绍了Linux内核中字符设备的基本概念及其关键结构,包括 `struct file` 和 `struct file_operations` 的定义和作用。此外,还探讨了字符设备的注册和初始化过程以及数据传输的基本机制。通过这些内容的学习...

Global site tag (gtag.js) - Google Analytics