当前位置:文档之家› 基于Linux的信号量通信机制研究与实现

基于Linux的信号量通信机制研究与实现

基于Linux的信号量通信机制研究与实现
基于Linux的信号量通信机制研究与实现

系统软件与软件工程本栏目责任编辑:谢媛媛Computer Knowledge and Technology 电脑知识与技术第6卷第12期(2010年4月)基于Linux 的信号量通信机制研究与实现

袁玉锦,周群

(邯郸学院网络中心,河北邯郸056005)

摘要:该文以信号量通信理论为基础,通过对Linux 信号量相关系统调用的分析,着重讨论了内核级和用户级的信号量通信、同一进程内线程之间的通信、多用户的进程间的通信等问题,并采用ANSI C 编写了信号量通信的具体实例。

关键词:信号量;Linux ;多进程通信;线程通信

中图分类号:TP316文献标识码:A 文章编号:1009-3044(2010)12-3279-03

1信号量通信理论

操作系统原理中利用信号量来解决多进程互斥访问临界资源的问题,还可来描述多进程之间的前趋关系,即同步问题。

信号量的概念由荷兰学者E.W.Dijkstra 于1965年提出。信号量实际是一个整数,进程(也可以是线程)在信号量上的操作分2种,一种称为P 操作,另一种称为V 操作。P 操作是让信号量的值减1,V 操作是让信号量的值加1。在进行实际的操作之前,进程首先检查信号量的当前值,如果当前值大于0,则可以执行P 操作,否则进程休眠,等待其他进程在该信号量上的V 操作,因为其他进程的V 操作将让信号量的值增加,从而它的P 操作可以成功完成。某信号量在经过某个进程的成功操作之后,其他休眠在该信号量上的进程就有可能成功完成自己的操作,这时系统负责检查休眠进程是否可以完成自己的操作。

在操作系统中,信号量最简单的形式也是最初被提出时定义的形式是一个整数,多个进程可检查并设置信号量的值。这种检查并设置(Test-and-Set)操作是不可中断的,也称为“原子”操作。检查并设置操作的结果是信号量的当前值和设置值相加的结果,该设置值可以是正值,也可以是负值。根据检查并设置操作的结果,进行操作的进程可能会进入休眠状态,而当其他进程完成自己的检查并设置操作后,由系统检查前一个休眠进程是否可以在新信号量值的条件下完成相应的检查并设置操作。这样,通过信号量,就可以协调多个进程的操作,实现多进程之间通信。

操作系统原理中通常把信号、信号量通信称为低级通信,而把管道、消息队列、共享存储区通信称为高级通信。信号量分为有名、无名两种,进程间通信用有名信号量,同一进程内部通信一般用无名信号量。

2Linux 中的信号量

从意义和实现机理上,Unix System V 或Linux 的信号量与以上所述的常规信号量没有什么区别,但System V 提供的信号量机制要复杂得多,并且分为两种不同系统调用类型:一种是用内核级的信号量,有关系统调用在/usr/include/semaphore.h 中包含,一般可用于内核级的进程通信和内核级的线程通信;另一种是用户级信号量,有关系统调用在/usr/include/sys/sem.h 中包含,一般可用于多用户进程之间通信。

2.1内核级的信号量相关系统调用

int sem_init (sem_t *sem ,int pshared ,unsigned int value)

作用:为单个信号量设置初值,第一参数*sem 为指定的信号量对象;第二参数pshared 为共享标志,如值为0表示私有信号量,非0表示可以与其他进程共享的信号量;第三参数value 为要为信号量设置的初值。

相关数据结构如下:

struct{struct{long int status ;

int spin_lock ;}sem_lock ;

int sem_value ;

pthread_descr sem_waiting ;

}sem_t

int sem_wait (sem_t *sem);

作用:对指定的信号量进行P 操作。

Int sem_post (sem_t *sem);

作用:对指定的信号量进行V 操作。

总结:以上是内核级信号量通信常用到的三个系统调用,使用方式较为简单,但主要适用于内核级多线程之间通信,后面将给出多线程通信的具体实例。

收稿日期:2010-02-21

作者简介:袁玉锦(1980-),女,河北曲周人,邯郸学院网络中心,助教,学士,研究方向为计算机网络;周群(1981-),女,河北武安

人,助教,学士,主要研究方向为计算机网络。

ISSN 1009-3044Computer Knowledge and Technology

电脑知识与技术Vol.6,No.12,April 2010,pp.3279-3281E-mail:xsjl@https://www.doczj.com/doc/2d3653861.html, https://www.doczj.com/doc/2d3653861.html, Tel:+86-551-569096356909643279

Computer Knowledge and Technology电脑知识与技术第6卷第12期(2010年4月)

2.2用户级信号量相关系统调用

int semget(key_t key,int nsems,int semflg);

作用:创建一个新的信号量组或获取一个已经存在的信号量组。返回值为此信号量组的id,第一参数key是系统内表示此组信号量的名字,其值在系统内必须是唯一的整型数,可以人工给定,也可以通过使用其他系统调用自动产生;第二参数nsems表示要创建的信号量组中包含几个信号量;第三参数表示此信号量组的使用权限,即_rwxrwxrwx方式,使用时采用模数方式,如0777表示所有者、同组人和其他人具有所有权限。

int semop(int semid,struct sembuf*sop,int nsops);

作用:可以一次对一个或多个信号量进行P,V操作。第一参数为由semget()返回的信号量组的id;第二参数为一个较为复杂的数据结构,给sop->sem_op赋负值表示P操作,给sop->sem_op赋正值表示V操作;第三参数nsops表示要对此信号量组中的哪个信号量实施P,V操作。

Int semctl(int semid,int semnum,int cmd,semun arg);

作用:可以用来获取一些信号量的使用信息或者对信号量赋初值。第一参数为由semget()返回的信号量组的id;第二参数为要控制的信号量个数;第三参数为控制命令;第四参数的arg.array用来存放信号量的值。

总结:以上是用户级信号量通信常用到的三个系统调用,使用方式较为复杂,但主要适用于多用户进程之间的通信。后面将给出2个用户进程通信的具体实例。

3信号量通信实例

3.1经典“生产者/消费者”问题

这一问题可以描述如下:两个进程共享一个公共的、固定大小的缓冲区。其中一个进程,即生产者,向缓冲区放入信息,另外一个进程,即消费者,从缓冲区中取走信息(该问题一般也可以化为m个生产者和n个消费者)。当生产者向缓冲区放入信息时,如果缓冲区是满的,则生产者进入休眠,而当消费者从缓冲区中拿走信息后,可唤醒生产者;当消费者从缓冲区中取信息时,如果缓冲区为空,则消费者进入休眠,而当生产者向缓冲区写入信息后,可唤醒消费者。

