Ch10.Linux的进程管理-多进程、并发与同步

Ch10.Linux的进程管理-多进程、并发与同步

ID:45033745

大小:760.50 KB

页数:58页

时间:2019-11-08

Ch10.Linux的进程管理-多进程、并发与同步_第1页
Ch10.Linux的进程管理-多进程、并发与同步_第2页
Ch10.Linux的进程管理-多进程、并发与同步_第3页
Ch10.Linux的进程管理-多进程、并发与同步_第4页
Ch10.Linux的进程管理-多进程、并发与同步_第5页
资源描述:

《Ch10.Linux的进程管理-多进程、并发与同步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式系统操作系统吴国伟wgwdut@dlut.edu.cn大连理工大学软件学院重点回顾进程描述进程状态和切换进程的创建、执行和销毁多线程的创建2010-12-162第十章Linux的进程管理--进程并发控制10.1Linux信号机制10.2Linux进程互斥10.3Linux进程同步10.4Linux进程间通信机制2010-12-16310.1Linux信号机制信号的基本概念信号机制2010-12-164信号的基本概念信号是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。201

2、0-12-165软中断信号用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。2010-12-166收到信号的进程对各种信号有三种不同的处理方法:第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处理。第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。2010-12-167在进程表的表项

3、中有一个软中断信号域,该域中每一位对应一个信号,当有信号发送给进程时,对应位置位。Linux用进程的task_struct中存放的信息来实现信号机制。Linux的信号屏蔽机制是通过一个32位变量的位掩码来决定的,所以Linux最多只能接受32种信号量。2010-12-1682010-12-1692010-12-1610信号机制信号机制:内核如何向一个进程发送信号、进程如何接收一个信号、进程怎样控制自己对信号的反应、内核在什么时机处理和怎样处理进程收到的信号。2010-12-1611内核给一个进程发送软中断信号的方法,是在进程所在的进程表项的信号域设置对应于该信号的位。内核处理一个进

4、程收到的信号的时机是在一个进程从内核态返回用户态时。所以,当一个进程在内核态下运行时,软中断信号并不立即起作用,要等到将返回用户态时才处理。2010-12-1612有关信号的系统调用系统调用signal是进程用来设定某个信号的处理方法系统调用kill是用来发送信号给指定进程的。pause和alarm是通过信号实现的进程暂停和定时器,调用alarm是通过信号通知进程定时器到时2010-12-1613Linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对

5、外接口,用sigaction函数重新实现了signal函数)2010-12-1614实践环节请使用介绍的信号处理函数,完成对信号的使用演示.2010-12-161510.2Linux进程互斥linux内核主要通过两种方式实现:内核信号量(semaphore)机制自旋锁(spin_lock)机制2010-12-1616信号量和信号是不同的东西:信号是实现约定的固定的值,而信号量是一个变量记录着某些特定信息。对信号量的操作只有两个:P,V内核信号量2010-12-1617在Linux内核中定义在信号量上的两个原子操作分别为:(1)减一操作down():当进程希望访问互斥资源的话,它调用

6、该操作,信号量的值减一;(2)加一操作up():当进程访问互斥资源完毕,它调用该操作,信号量的值加一。2010-12-1618semaphore结构2010-12-1619在初始化时,它的值初始化为1,当然也可以初始化为其它的正整数,那样能允许多个进程同时访问互斥资源。整型变量count:也就是信号量的值,如果该变量值非负的话,进程可以访问互斥资源,该变量值的改变只能由上面的两个原子操作来完成;等待进程链表指针wait:如果某个希望访问互斥资源的进程在执行完减一操作之后发现信号量的值为负值的话,进程将会挂起,并进入该链表。2010-12-1620自旋锁自旋锁的思想就是在不断循环中坚

7、持反复尝试获取一个资源(一把“锁”),直到成功为止。自旋锁最重要的特点就是进程在等待“锁”被释放时一直占据着CPU。一般而言,只能在极短的操作过程中才使用自旋锁。特别是决不能在阻塞操作中持有锁。2010-12-162110.3Linux进程同步同步是一种更为复杂的互斥,而互斥是一种特殊的同步。Linux利用进程之间互相通讯,并和核心通讯,来协调它们的行为。Linux内核中的同步机制:原子操作、内核信号量、自旋锁的API以及进程间通信的相关机制2010-12-1622原

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。