Является ли код для реализации библиотеки потоков частью кода ядра? Является ли реализация функции pthread_create() и др. Частью ядра?Как реализовать библиотеку потоков?
ответ
Нити иногда реализуются исключительно в пространстве пользователя (а затем также называются «зелеными потоками»), но обычно в пространстве ядра. wikipedia article объясняет это красиво.
В Linux pthread_create()
et al. реализуется как часть проекта glibc. Он использует (не переносимый, специфичный для Linux) syscall clone()
. (Linux fork()
также реализован в терминах clone()
). Некоторые из BSD также имеют аналогичный системный вызов, называемый rfork()
.
Я понимаю, что clone()
или rfork()
создадут новый процесс, но вы можете указать флаг, который говорит: «Используйте семантику копирования на запись, чтобы дать это другое адресное пространство». Итак, если вы хотите fork()
, вы указываете этот флаг, но если вы хотите создать поток, вы этого не сделаете, и вы получите общее адресное пространство.
(отредактировано для более подробной информации)
- 1. Как реализовать библиотеку Github?
- 2. Как реализовать стороннюю библиотеку Javascript?
- 3. Как реализовать библиотеку Gythub C++?
- 4. Как реализовать динамическую библиотеку Android
- 5. Реализовать IDisposable.Dispose для отсрочки потоков
- 6. java - реализовать интерфейсы для потоков
- 7. Как реализовать взаимодействие потоков семафора в Perl?
- 8. Как реализовать пул потоков в C?
- 9. Как реализовать конкретные подсчеты потоков в Gatling
- 10. Как реализовать надежный мониторинг потоков в C#?
- 11. Как реализовать несколько потоков в akka & scala?
- 12. Реализовать slice_shift_char используя БППП библиотеку
- 13. Как реализовать библиотеку Packery с Tumblr
- 14. Как реализовать библиотеку изображений Imagine в Codeigniter
- 15. Как реализовать библиотеку книг с многопоточной программой?
- 16. Как реализовать библиотеку Java в Robot Framework
- 17. Как реализовать общую библиотеку в Node.js?
- 18. Как реализовать пул потоков, который автоматически отключится в конце выполнения?
- 19. Реализовать отменяемый менеджер потоков для уникального объекта
- 20. Как добавить дополнительную библиотеку потоков в проект iPhone?
- 21. Как реализовать выноски в Unix
- 22. Как реализовать пул потоков python для проверки сетевого подключения?
- 23. Как реализовать простой протокол TCP с использованием потоков Akka?
- 24. Как реализовать ниже с использованием потоков в Java 8
- 25. Как реализовать клон для потоков на уровне ядра в xv6
- 26. Как реализовать очередь обработки рабочих потоков URL-адресов
- 27. Как реализовать Java неявный параллелизм, помимо параллельных потоков
- 28. Как использовать регистрационную библиотеку? (Реализовать ведение журнала в Python)
- 29. Как реализовать сторонние кеши в пользовательский класс или библиотеку
- 30. Как реализовать асинхронный обратный вызов, используя сетевую библиотеку Square's Retrofit