以下为主要程序代码,一个线程插入1到10000的整数,另一个线程读取并打印。

void*producer(void*data)

{for(n=0;n<10000;n++)

{sem_wait(sem_write);/*P操作*/

buffer[writepos]=n;/*在缓冲区中保存一个整数*/

writepos++;

If(writepos>=BUFFER_SIZE)writepos=0;

sem_post(sem_read);/*V操作;表示缓冲区中有数据*/

}}

void*consumer(void*data)

{while(1)

{sem_wait(sem_read);/*P操作*/

data=buffer[readpos];/*从缓冲区读取数据*/

printf(″-->%d\n″,date);

readpos++;

if(readpos>=BUFFER_SIZE)b->readpos=0;

sem_post(sem_write);

}}

int main(void)

{sem_t sem_write,sem_read;/*可读取元素个数和可写入的空位个数*/

pthread_t th_a,th_b;/*定义线程对象*/

sem_init(sem_write,0,BUFFER_SIZE_1);/*初始化为BUFFER_SIZE_1*/

sem_init(sem_read,0,0);/*初始化为0*/

readpos=writepos=0;/*初始化为缓冲区读写位置*/

/*建立生产者和消费者线程。*/

pthread_create(&th_a,NULL,producer,0);

pthread_create(&th_b,NULL,consumer,0);

/*等待生产者和消费者结束。*/

pthread_join(th_a,&retval);

pthread_join(th_b,&retval);

}

程序首先建立2个线程分别扮演生产者和消费者的角色。生产者负责将1到10000的整数写入缓冲区,而消费者负责从同一个缓冲区中读取并删除由生产者写入的整数。因为生产者和消费者是2个同时运行的线程,并且要使用同一个缓冲区进行数据交换,因此必须利用信号量机制实现同步。起初程序初始化了2个信号量,分别表示可读取的元素数目和可写入的空位个数,并分别初始化为0和缓冲区大小减1。生产者首先对sem_write进行P操作(即sem_wait调用),看是否能够写入,如果此时sem_write信

系统软件与软件工程

3280

本栏目责任编辑:谢媛媛

系统软件与软件工程本栏目责任编辑:谢媛媛Computer Knowledge and Technology 电脑知识与技术第6卷第12期(2010年4月)号量的值大于零,则sem_wait 可以立即返回,否则生产者将在该sem_write 信号量上等待。生产者在将数据写入之后,在sem_read 信号量上进行V 操作(即sem_post 调用)。此时如果有消费者等待在sem_read 信号量上,则可以被系统唤醒而继续运行。消费者线程的操作恰恰相反,首先在sem_read 上进行P 操作,当读取数据并打印后,在sem_write 信号量上进行V 操作。

通过上面的例子可见,System V 或Linux 线程(轻量级进程)之间的信号量通信机制是内核级的,其使用的函数在/usr/include/semaphore.h 中说明。以上代码经修饰后,可在Linux 下编译运行,编译方式为$gcc -o prod_cons.exe -lpthread prod_cons.c 。所包含的头文件为。多线程的最大好处是,除堆栈之外,几乎所有的数据均是共享的,因此线程间的通讯效率最高。

3.2多用户进程通信

Linux 为一个多用户、多任务操作系统,经常涉及到多个用户在不同的终端上运行同一个程序,这时就是多进程并发运行。为简单起见,以下代码适用于2个用户进程的通信,可以在Linux 下使用Alt+F1和Alt+F2切换登录2个不同用户并运行。

以下为此程序主要代码,创建一个包含2个信号量的信号量组,2个进程交替运行。

main (int argc ,char *argv)

{struct sembuf s0,s1;

semid =semget (75,2,0777|IPC_CREAT);/*创建一组(2个)信号量*/

init[0]=0;

init[1]=1;

if(argc ==1)

{semctl (semid ,2,SETALL ,init);/*给两个信号量赋初值*/

s0.sem_op =-1;

s0.sem_flg =SEM_UNDO ;

s0.sem_num =0;/*预备对第0个信号量P 操作*/

s1.sem_op =1;

s1.sem_flg =SEM_UNDO ;

s1.sem_num =1;/*预备对第1个信号量V 操作*/

for(i=1;i<=3;i++)

{semop (semid ,&s0,1);/*对第0个信号量实施P 操作*/

printf (″进程0第%d 步\n ″,i);

semop (semid ,&s1,1);/*对第1个信号量实施P 操作*/

}}

else

{semid =semget (75,2,0777|IPC_CREAT);/*创建一组(2个)信号量*/

s0.sem_op =-1;

s0.sem_flg =SEM_UNDO ;

s0.sem_num =1;/*预备对第1个信号量P 操作*/

s1.sem_op =1;

s1.sem_flg =SEM_UNDO ;

s1.sem_num =0;/*预备对第0个信号量V 操作*/

for (i=1;i<=3;i++)

{semop (semid ,&s0,1);

printf (″进程1第%d 步\n ″,i);

semop (semid ,&s1,1);

}

}}

此例代码经修饰后,可在Linux 下编译运行,编译方式为$gcc -o onebyone.exe onebyone.c 。所包含的头文件为。运行方式为:第一用户$./onebyone.exe ,第二用户$./onebyone.exe a 。

4总结

第一类信号量通信使用简单,创建信号量与给信号量赋初值是原子操作,不可中断,一次创建一个信号量,比较适合于一个进程内的多个线程通信,所以其信号量类型可以为私有;第二类信号量通信数据结构比较复杂,一次创建一组信号量,创建信号量和给信号量赋初值是分开操作的,P ,V 操作使用相同的系统调用,比较适合于多个进程之间的通信,所以其信号量权限必须为多个用户都可访问。

参考文献:

[1]汤子赢,哲凤屏,汤小丹.计算机操作系统[M].西安:西安电子科技大学出版社,2000.

[2]Richard Stevens W.UNIX 环境高级编程[M].北京:机械工业出版社,2000.

[3]陈莉君.Linux 操作系统内核分析[M].北京:人民邮电出版社,2000.

[4]Richard Petersen.Linux Programmer's Reference [M].北京:电子工业出版社,2001.

3281

第3章部分习题测验答案

第3章部分习题答案 3.2. 为什么进程在进入临界区之前,应先执行"进入区"代码,在退出临界区后又执行"退出区"代码? 为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为"进入区"代码;在退出临界区后,必须执行"退出区"代码,用于恢复未被访问标志. 3.3 同步机构应遵循哪些基本准则?为什么? a. 空闲让进. b. 忙则等待. c. 有限等待. d. 让权等待. 3.6你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则? a. 在整型信号量机制中,未遵循"让权等待"的准则. b. 记录型信号量机制完全遵循了同步机构的"空闲让进,忙则等待,有限等待,让权等待"四条准则. 3.9在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响? 生产者-消费者问题可描述如下: var mutex,empty,full: semaphore:=1,n,0; buffer: array[0,...,n-1] of item; in,out: integer:=0,0; begin parbegin producer: begin repeat . . produce an item in nextp; . . wait(empty); wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); /* ************** */ signal(full); /* ************** */ until false; end consumer: begin repeat wait(full); wait(mutex); nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); /* ************** */

