Документированный Apple низкоуровневый пользовательский API для iOS

Что эквивалентно Kernel32 Win32 на iOS?

В противном случае укажите: какой самый низкоуровневый, полностью документированный (Apple), стабильный, поддерживаемый пользовательский API на iOS для таких вещей, как:

  • Управление памятью
  • Асинхронный файловый ввод/вывод
  • Управление потоками
  • Оболочки для примитивов синхронизации и конструкций параллелизма

До сих пор то, что я нашел, представляло собой смесь задокументированного извне mach и BSD API вместе с разными заголовками (например, OSMalloc.h). Кроме того, ссылка, которую Apple предоставляет в своем Руководстве по программированию ядра на «Актуальные версии API Mach 3», не работает.


person Community    schedule 05.02.2016    source источник
comment
Хотите объяснить причину понижения?   -  person    schedule 05.02.2016
comment
Используйте свои отрицательные голоса всякий раз, когда вы сталкиваетесь с вопиюще небрежным сообщением, не затраченным усилий, или ответом, который явно и, возможно, опасно неверен. ; Я считаю, что вопрос правильно сформулирован, и я явно пытался, читая руководства по платформе и исследуя внешне задокументированные API.   -  person    schedule 05.02.2016
comment
Я не голосовал против, но, возможно, ваш вопрос немного широк. Вы не говорите, чего вы на самом деле пытаетесь достичь, и я подозреваю, что большинство программистов iOS на самом деле не думают так, как вы задаете свой вопрос. Для файла io вы обычно используете NSInputStream и NSOutputStream, но на более низком уровне у вас есть fopen и друзья, как в любой UNIX-подобной системе. Для многопоточности, синхронизации и параллелизма — Grand Central Dispatch. Что касается управления памятью, я не уверен ... Objective C или Swift по большей части справляются с этим автоматически. У вас есть malloc в Objective C   -  person Paulw11    schedule 05.02.2016
comment
@ Paulw11 Спасибо за ваш ответ. GCD, malloc и т. д. по-прежнему являются высокоуровневыми конструкциями — mach реализует все управление виртуальной памятью (vm_allocate(), т. д.) и потоки ядра. Я не знаю о fopen; BSD реализует управление файловой системой, насколько я могу судить, вы, вероятно, правы, думая, что fopen просто оболочка для системного вызова (в отличие от Windows, в которой функции C std lib, подобные этой, очень высокого уровня). Я очень, очень надеялся на централизованный документированный API для XNU (mach + BSD + I/O Kit), поддерживаемый Apple.   -  person    schedule 05.02.2016
comment
Я знаю, что Apple настоятельно рекомендует использовать GCD для многопоточности как на iOS, так и на OS X, но потоки Posix доступны. Это API потоковой обработки самого низкого уровня, который вы могли бы использовать в системе UNIX.   -  person Paulw11    schedule 05.02.2016
comment
@Paulw11Paulw11 Да, я не говорю, что GCD - плохой API - на самом деле он мне очень нравится. pthreads - это обертки вокруг потоков mach в iOS / OS X, кстати - это то, с чем на самом деле имеет дело ядро ​​mach.   -  person    schedule 05.02.2016


Ответы (1)


Начните с проекта Apple XNU с открытым исходным кодом. Посмотрите, как использовать:

mach< /strong> (импл)

  • Управление потоками
  • МПК
  • Виртуальная память
  • Параллельные конструкции
  • Сроки

BSD< /сильный>

  • POSIX-реализация
  • НОД
  • Асинхронный файловый ввод-вывод через kqueue/kevent
  • Сеть

Расширения языка Clang

  • Обертки для ldrex, ldaex, strex, stlex, clrex, dmb, dsb, isb
person Community    schedule 05.02.2016