/ / Системні виклики: варіанти UNIX, Linux, BSD і Solaris - linux, unix, solaris, bsd, system-calls

Системні виклики: варіанти UNIX, Linux, BSD та Solaris - linux, unix, solaris, bsd, системні виклики

Чи існують відмінності між кількістю системних викликів у основних варіантах * NIX?

Які системні виклики будуть підтримуватися універсально?

Відповіді:

10 за відповідь № 1

Все, що не є стандартним стандартом, може бутидодатковий системний виклик, або це можливо додаткові функціональні можливості бібліотеки над шаром системного виклику. Якщо ваша мета полягає в тому, щоб писати портативні палички кодів, щоб використовувати posix, і використовувати бібліотеку c (на відміну від прямих системних викликів) якомога більше.

Якщо ви просто цікаві, вони різко відрізняються. Вам не потрібно підтримувати багато системних викликів для того, щоб бути сумісним з posix. Вона вказує інтерфейси, які потрібно підтримувати, але чи ви це робите, подзвонивши в ядро ​​або перехопившись у спільну бібліотеку, залежить від вас.

Mac OS X навіть не гарантує двійковісумісність для системних викликів між релізами, вони вважають їх приватними інтерфейсами між системними бібліотеками і ОС. Те, що більшість людей вважає системними викликами, насправді є невеликими заглушками в динамічній бібліотеці, які викликають ядро, і якщо ви здійснюєте виклики системи безпосередньо, а не зв'язуєтеся з цією динамічною бібліотекою і викликаєте функції заглушки, то ваш код може розриватися між ОС релізи.

Така гнучкість означає ряд реалізацій ОССистемні виклики, які зовсім відрізняються від того, що їм потрібно для підтримки posix, потім справляються з відмінностями в їхніх бібліотеках. Наприклад, реалізація потоків Linux ґрунтується на системному виклику, який називається clone (), і вони мають справу з великою частиною бухгалтерського обліку, щоб зробити інтерфейс pthreads робочим у своїх бібліотеках.

Отже, якщо ваша мета - запровадити стандартбібліотека не посилається на будь-що інше і працює на декількох unixes, ви можете знайти речі трохи складніше в деяких випадках. Якщо вашою метою є написати щось, що посилається на стандартні бібліотеки на різних Unixes, ви можете отримати загально однорідний інтерфейс.


5 для відповіді № 2

Найкраще, що я можу знайти - це Unix-Linux-BSD Cheat-Sheets, для різних варіацій syscalls, для порівняння з Склини Solaris.

Для Unix кількість системних викликів зросла у чотири рази, більш-менш, залежно від того, що ви розумієте під "системним викликом".
Перше видання розширеного UNIX-програмування зосереджувало увагу лише на близько 70 справжніх системних викликах ядра, наприклад, для відкриття, читання та запису; але не бібліотечні виклики, як fopen, fread і fwrite.
Друге видання налічує близько 300. (Всього існує близько 1100 стандартних викликів функцій, але багато з них є частиною стандартної бібліотеки C або явно не є засобами ядра).
Сьогодні UNIX має нитки, сигнали реального часу, асинхронні входи-виходи та нові функції взаємодії між процесами (POSIX IPC), жодна з яких не існувала 20 років