二年级开学常规训练方案

二年级开学常规教育方案 行为形成习惯,习惯决定品质,品质决定命运。 在新的学期里,我们将把学生良好行为习惯的培养作为年级进行德育建设的有力切入点,从细节抓起,从现在做起,扎实有效地进行学生文明行为习惯的养成教育。结合学校要求制定开学常规教育方案: 1、班主任召开主题班会明确常规训练的内容和要求。 2、对学生进行红领巾的佩戴和仪容仪表检查,针对班级学 生存在的问题要求进行整改,并于3月2日进行复查。 3、学科任课教师检查班级学生学习用品准备情况,督导学 生按要求完善,做好开学的准备工作。 4、一日之计在于晨,明确早自习的要求,发挥班委的小助 手作用,做到进教室就读书,提高早自习质量。 5、各学科根据学科特点组织学生行课堂常规的训练,年级 各班对学生的坐姿、举手、读书、回答问题等统一要求 并进行训练。 6、文明从我做起,课间不大声喧哗,不在走道上打闹,引 导学生进行有意义的课间活动,避免安全事故的发生。 7、课间十分钟首先把上节课的物品整理好并准备好下节课所需用 品,然后可进行适当的课间活动。预备铃响起班长带领学生调 整状态准备上课,任课教师到教室之前,全体学生必须做到物 品整齐,坐姿挺拔,以昂扬的精气神迎接下一节课。

8、上午第二节课后的眼保健操由的二节课授课教师和班长负责监 督管理,要求做到每位同学都认真做操爱护双眼,对于不认真 做操的同学进行批评教育。做完眼保健操后方可出教室。 9、排队(上操、升旗、出学校)做到快、静、齐,班委整理好队 伍后班主任在前面带队,副班主任在后面,经走廊、楼梯靠右 走,走路有秩序,严禁在队伍中推搡打闹。队列纪律由体育委 员与班长、共同负责。确保学生的安全。(各班安排学生到升旗 广场站队,找准上操、升旗、大课间活动的位置) 10、体育、美术等需要学生到指定场地的课程,任课教师协调时间 到各班训练路队要求等。 11、第四节课进行整理书包和课桌椅的训练,培养学生良好的习惯。 12、小饭桌值守老师及时到岗,班委组织好队伍后进行餐前 教育,就餐时小桌长督导培养学生文明用餐的习惯。 总之,良好习惯的养成需要不断地训练、更需要从一点一滴的小事做起,我们常说:细节决定成败。我想:我们现在就在这些细节上多下一些功夫,学生就会在他的成长道路上多积累一些资本,不久的将来我们就会看到我们辛勤的汗水会换来丰硕的果实的! 备注: 1、各班进行训练时确保不影响其他班级上课。 2、训练时各班先明确要求,再严格按照训练要求实施确保 训练安全进行。

机制习题解答(DOC)

第1章习题及解答略 第2&6章习题及解答 1.判断正误 (1)凡频谱是离散的信号必然是周期信号。( ×)准周期信号 (2)任何周期信号都由频率不同,但成整倍数比的离散的谐波叠加而成。( ×) (3)周期信号的频谱是离散的,非周期信号的频谱也是离散的。( ×) (4)周期单位脉冲序列的频谱仍为周期单位脉冲序列。( √) (5)非周期变化的信号就是随机信号。( ×)准周期信号 (6)非周期信号的幅值谱表示的是其幅值谱密度与时间的函数关系。( ×) (7)信号在时域上波形有所变化,必然引起频谱的相应变化。( ×) (8)各态历经随机过程是平稳随机过程。( √) (9)平稳随机过程的时间平均统计特征等于该过程的集合平均统计特征。( √) (10)非周期信号的频谱都是连续的。( ×) 准周期信号 (11)单位脉冲信号的频谱是无限带宽谱(√) (12)直流信号的频谱是冲击谱(√) 2.选择正确答案填空 (1)描述周期信号的数学工具是(B )。 A.相关函数 B. 傅里叶级数 C. 拉普拉斯变换 D. 傅里叶变换 (2)描述非周期信号的数学工具是( C)。 A.三角函数 B. 拉普拉斯变换 C. 傅里叶变换 D. 傅里叶级数

(3) 将时域信号进行时移,则频域信号将会( D ) A.扩展 B. 压缩 C. 不变 D. 仅有相移 (4) 瞬变信号的傅里叶变换的模的平方的意义为( C ) A.信号的一个频率分量的能量 B. 在f 处的微笑频宽内,频率分量的能量与频宽之比 C. 在f 处单位频宽中所具有的功率 (5) 概率密度函数是在(C )域,相关函数是在(A )域,功率谱密度函数是 在( D )域描述随机信号。 A.时间 B. 空间 C. 幅值 D. 频率 (6) 白噪声信号的自相关函数是(C ) A.相关函数 B. 奇函数 C. 偶函数 D. 不存在 6.4已知被测模拟量最大输出幅值为±5V ,要求AD 转换输出最大误差不大于5mv ,应选用多少位的AD 转换器? 解:量化误差5mv=±0.5LSB=125*5.012* 5.0-±=-±n n V FS 解得n=9 6.6 模拟信号DFT ,请问采样时间间隔Δt 、采样点数N 、频率分辨率Δf 三者之间的关系?并回答如下问题: (1) 为什么采样频率Δf 必须至少为被分析信号中最高频率成分的2倍才能避免混淆? (2) 当采样频率确定后,频谱中应该出现的最高频率是多少? (3) 频谱中的谱线根数是否与时域中的采样点数相同?对于频谱分析来说有用的谱线根数是多少?

RS-485通信原理

一、RS485串口通信电路图 二、VxWorks中基于RS485总线得串口通信协议及实现 摘要:本文介绍了在嵌入式实时操作系统Vxworks下串行设备得驱动架构及实现,提出了一种基于RS-485总线得新型串口通信协议,重点讨论了基于这种协议得应用程序得设计方法,发送时主要采用了总线仲裁机制,接收时主要采用了字符合法性校验、长度校验、内容得CRC校验,提高了系统得通信效率与稳定性。 关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC校验 1 引言 随着信息技术与互联网得飞速发展,以及计算机、通讯、数码产品等领域得高速增长,数字化时代已经来临。嵌入式设备就是数字化时代得主流产品,嵌入式软件就是数字化产品得核心,作为嵌入式软件得基础与关键,嵌入式操作系统在产业发展过程中扮演着越来越重要得角色,应用遍及工业自动化、网络通信、航空航天、医疗仪器等领域。 2 RS-485总线 RS-485总线接口就是一种常用得串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送与差分接收,因此具有抑制共模干扰得能力,加上收发器具有高得灵敏度,能检测到低达200mv得电压,可靠通信得传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。 3 VxWorks中串口驱动得实现

