首页 > 系统相关 >IPC-System V-进程间通信概念

IPC-System V-进程间通信概念

时间:2024-01-24 14:24:06浏览次数:38  
标签:IPC 队列 System 间通信 信号量 进程 共享内存

基础概念




IPC函数接口


IPC对象删除和可持久性

信号量

  • System V的信号量集表示的是一个或多个信号量的集合。内核为每个信号量集维护一个semid_ds数据结构,而信号量集中的每个信号量使用一个无名结构体表示。

  • 信号量比较特殊,首先它是个计数器,主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。 工作流程是检查控制该资源的信号量,如果信号量值大于0,则资源可用,并且将其减1,表示当前已被使用。如果信号量值为0,则进程休眠直至信号量值大于0。

消息队列

  • 消息队列可以理解成是消息链表,存储在内核中,进程可以从中读写数据。与管道相比消息队列的优势在于可以独立于发送和接收进程而存在:进程可以在没有另外一个进程等待读的情况下进行写。还有通过发送消息还可以避免命名管道的同步和阻塞问题:一个进程往消息队列中写入数据后退出,另外一个进程仍然可以打开并读取消息

共享内存

  • 共享内存允许两个或多个进程共享一定的存储区,因为不需要拷贝数据,所以这是最快的一种IPC。
  • 共享内存就是映射一段能被其他进程所访问的内存,允许多个进程共享一个给定的存储区并直接访问,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信。

套接字

  • 套接字(Socket)是由Berkeley在BSD系统中引入的一种基于连接的IPC,是对网络接口(硬件)和网络协议(软件)的抽象。它既解决了无名管道只能在相关进程间单向通信的问题,又解决了网络上不同主机之间无法通信的问题。

标签:IPC,队列,System,间通信,信号量,进程,共享内存
From: https://www.cnblogs.com/starcos/p/17984577

相关文章

  • IPC-MQ-代码示例
    客户端-服务端版本一Codeintcommom_msg(intmsgFlag){ //生成IPC关键字 key_tk=ftok(PATHNAME,PROJ_ID); //获取消息队列ID intmsgId=msgget(k,msgFlag); if(msgId<0) { perror("msggeterror"); return-2; } returnmsgId;}intget_msg(void)......
  • IPC-MQ-msgget-msgrcv-msgsnd-msgctl
    msgget创建和打开消息队列函数创建和标志位的控制逻辑msgrcv从消息队列中读取一条新消息的函数msgrcvmsgsnd将消息送入消息队列的函数msgsnd参数msgctl获取和设置消息队列的属性函数......
  • fail: Microsoft.Extensions.Hosting.Internal.Host[11] Hosting failed to sta
    docker发布.net8项目#使用.NET运行时镜像作为最终镜像FROMmcr.microsoft.com/dotnet/runtime:8.0#设置工作目录WORKDIR/app#复制项目文件到工作目录COPY./appENVASPNETCORE_URLS="http://*:8003"ENVASPNETCORE_HTTP_PORTS=""#设置入口点ENTRYPOINT["dotn......
  • Operation system note
    KeywordsContextSwitchTime  bigparts: CommunicationbetweenaDeviceandtheCPU •MethodOne:PollingorHand-shaking•MethodTwo:Interrupts•MethodThree:DMA–DirectMemoryAccess  MemoryManagementAmemorymanagementunitorMMU......
  • [Backup system] Symantec Veritas Backup Exec(BESR) VS Veeam Backup
    SymantecVeritasBackupExecBESR是一款备份和恢复软件,它提供了多个功能特性,用于保护和恢复数据。主要功能特性:备份和恢复多种数据类型:BackupExec可以备份和恢复各种数据类型,包括文件、文件夹、数据库、应用程序数据、虚拟机和物理服务器等。它支持主流操作系统和应用程序,如Windo......
  • Additional Information for Homogeneous System Copy on SAP HANA with Encrypted Ba
    SymptomAdditionalinformationwhenexecutingahomogeneoussystemcopyforanSAPsystemonSAPHANAwhenthedatabackupisencrypted.Ifadatarecovery stepperform_database_recovery_tenantfailswitherror:  SAPDBTechJDBC:[448]:recoverycouldnot......
  • gvim中配置systemverilog语法高亮
    GVim的格式设置一般在家目录下的.vimrc文件中进行设置,一些常见的配置可参考如下:点击查看代码"语法高亮度显示syntaxon"设置行号setnu"防止中文注释乱码setfileencoding=utf-8setfenc=utf-8setfencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936,big-5......
  • Java中System类和Runtime类常用方法和属性
    ​ Java中,System类和Runtime类提供了一些关键的功能,用于与底层操作系统以及运行时环境进行交互。System类是Java标准库中的一个类,提供了对JVM的一些基本访问和控制方法。Runtime类实例封装了运行时环境。为Java程序提供了与底层系统交互的强大工具,但也需要谨慎使用以避免潜......
  • linux添加systemctl服务
    1.添加服务cat>/etc/systemd/system/bigdata_sr_detection.service<<'EOF'[Unit]Description=bigdata_sr_detectionAfter=network.target[Service]WorkingDirectory=/webser/bigdata_sr_detectionExecStart=/usr/bin/java-jar/webser/bigdata_sr_......
  • [MIT 6.S081] Lab: system calls
    Lab:systemcalls前言这次实验是实现内核中的两个syscall:trace和sysinfo。回顾一下第三节课,用户态的进程想要执行某个系统调用,例如exex(init,argv),首先会将init和argv的地址分别存放在a0和a1寄存器中,然后a7存放所要调用的系统调用,最后执行ecall。之后要结......