System V之我见

进程间通信 --- system V三种通信方式(图文案例讲解) 进程间通信 --- system V三种通信方式(图文案例讲解) 1. system V共享内存 1.1共享内存示意图 1.2 共享内存函数 1.3 共享内存数据结构 2.system V消息队列 - 了解 8.system V信号量 - 了解 进程互斥... 阅读详情


在查看很多系统性的文件和资料时,经常谈到system V, 有些是脚本。


比如:


service(8)                                                          service(8)

NAME
       service - run a System V init script

SYNOPSIS
       service SCRIPT COMMAND [OPTIONS]

       service --status-all

       service --help | -h | --version

DESCRIPTION
       service  runs a System V init script in as predictable environment as possible, removing most environment variables and
       with current working directory set to /.

       The SCRIPT parameter specifies a System V init script, located in /etc/init.d/SCRIPT.  The supported values of  COMMAND
       depend  on the invoked script, service passes COMMAND and OPTIONS it to the init script unmodified.  All scripts should
       support at least the start and stop commands.  As a special case, if COMMAND  is  --full-restart,  the  script  is  run
       twice, first with the stop command, then with the start command.

       service --status-all runs all init scripts, in alphabetical order, with the status command.

FILES
       /etc/init.d
              The directory containing System V init scripts.

ENVIRONMENT
       LANG, TERM
              The only environment variables passed to the init scripts.

SEE ALSO
       chkconfig(8), ntsysv(8)


一直纳闷什么是system V,其实都是Unix历史性的东东,感觉一段文字说的很好,system V都是有运行级别(run level),而BSD是没有的。

Linux下的service确实都是有运行级别的,系统本身也由runlevel,比如:

[root@localhost etc]# chkconfig 
NetworkManager 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
abrtd          	0:off	1:off	2:off	3:on	4:off	5:on	6:off
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
auditd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
autofs         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
avahi-daemon   	0:off	1:off	2:off	3:on	4:on	5:on	6:off
bluetooth      	0:off	1:off	2:off	3:on	4:on	5:on	6:off
certmonger     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
cgconfig       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
cgred          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
cpuspeed       	0:off	1:on	2:on	3:on	4:on	5:on	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
cups           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
dnsmasq        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
dovecot        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
firstboot      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
haldaemon      	0:off	1:off	2:off	3:on	4:on	5:on	6:off
httpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
irqbalance     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
iscsi          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
iscsid         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
kdump          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
libvirt-guests 	0:off	1:off	2:off	3:on	4:on	5:on	6:off
libvirtd       	0:off	1:off	2:off	3:on	4:on	5:on	6:off
lvm2-monitor   	0:off	1:on	2:on	3:on	4:on	5:on	6:off
mdmonitor      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
messagebus     	0:off	1:off	2:on	3:on	4:on	5:on	6:off
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netfs          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
nfs            	0:off	1:off	2:off	3:off	4:off	5:off	6:off
nfslock        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
nscd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
nslcd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ntpd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ntpdate        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
oddjobd        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
portreserve    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
psacct         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
qpidd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rdisc          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
restorecond    	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rhnsd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rpcbind        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rpcgssd        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
rpcidmapd      	0:off	1:off	2:off	3:on	4:on	5:on	6:off
rpcsvcgssd     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
saslauthd      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
smartd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
snmpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
snmptrapd      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
spamassassin   	0:off	1:off	2:off	3:off	4:off	5:off	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sssd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
sysstat        	0:off	1:on	2:on	3:on	4:on	5:on	6:off
tgtd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
tomcat6        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
udev-post      	0:off	1:on	2:on	3:on	4:on	5:on	6:off
vncserver      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
vsftpd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
wpa_supplicant 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
xinetd         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
ypbind         	0:off	1:off	2:off	3:off	4:off	5:off	6:off

xinetd based services:
	amanda:        	off
	chargen-dgram: 	off
	chargen-stream:	off
	cvs:           	off
	daytime-dgram: 	off
	daytime-stream:	off
	discard-dgram: 	off
	discard-stream:	off
	echo-dgram:    	off
	echo-stream:   	off
	rsync:         	off
	tcpmux-server: 	off
	telnet:        	on
	time-dgram:    	off
	time-stream:   	off
[root@localhost etc]# 

Linux系统下的runlevel定义在/etc/inittab, 如:

[root@localhost etc]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:
[root@localhost etc]# 