VxWorks 操作系统就是美国Wind River公司设计开发得嵌入式实时操作系统(RTOS),就是嵌入式开发环境得关键组成部分。Vxworks 操作系统得I/O 系统可以提供简单、统一、与任何设备无关得接口。这些设备包括:面向字符设备、随机块存储设备、虚拟设备、控制与监视设备以及网络设备。Vxworks 得I/O 系统包括基本I/O 系统与缓冲I/O 系统,具有比其她I/O 系统更快速,兼容性更好得特性。这对于实时系统就是很重要得。 3、1 串口驱动架构 基于vxWorks得串口设备驱动程序架构,对vxWorks得 虚拟设备ttyDrv进行封装,向上将TTY设备安装到标准 得I/O系统中,上层应用通过标准得I/O 接口完成对硬 件设备得操作,向下提供对实际硬件设备得底层设备驱 动程序。其软件架构如图1所示。 由图1可知,串口设备驱动由两部分组成,一部分为对 ttyDrv进行封装,将串行设备安装到标准得I/O系统中, 提供对外得接口;另一部分为串行设备驱动程序,提供 对硬件设备得基本操作。 虚拟设备ttyDrv管理着I/O系统与真实驱动程序之间 得通信。在I/O系统方面,虚拟设备ttyDrv作为一个字 符型设备存在,它将自身得入口点函数挂在I/O系统上, 创建设备描述符并将其加入到设备列表中。当用户有I/O请求包到达I/O系统中时,I/O系统会调用ttyDrv相应得函数响应请求。同时,ttyDrv管理了缓冲区得互斥与任务得同步操作。另一方面,ttyDrv负责与实际得设备驱动程序交换信息。通过设备驱动程序提供得回调函数及必要得数据结构,ttyDrv将系统得I/O 请求作相应得处理后,传递给设备驱动程序,由设备驱动程序完成实际得I/O操作。 3、2 驱动初始化 串口设备得初始化xxDevInit流程如图2。 设备驱动得初始化过程首先调用系统函数ttyDrv(),该 函数通过调用iosDrvInstall()将ttyOpen()、 ttyIoctl()、tyRead()、tyRead、tyWrite安装到系统 驱动函数表中,供I/O系统调用。 接着根据用户入参对串口芯片寄存器进行初始化,安装 驱动函数指针。 最后调用系统函数ttyDevCreate()创建ttyDrv设备。 该函数初始化设备描述符,调用tyDevInit()函数初始

小学数学课堂常规训练

小学数学课堂常规训练 多年来的教学实践,使我深刻的体会到:良好的学习习惯,是学习知识,培养能力,发展智力的重要条件。因此,培养学生的良好的学习习惯,是教师长期而又艰巨的任务。作为数学教师,对学生不仅要“教”而且要“导”,不仅要教“数学知识”,而且要教如何学好数学知识。下面就自己在教学实践过程中,如何课堂常规训练中培养学生良好的学习习惯,课堂训练的一点做法。 1、教学生会听课,养成积极动脑的习惯 首先要重点培养学生积极动脑,认真听讲的习惯,使学生做到:会听,会看,会想,会说。会听:听要入耳,如果听而不闻,等于没听。学生听讲时要边听边想边记忆,抓住要点。不仅要听老师的讲解,还要认真听同学们的发言,要能听出别人发言中的问题。 我们常教育学生上课要认真听讲,这里的“听讲”应包括两方面的意思:一是课堂上,精力要集中,不做与学习无关的动作,要认真听老师讲解,注意看老师演示、板书和表情、动作,要抓住新知识的生长点,新旧知识的联系,弄清公式、法则的来龙去脉。通过观察,我们会发现,低年级学生上课注意力不集中,易分神,情绪不稳定,针对这些特点,我们要以鼓励表扬的语言引导学生该怎样听课。如表扬某个小朋友坐得端正,听得认真等,如:今天上课×××表现真好,做的特别端正。引起其他同学的注意,让他们知道什么该做,什么不该做,从而养成良好的听课习惯。二是注意听同学们的发言,大胆地发表自己的意见,对他人的观点、回答能做出评价和必要的补充,积极参加课堂上的讨论活动。特别是学困生让他重复别人的发言,引起注意力,形成听的好习惯。如:谁能像他这样再说一遍,谁的声音比他再大点,你的声音真好听。 会看:主要是培养学生的观察能力和观察习惯,首先要给学生观察权,不要让老师好心的“讲”取代学生的“看”。凡是学生能够通过看就能掌握的东西,教师一定要少讲或不讲,同时,在看时注意要集中,教师要有意识地引导学生看。谁来说一说刚才老师先干了什么,又干了什么。谁能像他那样再做一遍。一看老师和同学的板书,老师同学在操作时步骤方法,在看之前要提出要求,学生有目的的看。二看课本。课本是无声的老师,是学生获得知识的主要来源,因此,要指导学生要认真阅读课本。 数学课本,没有故事情节,学生可读性差,如果只是一般地阅读,学生必然会“读不进去”,看不出什么问题。因此,教师要注意引导学生抓住课本的主要内容和重点,以及关键词,也就是今天的先学后教,自学提纲,自学要求。这样学生有目的阅读,学生读的兴趣就有了。教学以书为本,我们应该借助教科书这个工具,在数学课中,把“看、读、思、练”结合起来培养学生的阅读习惯和能力。 会想:首先要肯想,老师每提一问,学生人人都必须立即思考,立刻去想,准备回答。即使不回答或答不上来,也要把问题重述一遍,说出自己是怎么想的,想到哪儿去了,老师要有的放矢的进行点拨,使学生接着去想,同时,要对学生

计算机操作系统典型例题解析之三

