IPC- Posix与system v
一、功能上的区别
posix和system v有什么区别/?现在在应用时应用那一标准
浮云484212 | 浏览 243 次 2014-11-06 10:36
2014-11-19 22:36 最佳答案
它们是有关信号量的两组程序设计接口函数。POSIX信号量来源于POSIX技术规范的实时扩展方案(POSIX Realtime Extension),常用于线程;system v信号量,常用于进程的同步。这两者非常相近,但它们使用的函数调用各不相同。前一种的头文件为semaphore.h,函数调用为sem_init(),sem_wait(),sem_post(),sem_destory()等等。后一种头文件为<sys/sem.h>,函数调用为semctl(),semget(),semop()等函数。
这也是我在论坛里看到的,希望对你有所帮助。
POSIX sem 实现是基于futex的。 在无竞争条件下,不需要陷入内核,执行系统调用,
其实现是非常轻量级的。
System V sem 则不同,无论有无竞争都要执行系统调用,因此性能落了下风。
POSIX sem 由于没有事事烦扰内核,
所以内核也无法帮他记录 sem_adj ,即POSIX sem 并没有UNDO(回滚)功能。
作者:Bean Lee
链接:https://www.zhihu.com/question/35169528/answer/69119464
来源:知乎
二、来源上的区别
(一)POSIX介绍
POSIX(Portable Operating System Interface)可移植操作系统接口,这样的简写完全是为了和UNIX读起来更像而已。它是由IEEE(电子和电气工程师协会)开发,由ANSI(美国国家标准化学会)和OSI(国际标准化组织)两个机构标准化。由于早起各厂家对UNIX的开发各自为政,互相竞争,造成UNIX版本混乱,给软件移植造成困难,不利于UNIX长期发展,基于此,IEEE开发了POSIX,在源码级别定义了一组UNIX操作系统接口。
目前POSIX已经成为类UNIX(Unix-like)操作系统编程的通用接口,极大方便了类UNIX环境下应用程序源码级的可移植性。Glibc(GNU C Library),即C运行库,是Linux系统中最底层的API,它就是完全按照POSIX标准编写的。
POSIX版本
1997年之前版本
POSIX.1(IEEE Std 1003.1-1988): Core Services
POSIX.1b (IEEE Std 1003.1b-1993): Real-time extensions
POSIX.1c(IEEE Std 1003.1c-1995) :Threads extensions
POSIX.2(IEEE Std 1003.2-1992) :Shell and Utilities
1997年之后的版本
POSIX.1-2001( IEEE Std 1003.1-2001)
POSIX.1-2004 (with two TCs)(IEEE Std 1003.1-2004
POSIX.1-2008 (with one TC))( IEEE Std 1003.1, 2013)
Wiki:https://en.wikipedia.org/wiki/POSIX
(二)System V介绍
System V(System Five),是Unix操作系统众多版本中的一支,就是当年UNIX厂家混战中,比较强大的一个诸侯王,最初由 AT&T 开发,在1983年第一次发布。一共发行了4个 System V 的主要版本:1、2、3 和 4,比如:System V Release 4,或者称为SVR4,是最成功的版本,比如现今依然使用的操作系统SUN Solaris 和 SCO UnixWare,都基于 System V Release 4的,SUN公司我想大家都知道吧,依然是现在商用服务器操作系统重要提供商,但是我们常用的Linux操作系统并不是基于此的,但是这里要感谢POSIX这样标准化的努力,是它兼容了绝大部分System V的规格,减少了各类操作系统之间移植的麻烦。
IPC- Posix与system v的更多相关文章
- UNIX 进程间通讯(IPC)概念(Posix,System V IPC)
IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存).(当然这里虽然说是进程间通讯,其实也是可以和线程相通的). 相对 ...
- glibc库详解及与POSIX,system V这些库之间关系的说明
自己想了解下关于system v,在网上看到一篇详细的说明,与大家分享一下,原文地址http://hi.baidu.com/tekuba/item/570887775696542e5c178918 以 ...
- posix和system v有什么区别/?
posix和system v有什么区别/?现在在应用时应用那一标准浮云484212 | 浏览 243 次 2014-11-06 10:362014-11-19 22:36 最佳答案们是有关信号量的两组 ...
- Linux IPC实践(11) --System V信号量(1)
信号量API #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget ...
- Linux IPC实践(9) --System V共享内存
共享内存API #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int ...
- Linux IPC实践(6) --System V消息队列(3)
消息队列综合案例 消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid ...
- posix and system V IPC
轉載自 http://www1.huachu.com.cn/read/readbook.asp?bookid=10104131 http://www1.huachu.com.cn/read/readb ...
- Linux IPC实践(13) --System V IPC综合实践
实践:实现一个先进先出的共享内存shmfifo 使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速; 我们首先完成C语言版本的shmfifo(基于过程调用) ...
- Linux IPC实践(12) --System V信号量(2)
实践1:信号量实现进程互斥 父子进程执行流程如下: 父进程 子进程 P P O(print) X(print) sleep sleep O(print) X(print) V V sleep slee ...
- Linux IPC实践(4) --System V消息队列(1)
消息队列概述 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限于本机); 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值. 消息队列也有管道一样的不足: ...
随机推荐
- 个推demo
官网文档更详细,这里是只做个测试 http://docs.getui.com/server/java/start/ 全部推送(针对app应用) public static final String a ...
- 微信小程序各类型的自定义组件篇
由于本人最近在开发小程序项目,期间对小程序有花点时间去研究,同时也找了网上大牛的一些案例,在这里分享部分自定义组件,部分代码是copy大牛案例的,有对小程序有兴趣的伙伴拿走,不谢! 源码下载地址:ht ...
- ios 中的循环引用问题及解决
循环引用,指的是多个对象相互引用时,使得引用形成一个环形,导致外部无法真正是否掉这块环形内存.其实有点类似死锁. 举个例子:A->B->C->....->X->B - ...
- [编织消息框架][JAVA核心技术]动态代理应用12-总结
动态代理这篇比较长,是框架组成的重要基础 回顾下学到的应用技术 1.异常应用 2.annotation技术 3.数值与逻辑分享 4.jdk.cglib.javassist等动态代理技术 5.懒处理.预 ...
- 我搞zabbix的那两天(2)
摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!! Zabbix主界面及汉化方法介绍 1.1 初始化主界面 ...
- JavaScript的DOM编程--02--获取元素节点
如何来获取元素节点: 1) .document.getElementById: 根据 id 属性获取对应的单个节点 2) .document.getElementsByTagName: 根据标签名获取 ...
- Python并发实践_03_并发实战之一
16S数据质控流程,一次下机lane包括很多的项目,每个项目有独立的合同号,一个项目可能包含16S或者ITS两种,通过一个完整的pipeline,将上游拆分好的数据全部整理成可以直接分析的数据.原本这 ...
- SQLSERVER 死锁标志
最开始做DBA的时候,整天死锁到头痛1222,至今都能回想到这个错误窗口: 死锁定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待 ...
- iOS pods-xxxx-frameworks.sh:permission denied问题
找到Build Phases, 点开Embed Pods Frameworks 是不是看到了"${SRCROOT}/Pods/Target Support Files/Pods/Pods-f ...
- 微信跳一跳Python
微信最新的小程序里面出了个叫“跳一跳”的小游戏,大神们也通过Python实现了自动玩游戏具体代码 如下: Github地址: https://github.com/wangshub/wechat_ju ...