Linux高性能服务器编程 System V IPC信号量和POSIX信号量详解
System V IPC信号量和POSIX信号量详解1.System V...
Linux高性能服务器编程 System V IPC信号量和POSIX信号量的区别与联系
System V IPC信号量和POSIX信号量的区别与联系在Linux上,信号量API有两组,一组是System V IPC信号量,另一组是POSIX信号量 总结:Sys用于进程同步,POSIX可以用于线程和进程间同步但一般用于线程 基本概念 System V IPC 信号量:是 System V 进程间通信(IPC)机制的一部分,用于在进程之间进行同步和资源共享控制。它是比较早期的信号量实现方式,功能强大,可用于多个进程之间复杂的同步操作。 POSIX 信号量:是基于 POSIX(可移植操作系统接口)标准定义的信号量接口。其设计目的是为了提供一种更简洁、更易于移植的信号量操作方式,在不同的类 UNIX 系统之间具有更好的兼容性。 区别 接口复杂性 System V IPC...
Linux高性能服务器编程 会话 守护进程
会话&&守护进程1.会话1.概念和特性进程组,也称之为作业。BSD 于 1980 年前后向 Unix 中增加的一个新特性。代表一个或多个进程的集合。每个 进程都属于一个进程组。在 waitpid 函数和 kill 函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了 简化对多个进程的管理。 当父进程,创建子进程的时候,默认子进程与父进程属于同一进程组。进程组 ID==第一个进程 ID(组长进程)。 所以,组长进程标识:其进程组 ID==其进程 ID 可以使用 1kill -SIGKILL -进程组 ID(负的) 来将整个进程组内的进程全部杀死。 组长进程可以创建一个进程组,创建该进程组中的进程,然后终止。只要进程组中有一个进程存在,进程组就 存在,与组长进程是否终止无关。 进程组生存期:进程组创建到最后一个进程离开(终止或转移到另一个进程组)。 一个进程可以为自己或子进程设置进程组 ID 会话(Session)和进程组(Process...
Linux高性能服务器编程 进程间通信方式---System V IPC信号量
进程间通信方式—System V...
Linux高性能服务器编程 进程间通信博客目录
进程间通信博客目录进程间通信方式—管道(使用最简单)-CSDN博客 进程间通信方式—文件(已经过时的东西看一遍有个印象)-CSDN博客 进程通信方式—共享映射区(无血缘关系用的)-CSDN博客 进程间通信方式—本地套接字(最稳定)-CSDN博客 System V IPC 进程间通信方式—System V IPC信号量-CSDN博客 进程间通信方式—共享内存(System V IPC 和POSIX)-CSDN博客 进程间通信方式—消息队列(System V IPC)-CSDN博客
Linux高性能服务器编程 进程间通信方式 共享内存 System V IPC 和POSIX
进程间通信方式—共享内存(System V IPC 和POSIX)System V IPC共享内存共享内存的基本原理 共享内存是一种进程间通信(IPC)机制。当多个进程需要共享数据时,可以创建一块共享内存区域。通过shmget函数创建共享内存段后,这块内存区域就存在于系统的内存空间中。 然后,各个进程可以通过shmat函数将这块共享内存连接到自己的进程地址空间。连接后,进程就可以像访问自己的本地内存一样访问共享内存中的数据。 共享内存是最高效的IPC机制,因为它不涉及进程之间的任何数据传输,这种高效率带来的问题是,我们必须用其他辅助手段来同步进程对共享内存的访问,否则会产生竞态条件,因此,共享内存通常和其他进程间通信方式一起使用。 Linux共享内存的API都定义在sys/shm.h头文件中,包括4个系统调用shmget、shmat、shmdt、shmctl。 1.shmget 系统调用shmget 系统调用创建一段新的共享内存,或者获取一段已经存在的共享内存。 12#include <sys/shm.h>int shmget(key_t key, size_t...
Linux高性能服务器编程 进程间通信方式 消息队列System V IPC
进程间通信方式—消息队列(System V IPC)消息队列1.消息队列进程间通信原理System V IPC 消息队列是一种进程间通信(IPC)机制,它允许不同进程通过发送和接收消息来进行通信。消息队列就像是一个邮箱系统,进程可以将消息(信件)发送到队列(邮箱)中,其他进程可以从这个队列中接收消息。 消息队列是在两个进程间传递二进制数据块的方式,每个数据块都有一个特定类型,接收方可以根据类型来有选择地接收数据,而不一定像管道和命名管道那样必须以先进先出的方式接收数据。 原理:多个进程通过共享消息队列的标识符(msqid)来访问同一个消息队列。发送进程将消息放入消息队列后,消息队列会按照一定的规则(如先进先出)存储这些消息。接收进程可以根据消息类型等条件从消息队列中取出消息。这样,不同进程之间就可以通过消息队列进行数据传输和通信,实现进程间的同步和信息共享。例如,在生产者 -...
Linux高性能服务器编程 各种进程间通信方式详解
各种进程间通信方式详解1.基本原理 进程地址空间的3g-4g是内核空间,0-3g是进程自己的,但是每个进程的3-4g是内核空间就一份,大家都相同的。 所以通信就是进程在内核空间中的一块缓冲区进行写而另外一个进程读从而完成了通信。这两个进程可以是父子进程,也可以不是。 2.基本概念“IPC” 全称是 “Inter - Process Communication”,即进程间通信。 1.进程间通信的重要性 在操作系统中,每个进程都有自己独立的地址空间。这使得进程之间的数据是相互隔离的,这种隔离性在保证进程独立性和安全性的同时,也带来了进程间共享数据和协同工作的困难。进程间通信机制就是为了解决这个问题,使得不同的进程能够相互交换信息、同步操作,从而共同完成复杂的任务。 2.IPC...
Day54 | 灵神 | 相向双指针:两数之和II-输入有序数组&&三数之和
Day54 | 灵神 | 相向双指针:两数之和II-输入有序数组&&三数之和两数之和 三数之和【基础算法精讲 01】_哔哩哔哩_bilibili 167.两数之和II-输入有序数组167. 两数之和 II - 输入有序数组 - 力扣(LeetCode) 思路: 数组给咱们的是排序好的,那自然而然定义两根指针,一个在数组头l,一个在数组尾r 这样定义的好处是 两根指针中间的数字一定比头指针要大,一定比尾指针要小 如果两指针之和大于target的话,那中间某个数加上尾指针肯定也比target要大,那说明两个数加起来大了,那就把右边大的数字减小一点 如果两指针之和小于target的话,那头指针加上中间某个数肯定也比target要小,那说明两个数加起来小了,那就把左边大的数字增大一点 如果两指针之和等于target的话,那说明我们找到了答案直接返回就行 举例: 2 4 6 8 9 target=12 一开始 2 +...
Linux高性能服务器编程 11. 多进程编程
11. 多进程编程 复制进程映像的fork系统调用和替换进程映像的exec系列系统调用。 僵尸进程以及如何避免僵尸进程。 进程间通信(Inter Process Communication,IPC)最简单的方式:管道。 三种System V进程间通信方式:信号量、消息队列、共享内存。它们是由AT&T System V2版本的UNIX引入的,所以统称为System V IPC。 在进程间传递文件描述符的通用方法:通过UNIX本地域socket传递特殊的辅助数据。(关于辅助数据,参考《Linux 高性能服务器编程》P85) 0.前置知识1.PCBPCB进程控制块本质是一个task_struct结构体 进程id,每个进程唯一一个 进程切换时需要保存和恢复的一些CPU寄存器 描述虚拟地址空间的信息 进程状态: 初始态、就绪态、运行态、挂起态、终止态。 进程工作目录位置 umask掩码 ...













