:::: MENU ::::

Что такое семафор в ОС

Семафоры — для разделения использования задачами разделяемых ресурсов.

Так например две задачи должны использовать один и тот-же USART. Одновременно они это делать не должны. И если вдруг задача 1 использует usart и произошла смена контекста на задачу 2. И задача 2 тоже хочет использовать USART, то семафор должен помешать задаче 2.

Семафор это переменная(счетчик). Вначале она инициализируется значением — максимальное количество задач, которые могут одновременно использовать разделяемый ресурс.

Каждый раз при входе задачи в разделяемый ресурс данная переменная уменьшается на 1, а при выходе увеличивается на 1. Вторая задача проверяет эту переменную и если она больше нуля — вход разрешен, меньше — запрещен. При входе и выходе задача 2, так-же изменяет эту переменную.



volatile и зависания

Ключевое слово volatile – это спецификатор, применяемый при объявлении переменной. Он сообщает компилятору, что значение переменной может изменяться в любой момент – без какого-либо действия со стороны кода, который компилятор обнаруживает поблизости.

Continue Reading


Битовые операции C

Во встраиваемых системах часто для экономии памяти приходится использовать битовые операции, например для реализации флага какого-либо события. Далее рассмотрен удобный способ работы с битами на макросах.

Continue Reading


Получение следующего элемента связанного списка из структуры, на которую указывает связанный список

Иногда бывает ситуация когда мы имеем адрес элемента структуры и есть необходимость получить адрес структуры, в которой находится данный элемент. Такая ситуация имеет место например, когда мы получаем в очереди из связанных списков адрес следующего элемента связанного списка, который в свою очередь является еще и элементом структуры, адрес которой нам необходимо узнать.

Continue Reading





Страницы:123456