Реализация Семафоров, блокировок и условных переменных

Java с AWS SDK:

  1. В s3 нет папок, только пары ключ / значение. Ключ может содержать косую черту (/), и в консоли управления он будет отображаться как папка, но программно это не папка, а строковое значение.

  2. 118

    При поиске (в зависимости от языка, который вы используете) вы можете осуществлять поиск по префиксу с разделителем. В Java это будет вызов метода listObjects(String storageBucket, String prefix, String delimiter).

    storageBucket - это название вашего сегмента, prefix - это ключ, который вы хотите найти, а delimiter используется для фильтрации вашего поиска на основе prefix.

9
задан Ankur Chauhan 2 June 2009 в 07:24
поделиться

8 ответов

Семафоры, блокировки, переменные состояния и т. Д. Являются концепциями операционной системы и обычно должны быть реализованы с точки зрения ее функций. ядро. Поэтому, как правило, невозможно изучить их изолированно - вам также необходимо учитывать код ядра. Вероятно, лучший способ сделать это - взглянуть на ядро ​​Linux с помощью такой книги, как Общие сведения о ядре Linux .

7
ответ дан 4 December 2019 в 11:43
поделиться

В самом простом случае семафор - это просто счетчик, который вы можете складывать и вычитать с помощью одной атомарной операции. В Википедии есть простое для понимания объяснение, которое в значительной степени покрывает ваш вопрос о них:

http://en.wikipedia.org/wiki/Semaphore_ (программирование)

4
ответ дан 4 December 2019 в 11:43
поделиться

Хорошей отправной точкой для изучения концепций ОС, вероятно, является книга Эндрю Таненбаума «Современные операционные системы» ". У него также есть другая книга о его собственной ОС (Minix), которая называется «Операционные системы: проектирование и реализация», в которой более подробно рассматривается кодирование. Вы сможете найти эти книги в своей местной библиотеке.

3
ответ дан 4 December 2019 в 11:43
поделиться

На первом уровне, если вы хотите реализовать подобные вещи, вам нужно будет использовать язык ассемблера. C и C ++ просто не предоставляют функций, необходимых для написания параллельного кода - за исключением использования библиотек, которые используют ассемблер в своей реализации.

2
ответ дан 4 December 2019 в 11:43
поделиться

Для базового понимания вы можете обратиться к книге Понятия операционной системы , Ави Зильбершац, Питер Баер Галвин, Грег Ган и действительно хорош.

Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.

Ави Зильбершац, Питер Баер Гальвин, Грег Гагн и действительно хорош.

Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.

Ави Зильбершац, Питер Баер Гальвин, Грег Гагн и действительно хорош.

Вы также можете посетить сайт Дэйва Маршалла для получения поддержки. См. Там раздел семафоров.

1
ответ дан 4 December 2019 в 11:43
поделиться

Вы можете найти множество книг IPC (Inter Process Communication), которые могут объяснить все тонкости того, что вам нужно. Есть одна классическая книга. Межпроцессное взаимодействие сетевого программирования в Unix, Ричард Стивенс. вы получите все, что вам нужно. :)

-2
ответ дан 4 December 2019 в 11:43
поделиться

Миникс довольно хорош. Более простой пример - это MicroC / OS. К нему прилагается учебник, в котором много деталей, есть все источники. В нем есть основные элементы, а код достаточно мал, чтобы его можно было понять за относительно короткий период времени.

http://www.micrium.com/products/rtos/kernel/rtos.html

http://en.wikipedia.org/wiki/MicroC/OS-II

Еще одна вещь, которую вы можете сделать, - это создать поддельную ОС в приложении на Linux. Я сделал это, установив базовый тик с помощью itimer, а затем поменяв местами потоки с помощью вызова функции swapcontext (man 2 swapcontext), который сохранит регистры в стеке. Это избавляет от уродливых вещей, и вам остается реализовать семафоры / мьютексы / таймеры и все такое. Это было довольно весело.

Несмотря на то, что говорится в некоторых сообщениях, ассемблер не требуется. Знание этого всегда поможет. Когда вы пишете даже высокоуровневые приложения, никогда не помешает понять, как работают внутренние компоненты, компиляторы и т. Д.

2
ответ дан 4 December 2019 в 11:43
поделиться

Забавная книга Стивенса - один из классических текстов, описывающих использование примитивов синхронизации и их использование. Он определенно считает, что их можно использовать для управления межпроцессным взаимодействием. Я склонен с ним соглашаться. Сеть, нет, IPC да. безусловно, да.

1
ответ дан 4 December 2019 в 11:43
поделиться