POSIX是什么?解决了什么问题?
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
1、POSIX是什么?
可移植操作系统接口Portable Operating System Interface of UNIX,POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。
2、POSIX解决了什么问题?
一般情况下,应用程序通过应用编程接口(API)而不是直接通过系统调用来编程(即并不需要和内核提供的系统调用来编程)。一个API定义了一组应用程序使用的编程接口。它们可以实现成调用一个系统,也可以通过调用多个系统来实现,而完全不使用任何系统调用也不存在问题。实际上,API可以在各种不同的操作系统上实现给应用程序提供完全相同的接口,而它们本身在这些系统上的实现却可能迥异。如下图,当应用程序调用printf()函数时,printf函数会调用C库中的printf,继而调用C库中的write,C库最后调用内核的write()。
从程序员的角度看,系统调用无关紧要,只需要跟API打交道。相反,内核只跟系统调用打交道,库函数及应用程序是怎么系统调用不是内核所关心的。
完成同一功能,不同内核提供的系统调用(一个函数)是不同的,例如创建进程,linux下是fork函数,windows下是creatprocess函数。好,我现在在linux下写一个程序,用到fork函数,那么这个程序该怎么往windows上移植?我需要把源代码里的fork通通改成creatprocess,然后重新编译...
主流的操作系统有两种,一种是Windows系统,另一种是Linux系统。由于操作系统的不同,API又分为Windows API和Linux API。在Windows平台开发出来的软件在Linux上无法运行,在Linux上开发的软件在Windows上又无法运行,这就导致了软件移植困难,POSIX(Protabl Operation System 可移植操作系统规范)应运而生。
posix标准的出现就是为了解决这个问题。linux和windows都要实现基本的posix标准,linux把fork函数封装成posix_fork(随便说的),windows把creatprocess函数也封装成posix_fork,都声明在unistd.h里。这样,程序员编写普通应用时候,只用包含unistd.h,调用posix_fork函数,程序就在源代码级别可移植了。
POSIX是什么?解决了什么问题?相关推荐
- Linux多线程实践(6) --Posix读写锁解决读者写者问题
Posix读写锁 int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,const pthread_rwlockattr_t *restr ...
- Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题
前面的一片文章我们已经讲过使用信号量解决生产者消费者问题.那么什么情况下我们须要引入条件变量呢? 这里借用 http://www.cnblogs.com/ngnetboy/p/3521547.htm ...
- Linux多线程实践(8) --Posix条件变量解决生产者消费者问题
Posix条件变量 int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_co ...
- Hi3516A开发--编译内核、uboot
操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇到的问题总结 首先SDK安装 拷贝Hi3516A_SDK_V1.0.5.0.tgz至Linux下 #tar -zxvf ...
- Hi3519V101开发环境搭建(一)
Hi3519V101开发环境搭建(一) 摘要:引言目前接触的项目使用海思平台.这里记录下海思3519的开发环境的搭建过程,感觉每次搭建都要参考<Hi3519V101Linux开发环境用户指南.p ...
- 操作系统大作业模拟实现命令解释器_06 初识shell之系统命令基础
一 shell介绍 Shell 中文意思贝壳,寓意类似内核的壳.Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,简而言之就是只要能够操作应用程序的接口都 ...
- 苹果电脑可以装windows系统吗_Linux系统安装Windows软件? 通过这个工具可以做到...
Linux系统是一个很优秀的系统,但是,这个优秀的系统,却面临着很尴尬的局面--很多软件都没有Linux对应版本. 如果一个优秀的系统连常用的软件都没有,那么也就与我们这些普通的用户失之交臂了. 那么 ...
- windows上安装linux_Linux系统安装Windows软件? 通过这个工具可以做到
Linux系统是一个很优秀的系统,但是,这个优秀的系统,却面临着很尴尬的局面--很多软件都没有Linux对应版本. 如果一个优秀的系统连常用的软件都没有,那么也就与我们这些普通的用户失之交臂了. 那么 ...
- Hi3516内核编译
https://blog.csdn.net/qq_29350001/article/details/52447485 操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇 ...
- (1)海思Hi3531DV100开发环境搭建
海思Hi3531DV100开发环境搭建(1) (本方案在linkpi开发板Hi3531Dv100上测试) 一 安装SDK 1.Hi3531DV100 SDK包位置 在"Hi3531DV100 ...
最新文章
- html使用highcharts绘制饼图,html js highcharts绘制圆饼图表
- 小程序的ui应该怎么设计?
- LeetCode Maximum Subarray
- 软件开发依据的标准或法律法规_第178篇丨直真科技:官宣!定制软件开发不应该采用完工百分比法确认收入...
- CodeForces - 1426F Number of Subsequences(dp)
- Mathematica函数大全
- 人工智能如何提升大数据存储与管理效率?
- 蓝奏网盘直链转换器 v1.1
- Unix网络编程 chart
- 字符串 kmp算法解析
- 【螺钉和螺母问题】【算法分析与设计】假设我们有n个直径各不相同的螺钉以及n个相应的螺母...
- 程序员必备的25个好网站汇总
- 数字藏品 传承优秀传统文化的新载体
- c语言中\0’ ,‘0’, “0” ,0的区别
- 如何用两台虚拟机搭建LAMP架构访问qq农场
- mysql的tps和qps_关于MySQL的TPS和QPS
- android nvram读写,MTK Android平台Nvram与Gensor数据获取
- 深度学习系列24:开源抠图算法
- 解题记录 P4017 最大食物链计数 拓扑排序
- SPARK Your Embedded Development Project with eBox-4300 Windows Embedded CE 6.0 R2 Jump Start Kit