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是什么?解决了什么问题?相关推荐

  1. Linux多线程实践(6) --Posix读写锁解决读者写者问题

    Posix读写锁 int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,const pthread_rwlockattr_t *restr ...

  2. Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题

    前面的一片文章我们已经讲过使用信号量解决生产者消费者问题.那么什么情况下我们须要引入条件变量呢? 这里借用  http://www.cnblogs.com/ngnetboy/p/3521547.htm ...

  3. Linux多线程实践(8) --Posix条件变量解决生产者消费者问题

    Posix条件变量 int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_co ...

  4. Hi3516A开发--编译内核、uboot

    操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇到的问题总结 首先SDK安装 拷贝Hi3516A_SDK_V1.0.5.0.tgz至Linux下 #tar -zxvf ...

  5. Hi3519V101开发环境搭建(一)

    Hi3519V101开发环境搭建(一) 摘要:引言目前接触的项目使用海思平台.这里记录下海思3519的开发环境的搭建过程,感觉每次搭建都要参考<Hi3519V101Linux开发环境用户指南.p ...

  6. 操作系统大作业模拟实现命令解释器_06 初识shell之系统命令基础

    一 shell介绍 Shell 中文意思贝壳,寓意类似内核的壳.Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,简而言之就是只要能够操作应用程序的接口都 ...

  7. 苹果电脑可以装windows系统吗_Linux系统安装Windows软件? 通过这个工具可以做到...

    Linux系统是一个很优秀的系统,但是,这个优秀的系统,却面临着很尴尬的局面--很多软件都没有Linux对应版本. 如果一个优秀的系统连常用的软件都没有,那么也就与我们这些普通的用户失之交臂了. 那么 ...

  8. windows上安装linux_Linux系统安装Windows软件? 通过这个工具可以做到

    Linux系统是一个很优秀的系统,但是,这个优秀的系统,却面临着很尴尬的局面--很多软件都没有Linux对应版本. 如果一个优秀的系统连常用的软件都没有,那么也就与我们这些普通的用户失之交臂了. 那么 ...

  9. Hi3516内核编译

    https://blog.csdn.net/qq_29350001/article/details/52447485 操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇 ...

  10. (1)海思Hi3531DV100开发环境搭建

    海思Hi3531DV100开发环境搭建(1) (本方案在linkpi开发板Hi3531Dv100上测试) 一 安装SDK 1.Hi3531DV100 SDK包位置 在"Hi3531DV100 ...

最新文章

  1. html使用highcharts绘制饼图,html js highcharts绘制圆饼图表
  2. 小程序的ui应该怎么设计?
  3. LeetCode Maximum Subarray
  4. 软件开发依据的标准或法律法规_第178篇丨直真科技:官宣!定制软件开发不应该采用完工百分比法确认收入...
  5. CodeForces - 1426F Number of Subsequences(dp)
  6. Mathematica函数大全
  7. 人工智能如何提升大数据存储与管理效率?
  8. 蓝奏网盘直链转换器 v1.1
  9. Unix网络编程 chart
  10. 字符串 kmp算法解析
  11. 【螺钉和螺母问题】【算法分析与设计】假设我们有n个直径各不相同的螺钉以及n个相应的螺母...
  12. 程序员必备的25个好网站汇总
  13. 数字藏品 传承优秀传统文化的新载体
  14. c语言中\0’ ,‘0’, “0” ,0的区别
  15. 如何用两台虚拟机搭建LAMP架构访问qq农场
  16. mysql的tps和qps_关于MySQL的TPS和QPS
  17. android nvram读写,MTK Android平台Nvram与Gensor数据获取
  18. 深度学习系列24:开源抠图算法
  19. 解题记录 P4017 最大食物链计数 拓扑排序
  20. SPARK Your Embedded Development Project with eBox-4300 Windows Embedded CE 6.0 R2 Jump Start Kit

热门文章

  1. 最大信息系数(MIC)
  2. Debian11 更换软件源
  3. git pull命令操作 git pull <remote> <branch>
  4. 有史以来影响世界的颠覆性技术 | 未来的高附加值颠覆性技术产业
  5. 5.5.1 jmeter组件-取样器-HTTP请求
  6. 生成token和验证token机制
  7. 技术文档编写经验总结
  8. 在列表中正数和负数区分出来,并且对它们进行分列
  9. 帝国理工创新领袖:数据驱动创新的五种模式
  10. vue屏幕长宽自适应