Я знаю, что атомной обычно используется в контексте гонки условия и означает что-то вроде последовательности и детерминизма результата в соответствии с многопоточной/многопроцессорной средой. Ничего страшного. Но в последнее время я прочитал об атомных системных вызовов в Linux и не понял, что делает атомное на самом деле означает здесь, то есть как это атомарность является реализована. Означает ли это, что эта система вызывает просто блокировки на ресурсах (например, open() в целевом файле inode) или есть что-то еще, может быть, некоторые гарантии ядра? Я думаю об отключении прерываний, но не все прерывания могут быть отключены. Может быть, этого достаточно, потому что все прерывания, используемые ядром, могут быть отключены, а другие слишком важны и могут прервать наш атомный системный вызов?Что означает «атомный» системный вызов?
2
A
ответ
0
Это действительно зависит от системного вызова. Приводя man 3 read
, который цитирует руководство POSIX программирования:
I/O предназначен атомарным для обычных файлов и труб и FIFOs. Атомный означает, что все байты из одной операции, которые , вместе, объединяются вместе, без чередования от других операций ввода-вывода. Известным атрибутом терминалов является то, что этот не соблюдается, а терминалы явно (и неявно постоянно) исключены, что делает поведение неуказанным. Поведение для других типов устройств также оставлено неуказанным, но формулировка предназначена для обозначения того, что будущие стандарты могут выбирать , указывая атомарность (или нет).
Очевидно, что это применимо только к операциям ввода-вывода.
Смежные вопросы
- 1. В C#, что означает «атомный»?
- 2. Что означает «атомный» в программировании?
- 3. Что означает «системный язык»?
- 4. Что означает вызов мыши?
- 5. Что означает обратный вызов?
- 6. Системный вызов в процессе
- 7. Действительно ли атомный означает что-либо для синтезированного примитива?
- 8. «Атомный» вызов cout в MPI
- 9. Что означает вызов неопределенной функции?
- 10. Что означает сериализованный вызов метода?
- 11. Что означает «вызов прерывания BIOS»
- 12. Go окна системный вызов вызов
- 13. Труба() Системный вызов
- 14. открыт() системный вызов полиморфизм
- 15. Открытый системный вызов
- 16. Системный вызов вилка()
- 17. Системный вызов Linux Connect
- 18. Системный вызов от php
- 19. SocketException (системный вызов отменен)
- 20. Как разобрать системный вызов
- 21. Системный вызов печати INT
- 22. Системный вызов open() разрешений
- 23. Системный вызов stat() блокируется
- 24. Сравнение строк, системный вызов
- 25. awk системный вызов
- 26. Tornado Прерванный системный вызов
- 27. getdents() Системный вызов
- 28. системный вызов и контекстный переключатель
- 29. выберите прерванный системный вызов
- 30. системный вызов в питона
Я знаю об FIFO и моем вопросе о том, как эта _atomicity_ работает внутри. –