相对应的,BSD类系统则没有,比如Mac

mingjuwus-MacBook-Pro:etc mingjuwu$ which chkconfig
mingjuwus-MacBook-Pro:etc mingjuwu$ ls /etc/inittab
ls: /etc/inittab: No such file or directory
mingjuwus-MacBook-Pro:etc mingjuwu$ which service
mingjuwus-MacBook-Pro:etc mingjuwu$ 


个人认为,Linux本身就是System V的OS。



POSIX 和 System V IPC的区别 POSIX 和 System V 是两种不同的进程间通信(IPC)机制,它们在以下方面存在区别:msggetmsgsndmsgrcvsemgetsemopshmgetshmatmq_openmq_sendmq_receivesem_opensem_waitsem_post。 阅读详情

相关推荐

Linux进程同步之System V 信号量

System V信号量是不属于POSIX标准,它属于SUS(Single UNIX Specification)单一规范中的扩展定义。它和POSIX信号量一样都提供基本的信号量功能操作。 System V信号量相对于POSIX信号量最大的区别是在信号量的操作复杂度。 在POSIX信号量中说过,根据信号量取值(代表可用资源的数目)的不同,POSIX信号量可以分为: 二值信号量:信号量的值只

anonymalias的专栏 7722

【Linux】[万字] 详解 System V: 共享内存原理、创建及使用

我们知道, 进程间通信的前提是:先让不同的进程看到同一份资源 Linux的管道通信给进程间看到的同一份资源是:管道文件 而 共享内存 给进程间看到的同一份资源是:物理内存

七月.cc的博客 2750

Posix与System V IPC

三种类型的IPC合称为"Posix IPC":Posix消息队列;Posix信号量;Posix共享内存区;三种类型的IPC和称为"":System V消息队列。System V信号量。System V共享内存区。

weixin_50866517的博客 1027

初识linux之System V通信标准

讲解了linux中的system V进程间通信标准中的共享内存、消息队列和信号量的概念及使用

Masquerena114514的博客 1377

system V——共享内存

共享内存system V共享内存共享内存函数接口shmgetkey手动查看/释放共享内存key和shmid区别shmctl挂接shmdt system V SystemV标准的进程间通信方式是在操作系统层面专门为进程间通信设计的一个方案。进程间通信的本质就是让不同的进程能够看到同一份资源。 常见的system V结构的通信方式有如下几种: 共享内存 消息队列 信号量 这篇博客主要介绍基于共享内存的进程间通信方式。 共享内存 共享内存是通过某种调用,在内存中创建一份内存空间,然后通过函数调用,让需要参与进程通

h1091068389的博客 1474

System V信号量

使用Svstem V信号量的常规操作步骤:使用semget()创建或者打开一个信号量集。使用semctl() SETVAL 或 SETALL操作初始化集合中的信号量(只有一个进程需要完成这个任务)。使用semop()操作信号量的值。使用信号量的进程通常会使用这些操作来标识一种共享资源的获取和释放。当所有进程都不再需要使用信号量集之后操作删除这个集合(只有一个进程需要完成这个任务)。System V信号量是以分配被称为信号量集的组为单位进行的。在使用semget()

weixin_50866517的博客 1105

Unix/Linux的System V、BSD、Posix概念

1. System V和BSD  Unix操作系统在操作风格上主要分为System V和BSD(目前一般采用BSD的第4个版本SVR4),前者的代表的操作系统有Solaris操作系统,在Solaris1.X之前,Solaris采用的是BSD风格,2.x之后才投奔System V阵营。后者的代表的操作系统有FreeBSD。  System V它最初由AT&T开发,曾经也被称为AT&T System V

echo_bright_的博客 2万+

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

【Linux学习】进程间通信——system V(共享内存 | 消息队列 | 信号量)

详细介绍了共享内存的通信方式,包括它的原理和实现,以及涉及到的细节。大致描述了消息队列和信号量的一些概念。

weixin_63726869的博客 2554

SUMO仿真教程(5) —— 使用“XML“语言自定义构建路网

文章目录一.简要介绍1.node file2.edge file3.lane definitions(1)路段细分(2)邻近的对向车道(3)删除边或车道4.type file(1)简要概述(2)edge定义中引用type文件的示例(3)指定车辆种类的速度限制5.connections file(1)简要概述:(2)connection的属性参数(3)删除连接(4)设置连接的优先级(5)同一边的多个连接二.演示示例:1.自定义编写node file2.自定义编写edge file3.自定义编写type fil

