Linux内核编程实验报告6.docVIP

  • 10
  • 0
  • 约3.3千字
  • 约 8页
  • 2018-03-29 发布于河南
  • 举报
Linux内核编程实验报告6

Linux内核分析实验报告 ? 实验题目: 构造新内核同步机制实验 实验目的:设计同步原语模拟内核信号量。 硬件环境:内存1G以上 软件环境:Linux(Ubuntu) 2-6 实验步骤: usr/src/linux-2.6.33.2/ipc/shm.c 一:实验原理简介: 信号量负责对共享缓冲区的互斥,主要实现的方法有信号量的声明(sys_sema_open),在特定信号量的等待(sys_sema_wait),将特定信号量上的等待进程唤醒(sys_sema_signal),删除特定信号量(sys_sema_close)。 声明信号量 :声明新的信号量结构,对本信号量等待队列初始化,本信号量信号灯数目初始化,然后将其放入信号量等待队列中。 在特定信号量的等待 :如果信号灯数目大于0,说明还有资源可以利用,将信号灯数目-1。否则,说明没有资源可用,将本进程置为WQ_FLAG_EXCLUSIVE,放入等待队列,调用schedule(),重新调度其他进程。Schedule()方法后是finish_wait() 方法,当进程被唤醒后,首先执行此方法。此方法将进程真正地从等待队列中弹出。 唤醒信号量上的等待进程 :进程即将从缓冲区离开,将信号灯的数目+1。此时,如果等待队列中还有等待进程(判断条件是信号灯的数目0),则从等待队列中弹出一个进程,使其状态变为RUNNING,等

文档评论(0)

1亿VIP精品文档

相关文档