【Linux】信号量system V IPC之间的联系
创始人
2024-06-02 13:32:10

文章目录

  • 信号量
    • 信号量相关概念
    • 对应的数据结构
  • system V IPC联系

信号量

信号量相关概念

我们刚才说的匿名&命名管道,共享内存,消息队列都是以传输数据为目的,但是信号量是通过共享资源的方式来达到多个进程的同步和互斥

信号量本质是一个计数器,用来衡量临界资源中的资源数目


信号量本质是对临界资源内部的资源数目的统计,更重要的是操作系统给我们提供一种对临界资源的预定机制,而信号量本身要被预定,所有进程要访问临界资源,得先申请信号量,就意味着所有进程要先看到信号量,所以信号量本身就是一个临界资源, 信号量常见的V操作和P操作必须保证原子性


什么是临界资源

1)能被多个执行流同时访问的资源都是临界资源,比如,显示器文件、进程间通信的时候:管道、共享内存、消息队列都是临界资源

因为进程间通信需要引入能被多个进程看到的资源,但这也同时带来了临界资源的数据不安全的问题,信号量是用来保护临界资源的,前提是每个人得先看到信号量,因此信号量本身就是临界资源

  • 问:父子进程定义一个全局变量,这个全局变量是不是父子的临界资源

    不是!因为会发生写时拷贝,访问的不是同一个全局变量

那谁保护信号量呢?

就是通过PV操作保证原子性, P操作:申请信号量 V操作:释放信号量

什么是临界区

进程代码有很多,其中用来访问临界资源的代码叫做临界区

什么是原子性

一件事要么不做,要么就做完,没有中间态

什么是互斥

任意一个时刻,只能允许一个执行流进入临界资源 执行它的临界区


1)由于进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系叫做进程互斥

2)系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源

3)在进程中涉及到临界资源的程序段叫临界区

4)IPC资源必须删除,否则不会自动删除,因为system V IPC的生命周期随内核


对应的数据结构

在系统当中也为信号量维护了相关的内核数据结构, 先描述再组织!

image-20220808202558949


system V IPC联系

通过对system V系列进程间通信的学习,可以发现共享内存、消息队列以及信号量,虽然它们内部的属性差别很大

但是维护它们的数据结构的第一个成员却是一样的 -> 都是ipc_perm类型的成员变量

image-20220808213749636

这样设计的好处就是:在操作系统内可以定义一个struct ipc_perm类型的数组,此时每当我们申请一个IPC资源,就在该数组当中开辟一个这样的空间,在内核中, 所有的 ipc 资源都是通过数组组织起来的,所以所有的Syetem V表中的IPC资源的结构体的第一个成员都是ipc_perm

换句话说:在内核当中只需要将所有的IPC资源的ipc_perm成员组织成数组的样子,然后用切片的方式获取到该IPC资源的起始地址,然后就可以访问该IPC资源的每一个成员了

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...