Я осмотрел все вокруг и, похоже, не нашел ответа на мои вопросы. Я пытаюсь обернуть голову вокруг семафоров и где они фактически реализованы. Я понимаю, что семафоры являются функцией операционной системы, но могут также использоваться в программе уровня приложения. Мой вопрос: зачем нужно использовать семафоры в приложениях, когда операционная система (я думаю) должна заботиться о проблемах доступа?Семафоры операционной системы
ответ
Приложение представляет собой набор процессов, выполняющих разные коды.
Допустим, что в приложении есть 2 процесса - A и B. A и B хотят получить доступ к определенному файлу - «play.txt» альтернативным способом. Я имею в виду, что A обращается первым, а затем B, а затем A и так далее.
Операционная система не имеет представления об этом порядке выполнения. OS знает только о процессах ядра, поэтому пользователь должен реализовать его. Пользователь будет использовать семафоры в своей программе, которые будут прочитаны ОС, чтобы узнать все о двух процессах.
Семафор - это переменная или абстрактный тип данных, который используется для управления доступом несколькими процессами к общему ресурсу в параллельной системе, такой как операционная система мультипрограммирования.
Полезный способ думать о семафоре - это запись того, сколько единиц определенного ресурса доступно в сочетании с безопасными операциями (то есть без race conditions) отрегулировать эту запись, поскольку единицы измерения требуются или становятся свободными, и , при необходимости дождитесь появления единицы ресурса. Семафоры являются полезным инструментом в предотвращении условий гонки;
Семафор представляет собой тип данных, предоставляемых ОС, которая используется для синхронизации процессов.
Семафор имеет две атомные операции (атомные средства либо выполняются полностью, либо вообще не работают) wait и signal.dust, поскольку эти два контекстных переключателя операций не происходят, поскольку они являются атомарными.
Программист должен реализовать эти операции, чтобы ОС не переключилась в контекст во время некоторой важной операции. проблема-считыватель.
ПРИМЕЧАНИЕ. - Операционная система очень сложна, концепции ОС - дать нам представление о работе операционной системы. Но текущая работа системы может быть такой же, как и с каждым десятилетием обновление компьютерной системы в отношении ОС, а также аппаратных средств .OS реализует различные концепции, чтобы поддерживать его работу и обеспечить лучшее использование ЦП.
Sempahore используется для защиты доступа к структуре данных, разделяемой между двумя более независимыми потоками или процессами. Вы можете встретить фразу «критическая область», используемая в описаниях семафора; игнорируй это. Вы не защищаете код с помощью семафора, вы защищаете общие структуры данных.
Скажет у вас есть эти переменные:
int savings;
int house_payment;
и вы хотите переместить некоторые деньги из накопительного ведра в ведро house_payment. Пока это происходит, другой процесс должен знать ваш баланс в банке и баланс ссуды.
Процесс А берет платеж, вычитая стоимость сбережений. Процесс А затем добавляет значение в ведро house_payment.
Теперь предположим, что процесс B должен проверить баланс нагрузки и ваш сберегательный баланс. Поскольку процессы не синхронизированы, процесс B просматривает значения в момент времени A, который удаляет деньги из ваших сбережений, но до того, как процесс A может добавить платеж в ваш house_payment.
Что касается процесса В, то сберегательное ведро имеет слишком мало денег, а ведро house_payment недостаточно. Ваши деньги на оплату дома теряются в пути. Если процесс B затем снова выглядит, магически недостающие деньги появляются в ковре house_payment.
Для защиты от этого окна используется семафор. Процесс A берет семафор при передаче денег и освобождает семафор после того, как деньги помещаются в ведро house_payment.
Процесс B берет семафор перед доступом к сбережениям и ведрам house_payment и освобождает семафор, когда это делается.
С помощью семафора, защищающего доступ к общим данным, ни один процесс не увидит несогласованное состояние, вызванное проверкой ведер, пока деньги находятся в пути.
В настоящее время операционная система не может знать, когда применять семафорную охрану. Это то, что приложение должно управлять.
Да, операционная система должна заботиться о проблемах доступа, и семафоры просто помогают ей это делать. Попытайтесь понять это так: Существует железная дорога, и есть 4 поезда (скажем, поезд A, B, C, D), ожидающий доступа к железной дороге. Теперь условие состоит в том, что только один поезд может получить к нему доступ в данном экземпляре. Итак, что делает мастер станции, дает каждому водителю поезда лампочку. Если лампочка поезда (скажем, поезд А) включена, это означает, что поезд А имеет разрешение на использование железной дороги. В то время как A использует дорогу, поезд B, C, D будет ждать (в очереди ожидания) с выключенными лампочками. Протокол, когда поезд A выполняется по дороге, он выключает лампу и следующий поезд в очереди (скажем, поезд B), получает свою лампочку включенной и использует дорогу. Это продолжается, пока все поезда в очереди не получат шанс.
В луковицы семафоры в этом случае поезда являются процессы/работы с, а железная дорога критическая секция (общий ресурс).
- 1. jQuery - определение операционной системы и версии операционной системы
- 2. Инструментарий разработки операционной системы
- 3. Транспортир - Возврат операционной системы
- 4. Операционной системы внутри
- 5. Разработка операционной системы
- 6. rubyrails, Обнаружение операционной системы
- 7. Язык операционной системы?
- 8. прерывания операционной системы
- 9. Тупик операционной системы
- 10. Загрузка операционной системы
- 11. Отладка операционной системы
- 12. Словарь данных операционной системы
- 13. Безопасность новой операционной системы
- 14. Алгоритмы планирования операционной системы
- 15. Получение имени операционной системы
- 16. Размер операционной системы iOS
- 17. Материал операционной системы
- 18. Разработка операционной системы
- 19. Кэш операционной системы MySQL
- 20. Разработка пользовательской файловой системы для операционной системы
- 21. Размер блока файловой системы операционной системы?
- 22. Получить версию операционной системы компьютера
- 23. Широкая языковая локализация операционной системы?
- 24. Каковы трудности многопоточности операционной системы?
- 25. Процессы и трубы операционной системы
- 26. Общие причины сбоев операционной системы
- 27. ^M за версией операционной системы?
- 28. Проект курса для операционной системы
- 29. Ресурсы для разработки операционной системы
- 30. Реализация операционной системы Windows 8