计算机操作系统典型例题解析之三 【例1】分配到必要的资源并获得处理机时的进程状态是(B )。A、就绪状态B、执行状态 C、阻塞状态D、新状态 分析:进程有三种基本状态:就绪状态、执行状态和阻塞状态。当进程已分配到除CPU以外的所有必要的资源后,只要能再获得处理机便可立即执行,这时的状态称为就绪状态;处于就绪状态的进程如果获得了处理机,其状态转换为执行状态;进程因发生某种事件(如I/O请求、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种状态为阻塞状态;而新状态是指创建了进程但尚未把它插入到就绪队列前的状态。所以本题的答案是B。 【例2】挂起的进程被激活,应该使用(C)原语。 A、Create B、Suspend C、Active D、Wakeup 分析:在不少系统中,进程除了三种基本状态外,又增加了一些新的状态,其中最重要的是挂起状态。“挂起”的实质是使进程不能继续执行,即使挂起后的进程处于就绪状态,它也不能参加对CPU的竞争,进程的挂起调用Suspend()原语。因此,被挂起的进程处于静止状态,相反,没有挂起的进程则处于活动状态。而且,处于静止状态的进程,只有通过“激活”动作,调用Active()原语,才能转换成活动状态,调入内存。所以本题的答案是C。 【例3】任何时刻总是让具有最高优先数的进程占用处理器,此时采用的进程调度算法是(D)。A非抢占式的优先数调度算法B、时间片轮转调度算法C、先来先服务调度算法D、抢占式的优先

数调度算法 分析:“让具有最高优先数的进程占用处理器”,我们可以知道,采用的进程调度算法是优先数调度算法,但是我们还要进一步分析是抢占式的还是非抢占式的。“任何时刻总让”,通过这句话我们知道采用的是抢占式的,所以本题的答案是D。 【例4】若P、V操作的信号量S初值为2,当前值为-1,则表示有(B)等待进程。A、0个B、1个C、2个D、3个分析:信号量的初始值表示系统中资源的数目,每次的Wait操作意味着进程请求一个单位的资源,信号量进行减1的操作,当信号量小于0时,表示资源已分配完毕,进程自我阻塞。因此,如果信号量小于0,那么信号量的绝对值就代表当前阻塞进程的个数。所以本题的答案是B。 【例5】发生死锁的必要条件有四个,要预防死锁的发生,可以破坏这四个必要条件,但破坏(A)条件是不太实际的。 A、互斥 B、请求和保 C、不剥夺 D、环路等待 分析:预防死锁是指通过破坏死锁的某个必要条件来防止死锁的发生。四个必要条件中,后三个条件都可以被破坏,而第一个条件,即“互斥”条件,对某些像打印机这样的设备,可通过SPOOLing技术予以破坏,但其他资源,因受它们的固有特性的限制,该条件不仅不能被破坏,反而应加以保证。所以本题的答案是A。 【例6】有m个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是1 至1-m。

什么是RS485通信接口

什么是RS485通信接口 通信概述 通信设备从早期的邮件,电报,电话,传真,传呼机,手机,电脑,一路发展下来,而且随着科技的发展,世界必将由一个网络组成,所以,在未来开发的设备中,也必然要求大部分的设备都带有通信的功能。 设备与设备之间互相通信,就要有一座桥梁把二者连接起来,那就是传输通路与通信协议。传输通路由传输介质与传输接口组成,传输介质可分为有线和无线传输介质两大类。 有线传输介质在数据传输中只作为传输介质,而非信号载体。计算机网络中流行使用的有线传输介质为:铜线和玻璃纤维。 铜线具有便宜,安装容易的特点,在现在工业应用中普遍应用,在应用中主要有两种基本的铜线类型:双绞线和同轴电缆。双绞线可减小流过电流所辐射的能量,也可防止来自其他通信线路上信号的干扰,对于一些要求比较高的项目上,还需要给双绞线加上屏蔽层;同轴电缆由一对同轴导线组成。同轴电缆频带宽,损耗小,具有比双绞线更强的抗干扰能力和更好的传输性能。按阻抗值不同,同轴电缆可分为基带和宽带两种,同轴电缆是目前局域网与有线电视网中普遍采用的比较理想的传输介质。 所谓玻璃纤维介质,就是指现在所流行的光纤传输,他的两边有一个激光发生器与一个激光接收器,组成一整套通信线路,由于光纤传输距离远,因此现很多在工程都是采用“光端机+光纤”的模式。 结合我在工程中经常应用的通信模式,与“南方的老树51CPLD开发板”上具有的RS232通信、RS485通信两种,详细讲解下这两种通信方式的应用。 什么是RS232接口 首先介绍下什么是RS232接口,什么是RS485接口。

RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替他的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在都把RS232接口叫做DB9。 元器件常识:市场上把公头的接插件叫做DRXX,母头的叫DBXX,比如我们电脑上的串口,在市场上叫做DR9,不是DB9,很多人都误叫做DB9,实际上的DB9是两个把两个DR9互相连接在一起的接口。 在文章中,我把所有的串口设备接口都统一叫做RS232接口。 三、什么是RS485接口 由于RS232接口标准出现较早,难免有不足之处,主要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率为20Kbps;因此在“南方的老树51CPLD开发板”中,综合程序波特率只能采用19200,也是这个原因。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。 针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一,它具有以下特点:

(最新)二年级组 小学生习惯养成、教学常规

“没有规矩,不成方圆” ——小学生课堂常规要求 有子曰:“礼之用,和为贵。先王之道,斯为美。小大由之,有所不行。知和而和,不以礼节之,亦不可行也。” 圣人学者如是说:少成若天性,习惯成自然。——孔子 教育者,养成人格之事业也——蔡元培 教育是什么?往简单方面说,只是一句话,就是要养成良好习惯。 ——叶圣陶 古之圣人,今之学者都认为学习的前提是养成一个良好的习惯。而作为教育者,除了传道授业解惑,更重要的是帮助学生养成一个良好的学习习惯。接下来,我们就谈一谈小学生的课堂常规要求。同学们,也来自检一下,看看哪些地方还做得不足呢? 【小学生课堂常规要求】 【课前准备】 1.教学设备:电教设备开启完毕,黑板擦拭干净。

2.上课前必须准备好本节课要用的所有学习用品,书本统一放在课桌左上角,文具盒放在桌子的中间,学具放在铅笔盒下方。 【候课、问好】 1、预备铃响时,要立即进入教室安静等待,教师进入教室。 2、老师环视四周,待学生注意力集中到老师这里后,发出口令“上课”,班长喊“起立”,全体同学立正站在原位向老师行注目礼。 老师说:“同学们好”后,同学们齐答“老师好”,说“好”字时行鞠躬礼,“好”字结束后即站直,老师还礼后坐下。坐下要安静、端正。 【坐姿】 抬头挺胸身体坐直,双脚自然叉开与肩同宽,双手自然放上或放下,手里不玩弄小物品。

【举手】 左手自然举起,五指并拢,向上举直不离开桌面,也可以伸直手臂,但是臀部不能离开凳子。 倾听

1、别人讲话时,要坐姿端正,可以微侧身子,双眼注视发言者,专心致志地听。 2、应学会边听边想,思考别人说的话的意思,能记住别人讲话的要点。 3、不打断同学的发言,等别人讲完后,举手得到同意后可以发表自己的观点。 【阅读】 端坐朗读,双手捧书,在身体正前方,拇指扣压课本,书与桌面大约成45度角。

三菱FX3U 485无协议通讯程序详解(含程序)

三菱FX2N PLC串行通讯指令(FNC 80 RS) 串行通讯指令(FNC 80 RS) 1、指令格式:[RS D0 K8 D10 K8] 发送数据帧起始地址和数目↓ 接收数据帧起始地址和数目 2、功能和动作: ※RS指令是为使用RS232C、RS-485功能扩展板及特殊适配器,进行发送和接收串行数据的指令。 ※传送的数据格式在后面讲述的特殊寄存器D8120设定。RS指令驱动时即使改变D8120的设定, 实际上也不接收。 ※在只发送的系统中,可将接收数设定为K0。(K表示常数) ※在只接收的系统中,可将发送数设定为K0。 ※在程序中可以多次使用RS指令,但在同一时间必须保证只有一个RS指令被驱动。 ※在一次完整的通讯过程中,RS指令必须保持一直有效,直至接收数据完成。 D8120说明: ※根据MD320的通讯协议,无帧头和帧尾,则(bit9,bit8)=(0,0)。 ※bit13~15是计算机链接通讯时的设定项目,使用RS指令时必须设定为0。 ※RS485未考虑设置控制线的方法,使用FX2N-485-BD、FX0N-485ADP时,(bit11,bit10 )=(1,1)。 ※若PLC和变频器之间的通讯参数如下:8位数据位,无校验,2位停止位,波特率9600,无帧头无帧尾,无协议模式,则D8120=H0C89(H表示16进制)(0000 1100 1000 1001B) M8002 │──||────────── [ MOV H0C89 D8120 ]

5、相关标志位: 一.基本指令介绍 ※M8122:数据发送请求标志 当PLC处于接收完成状态或接收等待状态时,用脉冲触发M8122,将使得从D0开始的连续8个数据被发送。当发送完成后,M8122自动被复位。当RS指令的驱动输入X0变为ON状态时,PLC就进入接收等待状态。 ※M8123:数据接收完成标志 当M8123置位时,表明接收已经完成,此时需要将接收到的数据从接受缓冲区转移到用户指定的数据区,然后手工复位M8123。复位M8123后,则PLC再次进入接收等待状态。 如果指定的接收长度为0,则M8123不动作,也不进入接收等待状态。从这个状态想进入接收等待状态,必须使接受长度≥0,然后对M8123进行ON→OFF操作。 ※M8129:通讯超时标志 接收数据中途中断时,那个时点开始如果在D8129中规定的时间内不再重新开始接收,作为超时输出标志M8129变为ON状态,则接收结束。M8129需手工复位。 二.详细程序(与英威腾GD20变频器测试通讯成功的案例)

小学生课堂常规要求

小学生课堂常规要求 一、课前准备: 1、教学设备:电教设备开启完毕,黑板擦拭干净。 2、上课前必须准备好本节课要用的所有学习用品,书本统一放在课桌左上角,文具盒横放在书本左上方,学具放在铅笔盒下方。 二、候课:预备铃响时,要立即进入教室安静等待老师上课。 三、问好:上课铃响,教师走进教室,环视四周,提示同学要上课了,待学生注意力集中到老师这里后,发出口令“上课”班长喊“起立”,全体同学立正向老师行注目礼,老师说:“同学们好”后,同学们齐答“老师好”,说“好”字时行鞠躬礼,“好”字结束后即站直,老师还礼后坐下。坐下要安静、端正。 四、坐姿:抬头挺胸身体坐直,双脚自然叉开与肩同宽,双手自然放上或放下,手里不玩弄小物品。 五、举手:右手自然举起,五指并拢,向上举直不离开桌面。 六、倾听:别人讲话时,要坐姿端正,专心致志地听。应学会边听边想,思考别人说的话的意思,能记住别人讲话的要点。第三不打断同学的发言,等别人讲完后,再举手得到同意可以发表自己的观点。 七、阅读:读书时,双手握书,使书与桌面夹角成135度。课堂阅读分朗读与默读。朗读要求正确、流利、有感情,用普通话读,发音标准,吐字清晰,声音响亮。不重复字句,不顿读,不指读,不唱读,不读断句。默读的要求是:保持安静、神情专注、态度认真、思维集中、动手动脑。 [分年级要求:] 1.一、二年级:发音标准,吐字清晰,声音响亮,要一字一句读准确,用普通话读,读准字音,不漏字,不添字,不错字,不破句,不回读;不顿读,不指读,不唱读。 2.三、四年级:流利地读,做到把句子读完整,不读断句;要读出句和句之间、段与段之间的停顿,连贯流畅,速度适中。有感情地读,要做到读出不同的语气,语调恰当;读得有轻重缓急,能比较准确地读出文章的思想感情;情感的表达要真挚、朴实、自然、要用自己的声音的本色表情达意。 3.五、六年级:速度依文章的内容而定。一般说,交代说明性的内容,描写的句子,含有庄重或悲哀的句子读缓慢些,紧张气氛的内容、激烈的对话,慷慨陈辞,含

基于Linux的信号量通信机制研究与实现

系统软件与软件工程本栏目责任编辑:谢媛媛Computer Knowledge and Technology 电脑知识与技术第6卷第12期(2010年4月)基于Linux 的信号量通信机制研究与实现 袁玉锦,周群 (邯郸学院网络中心,河北邯郸056005) 摘要:该文以信号量通信理论为基础,通过对Linux 信号量相关系统调用的分析,着重讨论了内核级和用户级的信号量通信、同一进程内线程之间的通信、多用户的进程间的通信等问题,并采用ANSI C 编写了信号量通信的具体实例。 关键词:信号量;Linux ;多进程通信;线程通信 中图分类号:TP316文献标识码:A 文章编号:1009-3044(2010)12-3279-03 1信号量通信理论 操作系统原理中利用信号量来解决多进程互斥访问临界资源的问题,还可来描述多进程之间的前趋关系,即同步问题。 信号量的概念由荷兰学者E.W.Dijkstra 于1965年提出。信号量实际是一个整数,进程(也可以是线程)在信号量上的操作分2种,一种称为P 操作,另一种称为V 操作。P 操作是让信号量的值减1,V 操作是让信号量的值加1。在进行实际的操作之前,进程首先检查信号量的当前值,如果当前值大于0,则可以执行P 操作,否则进程休眠,等待其他进程在该信号量上的V 操作,因为其他进程的V 操作将让信号量的值增加,从而它的P 操作可以成功完成。某信号量在经过某个进程的成功操作之后,其他休眠在该信号量上的进程就有可能成功完成自己的操作,这时系统负责检查休眠进程是否可以完成自己的操作。 在操作系统中,信号量最简单的形式也是最初被提出时定义的形式是一个整数,多个进程可检查并设置信号量的值。这种检查并设置(Test-and-Set)操作是不可中断的,也称为“原子”操作。检查并设置操作的结果是信号量的当前值和设置值相加的结果,该设置值可以是正值,也可以是负值。根据检查并设置操作的结果,进行操作的进程可能会进入休眠状态,而当其他进程完成自己的检查并设置操作后,由系统检查前一个休眠进程是否可以在新信号量值的条件下完成相应的检查并设置操作。这样,通过信号量,就可以协调多个进程的操作,实现多进程之间通信。 操作系统原理中通常把信号、信号量通信称为低级通信,而把管道、消息队列、共享存储区通信称为高级通信。信号量分为有名、无名两种,进程间通信用有名信号量,同一进程内部通信一般用无名信号量。 2Linux 中的信号量 从意义和实现机理上,Unix System V 或Linux 的信号量与以上所述的常规信号量没有什么区别,但System V 提供的信号量机制要复杂得多,并且分为两种不同系统调用类型:一种是用内核级的信号量,有关系统调用在/usr/include/semaphore.h 中包含,一般可用于内核级的进程通信和内核级的线程通信;另一种是用户级信号量,有关系统调用在/usr/include/sys/sem.h 中包含,一般可用于多用户进程之间通信。 2.1内核级的信号量相关系统调用 int sem_init (sem_t *sem ,int pshared ,unsigned int value) 作用:为单个信号量设置初值,第一参数*sem 为指定的信号量对象;第二参数pshared 为共享标志,如值为0表示私有信号量,非0表示可以与其他进程共享的信号量;第三参数value 为要为信号量设置的初值。 相关数据结构如下: struct{struct{long int status ; int spin_lock ;}sem_lock ; int sem_value ; pthread_descr sem_waiting ; }sem_t int sem_wait (sem_t *sem); 作用:对指定的信号量进行P 操作。 Int sem_post (sem_t *sem); 作用:对指定的信号量进行V 操作。 总结:以上是内核级信号量通信常用到的三个系统调用,使用方式较为简单,但主要适用于内核级多线程之间通信,后面将给出多线程通信的具体实例。 收稿日期:2010-02-21 作者简介:袁玉锦(1980-),女,河北曲周人,邯郸学院网络中心,助教,学士,研究方向为计算机网络;周群(1981-),女,河北武安 人,助教,学士,主要研究方向为计算机网络。 ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.6,No.12,April 2010,pp.3279-3281E-mail:xsjl@https://www.doczj.com/doc/2d3653861.html, https://www.doczj.com/doc/2d3653861.html, Tel:+86-551-569096356909643279

信号量互斥题目

试用用信号量机制描述两人下象棋的过程。 两人下象棋的过程可以概括为:一开始只能是“红先黑后”,以后两人要循环轮流走子,直至某一方获胜或双方和棋为

止。? 这是个只有一个生产者和一个消费者的生产者——消费者问题,是个典型的“你等我,我也等你”的问题。红方是总的前趋任务——生产者进程,黑方是总的后继任务——消费者进程,但由于下棋过程必须轮流走子,所以红黑双方的生产者消费者身份会轮流改变。棋盘则是生产者与消费者共享的缓冲。?要求:只描述对弈过程,对棋盘的访问不做描述。二人对弈过程是个纯粹的同步过程 ①所用信号量设臵如下: Ⅰ)同步信号量hei,初值为1,表示黑方已走子,开始时可使红方先行不受阻。 Ⅱ)同步信号量hong,初值为0,表示红方尚未走子,开始时可使黑方先行受阻。 用信号量机制描述的二人下象棋过程如下