weixin_50632459的博客 5015

电商平台大数据分析指标

一、五大关键数据分析指标 1.1活跃用户量 活跃用户量是一个基本的指标,有 DAU(日活跃用户)、WAU(周活跃用户)和 MAU(月活跃用户)三个层次; 1.2转化 转化是一个非常重要的指标,电商运营需要关注主路径、次路径甚至精细到每一个品类 / SKU 的转化率; 1.3留存 留存要从不同的时间周期上研究,包括次日留存率、3 日、7 日、30 日留存; 1.4复购 复购则要从 3 个角度去看,复购用户量、复购率和复购金额比; 1.5GMV GMV 是最重要的指标,我们的运营最终是围绕这

默主归沙的博客 4818

Linux System V标准简介

摘要:SystemV标准源于AT&T的UNIX SystemV操作系统,旨在解决早期UNIX变体碎片化问题,为类UNIX系统提供统一接口规范。其核心内容包括SystemV IPC机制(消息队列、信号量、共享内存)、系统初始化流程(SysVinit)、ABI规范等,对Linux系统设计产生深远影响。尽管部分机制已被替代(如systemd取代SysVinit),SystemV标准仍是Linux兼容性与稳定性的重要基础,衔接历史与未来技术发展。

心向往之,行必能至 1499

商城系统全链路压测实战指南

全链路压测是模拟真实用户行为和生产环境流量,验证整个系统在高压下的稳定性和性能表现的关键手段。

monk all the way 1228

【Linux系统编程】System V

System V - 共享内存、消息队列、信号量

2301_80277275的博客 960

Mac---安装Navicat

把这个填充好的字符串放入刚才打开的RSA在线加解密的网站中的第二个框框(替换之前的请求码),第一个框框不动(还是之前第10步骤中的私钥),点击RSA私钥加密,这时会得到一个加密的字符串,这个就是激活码。{“K”:“你的K值”, “N”:“52pojie”, “O”:“52pojie.cn”, “DI”:“你的DI值”, “T”:你的时间戳}链接: https://pan.baidu.com/s/1mEVY4hnKdktg-p7DBIfD7A 提取码: twwg。Navicat会弹出一个对话框,点击“注册”

weixin_53970868的博客 1万+

VSAN数据救援实战:当26个虚拟机突然不可访问时我们做了什么?

本文深度复盘了一次由运维操作失误引发的VMware vSAN存储危机,导致26个虚拟机数据不可访问的实战救援过程。文章详细剖析了vSAN脑裂状态的诊断方法,分享了在官方支持受限时,如何结合社区智慧与自主分析,通过精准的底层命令干预和状态推理,最终成功恢复全部数据的破局思路与操作细节,为vSAN数据救援提供了宝贵经验。

weixin_35749786的博客 236

System V 消息队列与信号量

本文探讨了SystemV标准下的消息队列和信号量机制。消息队列通过内核中转数据块实现进程通信,相比共享内存更安全但效率较低。文章详细介绍了消息队列的接口函数及内核数据结构设计。针对SystemV IPC缺乏同步机制的问题,重点阐述了信号量的原理:作为计数器实现资源预定,通过原子性P/V操作(申请/释放)保证临界资源访问安全。特别指出二元信号量(0/1)实现互斥访问的机制。文章揭示了操作系统管理IPC资源的数组方式,并强调信号量在解决并发控制问题中的关键作用。

2302_77620024的博客 3万+

本地生成无限量的AI图像和视频——无需网络,无限制,本地人工智能图像和视频生成的实用指南

我们将使用ComfyUI,这是一个功能强大的基于节点的 AI 图像和视频生成可视化界面。如果您是 ComfyUI 的新手,请不要担心。ComfyUI是什么?ComfyUI 是一款可视化工具,可让您在自己的计算机上生成 AI 图像和视频。您无需一次性理解所有内容。在本指南中,我们将从现成的工作流程入手,逐步帮助您建立信心。乍一看,内容似乎很庞杂——但本指南将着重于:-简单的工作流程-预构建示例-最少的配置我想向你展示使用这个工具最简单的工作流程。

iCloudEnd的博客 1801

System V IPC概述

1.System  V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量   IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中,由用户控制释放,不像管道的释放由内核控制   IPC对象通过其标识符来引用和访问,所有IPC对象在内核空间有唯一性标志ID,在用户空间的唯一性标识符称为key   LINUX IPC 继承自System IPC2. System V IPC对象...

