This commit is contained in:
parent
85c22d77ee
commit
456b3cb8c0
@ -24,6 +24,7 @@ const { title } = Astro.props;
|
|||||||
/>
|
/>
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
<slot name="head" />
|
<slot name="head" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<slot />
|
<slot />
|
||||||
|
|||||||
@ -6,6 +6,15 @@ export const description =
|
|||||||
"Cигналы, их типы и как они используются в Node.js для управления процессами и обработки событий.";
|
"Cигналы, их типы и как они используются в Node.js для управления процессами и обработки событий.";
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.fa-circle {
|
||||||
|
font-size: 0.5em; /* Размер маркера */
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 8px;
|
||||||
|
color: #2ecc71; /* Цвет маркера */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Что такое сигналы?</h2>
|
<h2>Что такое сигналы?</h2>
|
||||||
@ -101,6 +110,62 @@ export const description =
|
|||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<h2>Чем являются сигналы на базовом уровне</h2>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<p>
|
||||||
|
Сигналы в Linux <em>на уровне ядра</em> — это механизм асинхронного уведомления
|
||||||
|
процессов, реализованный через прерывания на уровне ОС.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Реализация</h3>
|
||||||
|
<h4><i class="fas fa-circle"></i>Очередь сигналов в ядре</h4>
|
||||||
|
<p>
|
||||||
|
Ядро поддерживает очередь непрочитанных сигналов для каждого
|
||||||
|
процесса.
|
||||||
|
</p>
|
||||||
|
<h4><i class="fas fa-circle"></i>Обработка сигналов в процессе</h4>
|
||||||
|
<p>
|
||||||
|
Каждый процесс хранит информацию о полученных сигналах в полях <code
|
||||||
|
>sigaction</code
|
||||||
|
>, <code>pending_signals</code> и <code>blocked</code>.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Жизненный цикл сигнала</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<strong>Генерация</strong>
|
||||||
|
<p>
|
||||||
|
Например: через <code>kill()</code>, аппаратное прерывание,
|
||||||
|
исключение.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<strong>Доставка</strong>
|
||||||
|
<p>
|
||||||
|
Ядро помечает сигнал как "ожидающий" в <code>pending</code> маске
|
||||||
|
процесса.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<strong>Обработка</strong>
|
||||||
|
<p>
|
||||||
|
При переключении контекста ядро проверяет <code
|
||||||
|
>pending</code
|
||||||
|
> и вызывает обработчик (если не заблокирован).
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<section>
|
<section>
|
||||||
<h2>Обработка сигналов в node.js</h2>
|
<h2>Обработка сигналов в node.js</h2>
|
||||||
@ -181,5 +246,9 @@ export const description =
|
|||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h3>Ссылка на репозитарий с кодом и презентацией</h3>
|
<h3>Ссылка на репозитарий с кодом и презентацией</h3>
|
||||||
<p><a href="https://gitea.meettya.ru/Meettya/signal-slides">https://gitea.meettya.ru/Meettya/signal-slides</a></p>
|
<p>
|
||||||
|
<a href="https://gitea.meettya.ru/Meettya/signal-slides"
|
||||||
|
>https://gitea.meettya.ru/Meettya/signal-slides</a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user