有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问: (1)为描述读者的动作,应编写几个程序,设臵几个进程?(2)试用P、V操作描述读者进程之间的同步关系。分析:?读者的动作都是一样的:登记进入阅览室,阅读, 撤消登记离开阅览室,因此可写一个程序,设n个进程。 ?读者共享的资源有阅览室的座位和登记表,因此诸 个读者进程之间有两种互斥制约关系,需设2个信号量来实现:? seat:用于实现诸读者对阅览室的空闲座位的互斥 竞争,初值为100; ? mutex:用于实现诸读者对登记表的互斥访问,初值 为1

(1)可写一个程序,设n个进程 (2)读者进程readeri(i=1,2,3,……)描述如下: P(seat); /*申请空座位*/ P(mutex); /*申请登记*/ 登记; V(mutex) /*允许其他读者登记*/ 阅读; P(mutex); /*申请撤消登记*/ 撤消登记; V(mutex); /*允许其他读者撤消登记*/ V(seat); /*释放座位,允许他人进入*/

如何培养好的课堂常规

如何培养好的课堂常规 2008-1-18 8:09:00 我国教育家叶圣陶认为“教育就是培养习惯。”可见培养习惯的重要性。好的习惯能让人一生受益,坏的习惯有时会毁掉一个人的一切。那么,怎样才能使学生养成良好的学习习惯呢?下面就结合笔者的实践谈几点体会。 一、要及早开始培养 要使学生养成良好的学习习惯,从小学入学的第一天起,就要有目的有计划的注意培养,否则,当不良习惯养成后再纠正就困难了。笔者从抓课堂常规入手,因为课堂常规是正常教学的保证,也是提高学习效率的保证。小学生课堂常规一般包括以下内容: 1、学习用品放置的位置。应培养学生到校后就按当天课程表将书包里的教科书和作业本一一取出放在一定的位置,每节课后要准备好下一节课的学习用品,上课时不能削铅笔打墨水借学习用品等。 2、坐、站的姿势要正确。 坐的姿势:头要正,眼睛看前方,两肩要平,背要挺直,两腿并拢,双手放在膝上或自然下垂;站的姿势:向左或向右侧跨出一步,呈立正姿势。课前向老师行礼,课上发言都要保持正确的站立姿势。 3、课前发言要举手,不随便插嘴。一般举左手,举起手时五指并拢,肘关节与肩平。老师指定某一同学发言后,其他同学将手放下。 4、听到预备铃声立即不再讲话,以最快的速度跑进教室,入座后静候老师到来。 通过这样的常规训练,班上一般都能形成较好的教学秩序。 二、循序渐进,逐步发展 良好的学习习惯不能指望一朝一夕就养成,也不能全部一下子养成,它有一个由简单到复杂逐渐形成的过程。所以我们要根据学生的年龄特点、根据教学的需要,循序渐进,逐步提出具体的切实可行的要求,使他们良好的学习习惯由少到多,由部分到整体,持续稳定地得到发展。随着年龄的增长,学习水平的提高、知识的不断增多,到小学高年级,就要在简单的学习习惯基础上逐步训练养成更高要求的学习习惯。如阅读习惯、勇于创新习惯等。那种不遵循习惯形成规律,幻想一朝一夕就养成某种学习习惯的想法是不切合实际的,也是极其有害的。 三、加强训练,密切配合 良好习惯的养成,必须依靠学生多次反复的实践,并且对学生来说,应主要放在课堂上进行。要养成良好的学习习惯,不能只讲要求,而应结合教学实际,精心备课,细心指导,反复训练,认真检查,严格督促,对做得好的个人或小组给予语言鼓励或授予小红星,使良好习惯

