Как ядро ​​Linux (используется в Ubuntu) управляет одновременным доступом к данным?

Я хочу знать, как ядро ​​linux, используемое в Ubuntu, управляет одновременным доступом к общим данным?

1
задан 10 September 2012 в 13:16

2 ответа

Сэр, я думаю, у вас неправильное представление о том, что такое блокировка и для чего нужен мьютекс. Кроме того, у вас неправильное представление о том, что такое Ubuntu.

Давайте начнем с последнего: Ubuntu - это дистрибутив на основе Linux . Все компоненты системной архитектуры низкого уровня выполняются ядром Linux. Ubuntu - это просто способ собрать различные части программного обеспечения, настроить, установить и обновить их надежным, единообразным и удобным для пользователя способом. Таким образом, ваш вопрос относится к Linux, а не к Ubuntu.

Мьютексы используются для того, чтобы гарантировать, что к общим ресурсам (таким как память) по ошибке не обращаются и не изменяют их одновременно. Поскольку процессы в целом не разделяют такие ресурсы, как память (ни в Windows, ни в Linux), проблема возникает, когда используются потоки , а не процессы. Это делается с помощью мьютексов, в этом вы правы; здесь вы найдете больше информации об этом. Linux использует потоки POSIX. Однако, используете ли вы - как программист - мьютексы или что-то еще (например, спин-блокировки или критические секции), это зависит от вас, а не от системы (см. здесь ), будь то Windows или Linux.

Что касается процессов, нужна блокировка файлов, но это уже другая история. И да, процессы реализованы по-разному в Windows и в Linux (что наиболее важно при планировании; см. эту презентацию, чтобы пролить некоторый свет на это).

0
ответ дан 10 September 2012 в 13:16

До версии 2.6 Linux была неперегрузочным ядром. Теперь он полностью вытесняет, поэтому задачу можно выполнять при запуске в ядре.

Ядро Linux предоставляет спин-блокировки и семафоров для блокировки в ядре. На машинах SMP основным механизмом блокировки является спин-блокировка , а ядро ​​спроектировано таким образом, что спин-блокировка удерживается только в течение коротких периодов времени.

Это не подходит для однопроцессорных машин. В однопроцессорных машинах ядро ​​отключает выгрузку ядра ; и вместо освобождения спин-блокировки , он отключает ядро ​​ с вытеснением .

0
ответ дан 10 September 2012 в 13:16

Другие вопросы по тегам:

Похожие вопросы: