1、 信息技术学院信息技术学院 嵌入式操作系统嵌入式操作系统课程课程 综合综合设计报告书设计报告书 姓姓 名:名: XX 班班 级:级: 学学 号:号: XXXX 题题 目:目: 嵌入式文件锁应用嵌入式文件锁应用 时时 间:间: 2012 年年 6 月月 指导教师指导教师: XXX 摘摘 要要 随着 PC 时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。目 前已广泛应用于信息家电、数据网络、工业控制、医疗卫生、航空航天等众多领 域。巨大的市场潜力,无穷的商机,吸引了各路英豪纷蹱踏来。 为了解决多个进程并发访问同一个文件时所面临的同步问题,Linux 采用了 文件加锁技术。介绍了 Linux
2、 中各类文件锁的概念,详细分析了与文件锁密切相 关的系统调用,并给出了一个文件锁的使用实例。 本课程设计是以 Red Hat linux 为基础平台,利用 fcntl 函数实现。 关键字关键字:Linux 文件锁 文件描述符 同步问题 并发访问 目目 录录 一、任务要求 . 4 二、设计方案 . 4 三、设计原理 . 4 1、函数产生背景 . 4 2、lock( ) 4 3 、fcntl( ) 5 四程序流程图 . 6 五.VI 简介 . 6 六.结果与调试 7 七.总结 8 八参考文献: 9 附录: 10 一、一、任务任务要求要求 在多任务操作系统环境中, 如果一个进程尝试对正在被其他进程读
3、取的文件 进行写操作, 可能会导致正在进行读操作的进程读取到一些被破坏或者不完整 的数据; 如果两个进程并发对同一个文件进行写操作,可能会导致该文件遭到破 坏。因此, 为了避免发生这种问题, 必须要采用某种机制来解决多个进程并发访 问同一个文件时所面临的同步问题, 由此而产生了文件加锁方面的技术。 二、二、设计设计方案方案 通过编写在多用户共享下给文件上锁的程序,进一步熟悉 Linux 中文件 I/O 相关的应用开发,并且熟练的掌握 fcntl()函数的使用.在文件已经共享的 情况下如何操作,也就是当多个用户共同使用,操作一个文件的情况,这时,Linux 通常采用的方法是给文件上锁,来避免共享
4、的资源产生竞争的状态。 文件锁包括建议性锁和强制性锁。 建议性锁要求每个上锁文件的进程都要检 查是否有锁存在,并且尊重已有的锁。 在一般情况下,内核和系统都不使用建议性 锁。 强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将 阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每次读 写操作都必须检查是否有锁存在。 在 Linux 中,实现文件上锁的函数有 lock 和 fcntl,其中 flock 用于对文件施加建议性锁, fcntl 不仅可以施加建议性锁, 还可以施加强制锁。同时, fcntl 还能对文件的某一记录进行上锁,也就是记录 锁. 记录锁又可分为读取锁和写入锁,其中读取锁又称为共享锁,它能够使多个进 程都能在文件的同一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只能 有一个进程在文件的某个部分上建立写入锁。当然,在文件的同一部分不能同时 建立读取锁和写入锁。 三、三、设计设计原理原理 1、函数产生背景、函数产生背景: 在某文件已经共享的