计算机操作系统算法题(最全)

6. 算法题(共32个题目) 200348. 在信号量机制中,若P(S)操作是可中断的,则会有什么问题? 此题答案为:答: P(S)的操作如下: Begin S.Value:= S.Value-1; ① If S.Value<0 Then ② Begin Insert(*,S.L); Block(*) ③ End End. 若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退 下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value 的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程继续执行而被阻塞。这就出现了错误: 本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。 200350. 何谓临界区?下面给出的两个进程互斥的算法是安全的吗?为什么?

#define true; # define false; Int flag[2]; flag[1]=flag[2]=false; enter-crtsec(i) int i; { While(flag[1-i]) flag[i]=true; } feave-crtsec(i) Int i; { flag[i]=false; } process I; … Enter-crtsec(i); In critical section; Leave-crtsec(i);

此题答案为:答:一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。 从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。 这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。 200353. 某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题: (1)用P、V操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量各种取值的含义。 (2)根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。 Cobegin PROCESS Pi(i=1,2,…) Begin 进入售票厅; 购票; 退出; End;

于RS485的多机通信程序主机端

于RS-485的多机通信程序(主机端) //-----------------------函数声明,变量定义--------------------- #include ; sbit RE_DE=P1^0; #define COUNT 10 // 定义接收缓冲区大小 #define Slaver_NUM 10 unsigned char bdata flag; //在可位寻址去定义一个标志变量 sbit time_over_flag =flag^0; //接收超时标志unsigned char buffer[COUNT]; //定义缓冲区unsigned char point; //定义缓冲区位置指示unsigned char Slave_AD[Slaver_NUM]; //定义有效地址存放区 unsigned char ADD_num; //有效地址个数 unsigned char idata count_10ms; //用于表示有多少次10ms中断 unsigned char idata send_data[7]={ 0x31,0x32,0x33,0x34,0x35,0x36,0x37}; //与定义发送数据,共7位 void UART_init(); //串口初始化函数

