Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

最近在思考一个问题,电脑没有操作系统可以吗
答案是可以。
为什么要搞一个操作系统呢,
答案之一,操作系统为计算机和开发者提供了各种库和接口。
我们也可以自己写这些硬件接口驱动,底层库,抽象接口,这就是操作系统的雏形了。
今天就探究一下linux的那些库(windows,mac没开源,也探究不了啊😳)

Linux核心库

Linux内的各种层,还显示了在用户空间内核空间之间的分离。

###内核内API
在不同子系统间使用了数个内核内部API。其中一些是跨越多个发行版保持稳定的,另一些则不然。对于内核内API不作担保。维护者和贡献者可以在任何时候增加或变更它们[43]

内核内API的例子包括针对下列类别设备驱动程序的软件框架/API:


The Linux API is composed out of the System Call Interface of the Linux kernel, the GNU C Library (by GNU), libcgroup,[1] libdrmlibalsa and libevdev[2] (by freedesktop.org).

C标准库: GNU C

GNU C库即glibc,是GNU项目对C标准库的实现。并不是所有的标准C函数都能在glibc中找到:大部分数学函数其实由libm实现,它是另外的一个库。

目前glibc是Linux上使用最广泛的C库。

glibc 的主体,分布 /lib 与 /usr/lib 中,包括 libc 标准 C 函式库、libm 数学函式库、libcrypt 加密与编码函式库、libdb 资料库函式库、libpthread 行程多执行绪函式库、libnss 网路服务函式库 ….

The GNU C Library is a wrapper around the Linux kernel System Call Interface.
GNU C 库是 Linux 内核系统调用接口的包装器

Abstraction APIs 抽象接口

在某些情况下,内核过于底层,开发者需要更高一层的抽象。当然,这些仍然需要在底层 Linux API 之上工作。

OpenGL is indeed an abstraction API to make use of diverse GPUs of multiple vendors without the need to program for each one specifically.
OpenGL 确实是一种抽象 API,可以利用多个供应商的不同 GPU,而无需专门为每个 GPU 进行编程。

[1] https://zh.wikipedia.org/wiki/Linux%E5%86%85%E6%A0%B8
[2] https://en.wikipedia.org/wiki/Linux_kernel_interfaces#Linux_API
[3] Linux中形形色色的接口API和ABI
[4] 什么是 C/C++ 标准库
[5] 《linux/unix 系统编程手册》chapter 3

评论