印度电影《起跑线》掀“择校”话题

??? ??? ??? ?? ??? ???? ??? ???? ???? ??? ?? ??????? ?? ??????? ????. ??? ???? ? ??? API? ????? "?? ??? ??" API? "?? ??" API? ????.
??? API
[??]

??? API? ?? ??? ?? API??, ??? ???? ?????? ??? ??? ??? ???? ????? ??? ? ?? ??.[3] ??? ??? ??? ??? ?? ?????? GNU C ?????(glibc)? ?? ?????? ?????. ??? API? ??? ??? POSIX?? ??? ???? ?? ??? ???(POSIX?? ???? ?? ???? ???? ???? ?? ??? ?? API?? ????? ???? ???? ??? ?? ?? POSIX?? ???? ?? ???? ???? ????)? ???? ????.
??? API? ???? ? ?? ?? ????? ???? ?? ?? ????; ? ???? ?? ??? ?? ???? ????.[4] ??? ??? ?? ????? ????? ??? ??? ???? ???? ?? ?? ????? ??? ??? ??.
? ?? ??? ??-?? ?? ?????? POSIX API? ???. ?? ?? ????? ????? POSIX? ?? ??? ??? ?????? ??? ??? ??? ??? API? ???? ???? ???? ??. ??? ???? ???? ???? ??? ???? ? ??? API? ????? ?? ?? POSIX-API?? ???? ??. ? ??? ?? ???? udev, systemd ??? Weston? ??.[5] ??? ??? ?? ???? ????? POSIX API? ?? ??? API? ?????.[6]
??? ??? ??? ?? ?????
[??]??? ?? ?????? ???? ?? ??? ?? ??? ?? ??? ?? ??? ?? ????. ??? ??????? ??? ??? ??? ???? ??? ??? ?? ??????? ???.
??? ?? ??? ???? ??? ??? ??? ???? ????? ???? ??. ???? ?? ???? ?? ???? ??.[7][8][9][10]
C ?? ?????
[??]
GNU C ?????? ??? ??? ??? ???? ???; ??? ?? ??? ?? ?????? glibc? ??? ??? API? ???.
- GNU C ????? (glibc)
- ???? GNU C ?????
- uClibc
- klibc
- Newlib
- musl
- dietlibc
- libbionic ??? libhybris
POSIX? ?? ??
[??]?? ??? ?? ?????, POSIX? ?? ???? ???? ???? ????.
- cgroups ?????, ??? ??? ??? ??? ??? libcgroup[1]
- ?? ??? ???? ??? ??, ?? ??? ????? ?? ???? ? ioctls? POSIX ??? ? ??? ???.
- ?? ??? ??? ????? ??? ??? ??? ? ???, ??? POSIX ??? ? ??? ???.
- ??? ??
futex
(?? ??? ?? ???),epoll
,splice
,dnotify
,fanotify
, ???inotify
? ???? ??? ?? ????. - ??? ??
getrandom
? ??? 3.17?? ?????.[11] memfd
? kdbus ????? ?? ?????.[12]memfd_create
? ??? 3.17?? ??? ???.
readahead
? ?? "read-ahead"? ??? ??? ?????.
DRM? ? ???? ??? ?? ?? ??? ?? ?? ??? ?? ????? ??? ???? ??? ??? ????. DRM? ???? ?? ??????, ?? ?? ???? ?????.[13]
??? ABI
[??]

