This commit is contained in:
parent
85c22d77ee
commit
456b3cb8c0
@ -24,6 +24,7 @@ const { title } = Astro.props;
|
||||
/>
|
||||
<title>{title}</title>
|
||||
<slot name="head" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<slot />
|
||||
|
||||
@ -6,6 +6,15 @@ export const description =
|
||||
"Cигналы, их типы и как они используются в Node.js для управления процессами и обработки событий.";
|
||||
---
|
||||
|
||||
<style>
|
||||
.fa-circle {
|
||||
font-size: 0.5em; /* Размер маркера */
|
||||
vertical-align: middle;
|
||||
margin-right: 8px;
|
||||
color: #2ecc71; /* Цвет маркера */
|
||||
}
|
||||
</style>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h2>Что такое сигналы?</h2>
|
||||
@ -101,6 +110,62 @@ export const description =
|
||||
</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>
|
||||
<h2>Обработка сигналов в node.js</h2>
|
||||
@ -181,5 +246,9 @@ export const description =
|
||||
|
||||
<section>
|
||||
<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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user