POSIX вообще не определяет внутреннюю структуру ядра, интерфейс ядро-пользовательское пространство или даже libc. Действительно, даже Windows имеет POSIX-совместимую подсистему. Просто убедитесь, что интерфейсы POSIX, определенные по вашей ссылке, работают как-то . Однако обратите внимание, что POSIX не требует, чтобы что-то было реализовано конкретно в ядре - вы можете реализовывать вещи в библиотеке C, используя, где возможно, более простые интерфейсы ядра вашей собственной разработки.
Просто так получилось, что многие POSIX-совместимые ОС (BSD, Linux и т. Д.) Имеют довольно тесную связь между многими из этих вызовов и уровнем ядра, но есть исключения. Например, в Linux вызов write()
- это прямой системный вызов, вызывающий функцию sys_write()
в ядре. Однако в Windows write()
реализован в DLL поддержки POSIX, которая преобразует дескриптор файла в дескриптор NT и вызывает NtWriteFile()
для его обслуживания, что, в свою очередь, вызывает соответствующий системный вызов в ntoskrnl.exe
. Таким образом, у вас есть много свободы в том, как что-то делать - что делает вещи сложнее, если что-нибудь:)