??? API?? ??? ?? ??? ?? ABI? ?? ??. ????? ?? ???? ?? ?????? ???? ????? ?? ??. ??? ABI ?? ???? ??? ??? ????. ??? ABI? ???? ????? ???? ?? ??? ?? ?????? GNU C ?????? ????? ??? ???, ??? ????? ???? ????? ???? ????.
ABI? ?? ??? ??? ?? ????, ????? x86, x86-64, MIPS, ARMv7-A (32??), ARMv8-A (64??) ?? ??. ??? ?? ????? ???? ?? ????.
??? ABI? ??? ?????? ?? ????? ???? ? ??? ??. ??-?? ?? ?????? ??????? GNU ???? ??? LLVM/??? ??.
?? ????? ?? ??? API?? ??? ?? ABI?? ??? ??.
?? ?? API
[??]??? ?? ?? API?? ?? ??????? ?? ??????? ?????? ?? ????. ???? ? ?????? ???? ?? ??? ??.
??? ??? ???? ????? ?? ?????? ?? ?? ????. ???? ??? ?? ?????? ?? ???? ?? ???? ??? ?? ????? ?? ???? API?? ????? ????. ??? ?? ????? ????? ?? ?????? ?? ???? ?? ?? API? ???? ?? ????. ??? ?? ???? ?? ?? ??? ??? ??? ????? ???? ?? ??? ??? ?? ??. ???? ??? ??? ???? ???? ?? ?? API? ?? ???.[14]
?? ?? ABI
[??]???? ?? ?? API? ?? ???, ???? ?? ?? ABI? ??? ? ??.
?? ??
[??]- ??? ????? ?????
- ????
- ??? ?? : ??? ????? ???? ???? ???? ?? ???? ?? ????.
- ??? API : ??????? ??? ?? ????? ?? ??? ??? API?? ?? ?
- windows.h : C? ?? ??????, ??? API??? ?? ???? ?? ???? ????.
- ?? : ???? ??????? ??? ? ???? ??? ?? ??
- libhybris – ???? ????? ??? ?? ???? ??? ?? ??
??
[??]- ↑ ? ? “ControlGroupInterface”. freedesktop.org.
- ↑ “libevdev”. freedesktop.org.
- ↑ Alessandro Rubini (2006? 11? 2?). “Kernel System Calls”. 《linux.it》. 2016? 2? 11?? ???.
- ↑ Linus Torvalds (2012? 12? 23?). “Re: [Regression w/ patch] Media commit causes user space to misbahave (was: Re: Linux 3.8-rc1)”. Linux kernel mailing list. 2016? 2? 11?? ???.
If a change results in user programs breaking, it's a bug in the kernel. We never EVER blame the user programs.
- ↑ “Choosing between portability and innovation”. LWN.net. 2011? 3? 2?.
- ↑ “Interview: Lennart Poettering - Lennart Poettering will give a talk about "Systemd: beyond init" at FOSDEM 2011.”. fosdem.org. 2011. 2014? 9? 6?? ?? ???? ??? ??. 2014? 6? 16?? ???.
In fact, the way I see things the Linux API has been taking the role of the POSIX API and Linux is the focal point of all Free Software development. Due to that I can only recommend developers to try to hack with only Linux in mind and experience the freedom and the opportunities this offers you. So, get yourself a copy of The Linux Programming Interface, ignore everything it says about POSIX compatibility and hack away your amazing Linux software. It's quite relieving!
- ↑ “System Call Organization”.
- ↑ “Making a universal list of syscalls?”. LKML. 2014? 2? 27?.
- ↑ “Flags as a system call API design pattern”. LWN.net. 2014? 2? 12?.
- ↑ “On vsyscalls and the vDSO”. LWN.net. 2011? 6? 8?.
- ↑ “[PATCH, RFC] random: introduce getrandom(2) system call”. Linux kernel mailing list. 2014? 7? 17?.
- ↑ “memfd.c”. 2014? 4? 22?? ?? ???? ??? ??. 2014? 7? 19?? ???.
- ↑ “NetBSD 7.0 Will Finally Have DRM/KMS Drivers”. Phoronix. 2014? 3? 19?.
- ↑ “The Linux Kernel Driver Interface”. 2013? 11? 4?? ?? ???? ??? ??. 2015? 4? 10?? ???.
?? ??
[??]- The API of Linux kernel 2.6.20 – sadly no current version available
- The Linux Programming Interface
- Interactive Linux kernel map with main API functions and structures
- Linux Device Drivers by Jonathan Corbet, Greg Kroah-Hartman and Alessandro Rubini, 3rd edition
- Linux Kernel Linked List Explained ??? 2025-08-14 - ??? ??
- TLPI: API changes, Linux API changes since The Linux Programming Interface was released in 2010