linux内核的并发与竞态的理解

一、概念理解

1.概述
对于我们的驱动程序,或一个代码片段,是可以被两个独立的进程同时执行。驱动程序,或者代码片段对cpu来说就是机器指令,显然指令是可以同时发出的。但是共享资源却不能同时使用,不然就没法统计了。

2.竞态
多个进程同时执行某一代码段,或者调用同一个驱动程序;而这一代码段涉及到对内存的分配,或者驱动程序对硬件进行访问;由于内存或者硬件资源对系统来说都是共享的,那么就容易出问题。比如A进程刚刚分配的内存还没有来得及保存,B进程又重新执行相同的代码段分配了相同的内存,进行保存,这样A进程分配的内存就丢失了。对于这样一种同时访问共享资源出现的竞争态势,称之为竞态。

3.并发
正是因为并发的状态,才导致竟态。所以,像上述描述的多个进程同时执行同一代码片段或调用同一驱动程序的状态,称之为并发状态,简称并发。当然并发来源不止这些,比如:内核是可抢占的,当前驱动程序很容易丢失对cpu的独占,而拥有cpu的进程可能正在调用我们的驱动程序;设备中断是异步事件,也会导致代码并发执行。还有延迟机制如工作队列,tasklet,定时器会在未来任何时刻执行,而不管当前进程在干什么。再有热插拔,在使用过程中设备就消失了。

4.竟态通常作为对资源的共享访问结果而产生,而并发简单理解,就是进程同时执行某一代码段,而不用管其他进程是否正在访问这一代码段的状态。

二、应对策略

我们需要重新设计,使得代码要么看到已经分配好的内存,要么知道内存还没有分配或将要由其他人分配。访问管理的常见技术称为“锁定”或者“互斥”。

1.原子性操作

  • 指这一操作过程是独占cpu的,不能被打断的,所以其结果是cpu要么完成,要么失败,而不存在被中止,打断,挂起的情况。

2.信号量与互斥体

  • a.信号量就是对信号量值进行PV操作,希望进入临界区的进程需要进行P操作减1,进程继续,如果信号量值为0或者小于0,则进程必须等待知道其他人释放该信号量。对信号量的解锁通过调用V操作,增加信号量的值,并在必要的时候唤醒等待该信号量的进程,因为获取不到该信号量值的进程大部分情况都是进入睡眠状态。
  • b.如果共享资源很多,则允许多个进程同时执行,直到信号量变为0或小于0,进程才需要等待。如果共享资源只有1个,即同时只允许一个进程执行,即信号量值初始化为1,这种情况下,一个信号量就是互斥体,简称互斥。而linux内核中几乎所有的信号量均用于互斥。但是linux内核中真正的互斥
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值