嵌入式linux多线程编程实验(嵌入式linux网络编程实验)

研究嵌入式Linux系统的都看过。以下是每个想学习嵌入式Linux系统的人都想知道的。很想和大家分享一下!
本文分享的内容主要如下:
3.1元并发原则
侏罗纪世界3 1元1元的简单例子。
侏罗纪世界3,1元和逃生室的比赛条件:冠军联赛
侏罗纪世界3关注的问题1元侏罗纪世界3的操作系统
侏罗纪世界3,1元与4进程的互动
侏罗纪世界3 1元5的互斥要求。
3.2元旗语原理
侏罗纪世界3,密室逃脱:冠军争霸赛和1元互斥。
3.3元中的生产者/消费者问题
读者3.4元Kramp-Karrenbauer作家的问题
侏罗纪世界3侏罗纪世界3 1元阅读流程优先。
侏罗纪世界3侏罗纪世界3密室逃脱:冠军联赛的写作过程有优先权。
首先,本章介绍了并发的概念和多个并发进程的执行。我们发现支持并发进程的基本要求是加强互斥能力。也就是说,当一个进程被授予互斥的能力时,它就有能力在其活动期间排除所有其他进程。
本章通过两个经典的并发问题阐述了并发的概念,并比较了本书中使用的各种方法。在这一章的开始
将介绍一个运行示例,3354生产者/消费者问题,读者Kramp-Karrenbauer作者问题。
3.1元并发原则
在单处理器多道程序系统中,进程交替执行,表现出并发执行的外部特征。即使不能实现真正的并行处理,即使在进程间来回切换需要一定的开销,交替执行仍然在处理效率和程序结构上带来重要的好处。
在单处理器的情况下,问题源于多道程序系统的一个基本特征:进程的相对执行速度是不可预测的,
它取决于其他进程的活动、操作系统处理中断的方式以及操作系统的调度策略。这带来了以下困难:
全球资源的共享充满了危险。例如,如果两个进程使用相同的全局变量,并且两个进程都读取该变量。
操作,那么不同的读写执行顺序就非常关键。关于这个问题的例子将在下一小节中给出。
操作系统很难优化管理分配的资源。例如,进程A可能请求使用特定的I/O通道
增益控制,但在使用该通道之前被挂起,操作系统仍然锁定该通道以防止其他进程使用它,
这是不能令人满意的。此外,这可能会导致死锁。
定位编程错误非常困难。这是因为结果通常是不确定和不可重复的。
所有上述困难都体现在多处理器系统中,因为在这种系统中进程执行的相对速度也是不可缺少的。
预测的。多处理器系统还必须处理多个进程同时执行所引起的问题。从根本上说,这些问题与单个流程的问题是一样的。
机制系统里的也一样。这些问题会随着讨论的深入而逐渐清晰。
侏罗纪世界3 1元1元的简单例子。
考虑以下过程:
要理解如何解决与执行速度无关的问题,我们首先需要考虑进程之间的交互。
侏罗纪世界3,1元和4过程的相互作用。
1元,过程中的资源争夺
当并发进程竞争同一资源时,它们会相互冲突。我们可以把这种情况简单描述如下:
两个或多个进程在执行期间需要访问一个资源。每个进程都不知道其他进程的存在,每个进程也不受其他进程执行的影响。每个进程不影响它所使用的资源的状态,例如I/O设备、内存、处理器时间和时钟。
竞争进程之间没有信息交换,但是一个进程的执行可能会影响竞争进程的行为。特别是如果两个进程都希望访问同一个资源,操作系统会将这个资源分配给一个进程,而另一个进程必须等待。因此,拒绝了他的探访。
问的过程会慢下来。在极端情况下,被阻塞的进程永远无法访问该资源,因此它永远无法成功终止。

