POSIX
Kernel
内核是操作系统中最基础的那部分软件,为操作系统中其他功能提供最基本的支持。
内核负责操作系统中最基本的功能,例如
- 中断处理程序
- 设备驱动程序
- 时钟管理和进程调度等基本、公共或者运行频率较高的模块
- ……
这些基本程序是操作系统的基石,它们往往需要常驻内存,而且需要保护起来,这部分内容一般叫做内核。
System Call
内核是操作系统的一部分,除了操作系统外一般还存在用户空间。
每个用户一般都拥有自己的应用程序,这些应用程序最终都需要调用系统的内核。
不同的操作系统都拥有自己独特的内核,也会提供独特的接口给高级的应用程序调用。
内核提供给用户应用调用的接口仍然属于操作系统的一部分,这层接口就叫做 系统调用。
POSIX
对于同一套硬件,不同的公司可能提供了不同的操作系统,这些操作系统都可以安装到这一套硬件上。
对于应用开发者,基于其中一个系统开发的用户应用,很难直接移植到其他的操作系统上,因为内核提供的接口(系统调用)大概率不一样。移植应用需要修改原码使其兼容新的操作系统,然后重新编译打包。需要移植的操作系统越来越多,应用代码越来越丑陋。
POSIX 解决了上述问题,其全称是 可移植操作系统接口 (Portable Operating System Interface of UNIX)。
兼容 POSIX 的操作系统都会提供一套完全一样的接口给用户应用,用户应用开发者完全不需要关注内核怎么实现某个功能,只需要按照事先约定的标准(POSIX 标准),调用指定的接口即可。
不同的操作系统通过兼容 POSIX 标准,为开发者提供了一个统一的接口,用以调用某个系统功能。操作系统按照 POSIX 接口功能的需要,调用自己的内核(通过系统调用)来实现对应接口的功能。
我们可以将实现了 POSIX 标准的操作系统称之为 POSIX 操作系统,例如 Linux,Mac OS,就连 WIndows 现在也支持了 POSIX。
从目前来看,不实现 POSIX 标准的用户操作系统是没有前途的,因为应用移植困难,没有开发者写应用,就没有用户使用。
unistd.h
在 C/C++ 程序设计中,unistd.h 头文件提供了 POSIX 操作系统的接口名称,unistd 意为 Unix Standard。
所有遵循 POSIX 标准的操作系统和编译器都需要提供这个头文件。
评论区