qq_38211852的博客 6616

2026AI漫剧放心大胆做!小白也能轻松出片(附保姆级教程)

要是在2025,我大概率会劝他再等等,毕竟那时工具还没这么顺手。但到了2026年的今天,我的回答得很干脆:放心去做,绝对没问题。这一年多来,AI漫剧这块的变化真可谓翻天覆地。过去你想拍个像样的短片,哪怕再简陋,也得凑齐拍摄设备、找场地、找演员,后期剪辑更是折磨。但现在,时代变了,AI已经把创作的门槛踏平了。你不需要请演员,也不用操心灯光布景,更不用为剪辑特效烧钱。一个人,一台电脑,花几天时间就能做一部完整的AI漫剧。你只要有有想表达的故事,突发的灵感,剩下的,都能直接交给AI落地。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 454

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[linux仓库]System V 进程通信详解:System V消息队列、信号量

本文深入剖析Linux内核中的进程间通信(IPC)机制,重点讲解消息队列和信号量的实现原理与应用。消息队列本质是让不同进程共享同一份队列资源,数据块带有类型标识,其生命周期随内核。信号量作为临界资源的计数器,通过PV操作实现资源预定机制,确保互斥访问。文章还探讨了内核如何通过柔性数组管理IPC资源,并附赠minishell管道实现代码,展示了命令解析、重定向和管道通信的完整流程。所有SystemV IPC资源都遵循"先描述再组织"的管理原则,通过结构体中的ipc_perm实现统一管理。

egoist2023的博客 1985

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Linux】System V消息队列 System V信号量

在System V通信标准中,还有一种通信方式:消息队列,以及一种实现互斥的工具:信号量;随着时代的发展,这些陈旧的标准都已经较少使用了,但作为IPC中的经典知识,我们可以对其做一个简单了解。尤其是 信号量,可以通过它,为以后多线程学习中POSIX信号量的学习做铺垫信号量本质是计数器,PV操作具有原子性。执行流申请资源,必须先申请信号量(计数器)资源,得到信号量之后,才能访问临界资源!信号量值10两态的。二元信号量,就是互斥功能。申请计数器(信号量)的本质,是对临界资源的预定机制!

Weraphael的博客 1147

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Linux】system V消息队列,信号量

🔥个人主页Quitecoder🔥linux笔记仓。

Quietcoder的博客 1308

system V信号量

多个执行流(进程)能看到的同一份资源称为共享资源,被保护起来的资源加做临界资源,也就是说临界资源只允许在一个时间点有一个进程进行访问,所以我们保护的方式常见的是:互斥和同步,任何时刻只允许一个执行流访问资源叫做互斥,多个执行流访问临界资源的时候,具有一定的顺序性叫做同步,我们前面给共享内存加命名管道进行保护就是完美的解决了互斥和同步的问题。综合来看,System V IPC 更适用于需要高效、跨进程的通信,如共享内存提供最快速的进程间数据交换,消息队列适用于异步消息传递,而信号量用于进程同步和资源管理。

2301_80377335的博客 670

【Linux】System V —— 基于建造者模式的信号量

目录一、信号量和P、V原语1.1 信号量常规理解1.2 信号量值含义1.3 信号量结构体伪代码1.4 P原语1.5 V原语1.6 信号量集结构体二、信号量操作接口2.1 semget2.2 semctl2.3 semop三、封装Sem信号量和P、V原语由Dijkstra(迪杰斯特拉)提出。 1.4 P原语 1.5 V原语 1.6 信号量集结构体 二、信号量操作接口 2.1 semget 参数介绍:参数介绍:1. semid:2. semnum:3. cmd:控制命令常用命

2401_82759674的博客 1184

IPC - POSIX和System V比较

POSIX和System V比较 (一)POSIX介绍       POSIX(Portable Operating System Interface)可移植操作系统接口,这样的简写完全是为了和UNIX读起来更像而已。它是有IEEE(电子和电气工程师协会)开发,由ANSI(美国国家标准化学会)和OSI(国际标准化组织)两个机构标准化。由于早起各厂家对UNIX的开发各自为政,互相竞

懒洋洋工程师的笔记 3652
上一篇: Linux的Service之解析
下一篇: Linux之runlevel
wunderup
博客等级 码龄20年 13粉丝 79原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值