首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > LINUX内核的信号量设计与实现

LINUX内核的信号量设计与实现

  • 资源大小:1.22 MB
  • 上传时间:2021-11-04
  • 下载次数:0次
  • 浏览次数:43次
  • 资源积分:1积分
  • 标      签: 指针 Linux 内核

资 源 简 介

为了同步对内核共享资源的访问,内核提供了down函数和up函数用于获取和释放资源。down和叩所保护的访问资源的内核代码区域,就构成一个临界区。在等待获取资源进入临界区的过程中,代表进程运行的内核控制路径可以睡眠。我们从LINUX内核信号量最直观的设计/实现出发,通过一步步改进,揭示在x86平台上完整的信号量设计/实现,然后探讨在不同平台上通用的信号量设计/实现。LINUX内核信号量的初步设计与实现1数据结构我们首先分析信号量semphore应具备的数据结构。它需要一个计数count,表示能进入临界区的进程个数。conut一般初始化为1,表示信号量是互斥信号量,一次只允许一个进程进入临界区。它也能被初始化为其他正值,表示可有多个进程同时进入临界区。当进程不能进入临界区时,它必须在信号量上睡眠,因此需要一个表示“等待队列头的字段wait。在SMP中,等待队列需要自旋锁来保护,因此wait结构中应含有自旋锁lock,和指向等待队列链表的指针tasklist。而插入等待队列的“等待元素”,其字段中应含有指向进程结构的指针task,及能够链入等待队列的指针tasklist
VIP VIP