我们把这种资源称为关键资源,使用关键资源的那部分代码称为程序的关键部分。临界区一次只允许一个程序,这一点非常重要。因为不知道详细的需求,所以不能仅仅依靠操作系统来理解和增强这种限制。以打印机为例,我们希望任何一个进程在打印整个文件的时候都有打印机的控制权,否则来自竞争资源的打印内容就会穿插在打印结果中。
互斥的实现产生了两个额外的控制问题。一是死锁。例如,考虑两个进程P1和P2以及两个资源R1。
和R2,假设每个进程为了执行某些功能都需要访问这两个资源,那么可能会出现以下情况:操作系统将Rl分配给P2,R2分配给Pl,每个进程都在等待另一个资源,没有人会释放自己已经拥有的资源,直到获得其他资源,完成需要这两个资源的功能。就这样,两个过程僵持不下。
另一个控制问题是饥饿。假设有三个进程(P1、P2和P3),每个进程定期访问资源r。考虑这种情况,Pl拥有该资源,P2和P3都延迟等待该资源。当Pl退出临界区时,P2和P3都被允许访问r,假设操作系统授予P3访问权,PI需要在P3完成之前访问临界区,如果操作系统在P3结束后授予Pl访问权,然后依次授予Pl和P3访问权,P2即使没有死锁也可能被无限期拒绝访问资源。
因为操作系统负责分配资源,所以对竞争的控制不可避免地涉及到操作系统。此外,流程本身需要能够使用一些
有两种方法可以表达互斥的需求,比如在使用资源之前锁定资源,但是任何解决方案都涉及到操作系统的一些支持,比如提供锁定机制。图3.2袁抽象地给出了互斥机制。假设有Kang Seung Yoon进程并发执行,每个进程包括(1元)在一些资源ra上操作的临界区,并且(逃生室:冠军锦标赛)没有额外的代码来访问资源Ra。因为所有进程都需要访问相同的资源Ra,所以确保同一时间只有一个进程处于临界区是很重要的。要实现互斥,需要两个函数:entercritical和exitcritical。每个函数的参数是正在竞争使用的资源的名称。如果另一个进程在临界区,那么任何试图进入同一资源临界区的讲座都必须等待。
本章摘要
现代操作系统的中心方案是多道程序设计、多处理和分布式处理,这些方案的基础和操作系统的设计。
技术是基于并发的。当多个进程同时执行时,无论是在多处理器系统中还是在单处理器多道程序系统中,都会出现冲突解决和协作的问题。
并发流程可以通过多种方式进行交互。互不认识的进程可能需要争夺资源,比如处理器。
偶尔访问输入输出设备。因为进程共享对一个公共对象的访问,例如主存中的一个空间或一个文件,所以它们可以间接地相互了解。这种交互中的重要问题是互斥和死锁。
互斥意味着对于一组并发进程,一次只有一个进程可以访问给定的资源或执行给定的功能。互相地
排斥技术可以用来解决资源争用等冲突,也可以用来同步进程,使它们能够协作。后一种情况的一个例子是生产者/消费者模型,其中一个进程将数据放入缓冲区,而另一个或多个进程从缓冲区获取数据。
支持互斥的第二种方法涉及使用特殊的机器指令,这减少了开销;而是因为忙着等惯了,因为
但仍然效率低下。
支持互斥的另一种方法是在操作系统中提供函数。两种最常见的技术是信号量和消息机制。信号
数量用于进程之间的信号传递,并且可以很容易地用于实施互斥规则。对消息实现互斥是有用的,它也为进程间的通信提供了一种有效的方法。
死锁是指一组进程争夺系统资源或相互通信被阻塞的现象。阻塞是永久性的,除非操作系统需要一些
非常规操作,例如终止一个或多个进程,或者强制一个或多个进程原路返回。死锁可能涉及可重用或可消耗的资源。可重用资源是指不会因使用而耗尽或毁坏的资源,如I/O通道或内存区域。消耗性资源是在被流程获取时被销毁的资源。这种资源的例子是I/O缓冲区中的消息和信息。
通常有三种方法来处理死锁:预防、检测和避免。通过确保不满足死锁的必要条件来防止死锁,保证
不会出现死锁。本章没有对检测和避免进行深入讨论。

好玩下载

最新教程:闲鱼0基础运营实战,了解无货源模式,扩大利润

2023-9-29 11:47:30

好玩下载

MBA大师,mba大师和新东方哪个好

2023-8-2 3:48:40

购物车
优惠劵
搜索