void COM_send(void); //串口接收函数 unsigned char CLU_checkdata(void); //计算校验位函数 //--------------------------------------------------------------- // 函数名称: UART_init()串口初始化函数 // 函数功能:在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s // 串口接收中断允许,发送中断禁止,设定定时器中断允许 //--------------------------------------------------------------- void UART_init() { //初始化串行设置 SCON =0x58; //选择串口工作方式为1,打开接收允许,TB8=1 TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1 TR1 =1; //启动定时器T1 ES=1; //允许串行口中断 PS=1; //设计串行口中断优先级

浅谈低年级学生课堂常规养成教育

浅谈低年级学生课堂常规养成教育我们都知道低年级学生的行为习惯很差,尤其是课堂常规更不堪入目。因为在由幼儿园以游戏为主的学校生活一下子转为以学习文化知识为主的学校生活,对于学生来说很难一下子就适合,尤其是要规规矩矩的坐在坐位上40分钟对孩子来说很不容易。所以经常会出现这样的现象:上课铃声已打响了,你会发现学生还没有进课堂,还沉浸在愉快的游戏中,课堂上老师刚刚说了一个问题,学生就在下面七嘴八舌地讲了起来,没有要举手发言的意识,课堂非常混乱。而回头讲话,随意打断老师的话,更是屡见不鲜。 面对这样的课堂应该怎么办呢?大声呵斥?严厉批评?还是讲大道理?作者认为:应该对低年级的学生增强课堂常规的养成教育,下面结合自身的教育实践经验,谈几点理解。 一、培养个人荣誉感,榜样激励。 低年级,特别是一、二年级的学生毕竟还小,对于培养集体荣誉感学生头脑中没有相对应的概念,相反,学生对于个人荣誉感却已有了明确的概念,老师的一句表扬或鼓励的话,他们都会喜形于色,回到家里还会向爸爸、妈妈炫耀被老师表扬,让其他学生见了也非常地羡慕,个人荣誉感得到了极大地满足。并且模仿是小学生良好行为习惯的重要途径,模仿的对象是无穷的,尤其是小学生模仿性很强,为学生树立榜样,是行为规范训练的有效形式。依据这个特点我们老师在课堂上应该多表扬和鼓励,树立榜样。例如上课铃声已经响了,老师走进教室发现学生还没有坐好,有的在地上乱走,有的在喝水,有

的在说话唱歌,这时老师如果大声批评呵斥只会吓坏学生,让接下来的课堂教学陷入困境。此时能够看看教室内是否有坐好的学生,以此为契机对学生实行常规教育,“看,XX同学听到铃声,看到老师走进教室已经坐端正了,他可真是一个遵守课堂纪律的好孩子!让我们大家都向他学习!”短短的一句话即满足了学生的个人荣誉感又为其他学生树立了一个鲜活的榜样,明白以后上课时要向那位同学一样坐好才会得到老师的表扬。用榜样的力量激励学生学习对方的优点,鼓起超过对方的勇气,促动良好行为习惯的形成对一年级的学生来说效果非常显著。 二、规范个人行为,明确要求。 在学生能够明白上课要坐在座位上,要认真听老师讲课,能够进一步向学生提出更高的要求。此时小学生守则是我们实行指导课堂常规养成的一个非常好的依据,但千万不要照本宣科,因为学生太小对于这些条条框框的内容还不能很好地理解。此时我们能够编些孩子易于接受的儿歌来渗透。 例如上学可唱:“按时上学不迟到,校服领巾穿戴好。排好路队进校门,问早问好有礼貌。”课前能够唱“上课铃声嘀铃响,我们赶快进课堂,学习用品放整齐,等着老师把课上。”课中可唱:“开心说,认真听,老师你来评一评”。下课能够唱:“文明休息不喊叫,教学楼内不奔跑。上下楼梯靠右走,互助友爱不争吵。”这样把对学生行为习惯养成的要求编成儿歌,符合小学生心理生理特点,贴近学生的生

相关主题
文本预览
相关文档 最新文档