火龙果软件LINUX设备驱动开发精要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
临界区 把对共享内存进行访问的程序片段称作临界区(critical region),或临界段(critical section)。如果我们能够适当地安排使得两个进程不可能同时处于临界区,则就能够避免竞争条件。 临界区四要素 任何两个进程不能同时处于临界区 临界区外的进程不能阻塞其他进程 不能使进程在临界区外无限等待 不应对CPU的速度和数目做假设 PV操作解决同步互斥 PV原语的含义   P操作和V操作是不可中断的程序段,称为原语。PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。   P原语操作的动作是:   (1)sem减1;   (2)若sem减1后仍大于或等于零,则进程继续执行;   (3)若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。   V原语操作的动作是:   (1)sem加1;   (2)若相加结果大于零,则进程继续执行;   (3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。   PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。 解决互斥 用PV原语实现进程的互斥 由于用于互斥的信号量sem与所有的并发进程有关,所以称之为公有信号量。公有信号量的值反映了公有资源的数量。 只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥。就象火车中的每节车厢只有一个卫生间,该车厢的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(sem)和V(sem)之间,就可以到达互斥的效果。 解决同步 用PV原语实现进程的同步 与进程互斥不同,进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,所以称该信号量为私有信号量。 利用PV原语实现进程同步的方法是:首先判断进程间的关系为同步的,且为各并发进程设置私有信号量,然后为私有信号量赋初值,最后利用PV原语和私有信号量规定各进程的执行顺序。 Linux 信号量实现 void sema_init(struct semaphore *sem, int val); DECLARE_MUTEX(name); DECLARE_MUTEX_LOCKED(name); void init_MUTEX(struct semaphore *sem); void init_MUTEX_LOCKED(struct semaphore *sem); void down(struct semaphore *sem); int down_interruptible(struct semaphore *sem); int down_trylock(struct semaphore *sem); void up(struct semaphore *sem); 嵌入式Linux系统高级开发讲义 第一天课程 模块 Linux设备驱动程序简介 Linux字符设备驱动开发 并发与竞争 Linux内核调试技术 日程安排 设备驱动简介 设备驱动简介 驱动是什么 Driver is a software layer that lies between the applications and the actual device 驱动程序的角色 提供机制, 而不是策略 隐藏在UNIX中的哲学 mechanism: What capabilities are provided. policy: How these capabilities can be used. Kernel的作用 Kernel可划分为下列功能单元 进程管理: 进程调度, 资源分配, 进程间通信. 内存管理: 其实也算是资源分配的一部分 文件系统: 管理, 组织物理媒介上数据的方法 设备控制: 设备驱动(ldd3所关注的) 网络: 实质上是进程间通信. 但它不局限于一个特定的进程. 它关注收/发packets, 路由, 地址解析... Kernel的结构 模块 可加载模块(lodable modules) module: 可实时加载到内核中的代码, 它可动态连接到内核(insmod, rmmod) 设备驱动就是module的代表, 但module还包括文件系统等等. 设备和模块的分类 模块分为这些类型,每种类型的模块驱动对应类型的设备 character module, block module, network interface other modu

文档评论(0)

文档资料 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档