<!DOCTYPE html><html lang="ru"><head><meta charSet="utf-8"/><meta charSet="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover"/><link rel="preload" as="image" href="https://mc.yandex.ru/watch/44973232"/><link rel="preload" as="image" href="https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv"/><link rel="preload" as="image" href="https://top-fwz1.mail.ru/counter?id=3316675;js=na"/><link rel="preload" as="image" href="/_next/static/images/img/logo2022_without_text-ad6a01e8608432b9967c441a0f4760b4.svg"/><link rel="preload" as="image" href="/_next/static/images/img/otus-certificate-832bf0e82aba1cde68e7417b12683728.png"/><link rel="preload" as="image" href="/_next/static/images/img/upk-diploma-d6bca6c33b9795bec7d04fb91a431230.png"/><link rel="preload" as="image" href="/_next/static/images/img/light-3dd56d782c43dc1e78b7e0da7bb3fb50.svg"/><link rel="stylesheet" href="/_next/static/css/8cc264f7ea39f5c5.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/369ab862ca923128.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/1eb8edb263c0b31d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3018d93ec30a05b2.js"/><script src="/_next/static/chunks/b6261da7-560230abf0251a57.js" async=""></script><script src="/_next/static/chunks/8868-b22af6500d7f0373.js" async=""></script><script src="/_next/static/chunks/main-app-46cd73774d8d37e3.js" async=""></script><script src="/_next/static/chunks/b57a0ff0-f64b6c8491bc987c.js" async=""></script><script src="/_next/static/chunks/7761-f25228226f9fd7b1.js" async=""></script><script src="/_next/static/chunks/3260-e663d3aeeb454c53.js" async=""></script><script src="/_next/static/chunks/7844-5a1706e76e0167fe.js" async=""></script><script src="/_next/static/chunks/7985-5aa503ef1e488f37.js" async=""></script><script src="/_next/static/chunks/8012-ba13e2afafa1b32c.js" async=""></script><script src="/_next/static/chunks/4944-c0f1c1dc3dd5ddc8.js" async=""></script><script src="/_next/static/chunks/4888-09a084700e30f3b2.js" async=""></script><script src="/_next/static/chunks/2633-d7e691d1179a550f.js" async=""></script><script src="/_next/static/chunks/3242-4559e666a92af915.js" async=""></script><script src="/_next/static/chunks/8308-a718381dbc33cfb4.js" async=""></script><script src="/_next/static/chunks/app/layout-37aaf27e992c5aeb.js" async=""></script><script src="/_next/static/chunks/4419-cfc7a5f44d08cc1b.js" async=""></script><script src="/_next/static/chunks/5632-5ae1d5cde11086be.js" async=""></script><script src="/_next/static/chunks/3118-3c71903ee058260c.js" async=""></script><script src="/_next/static/chunks/7670-88498cb7f740ea45.js" async=""></script><script src="/_next/static/chunks/5873-a84150cef512c203.js" async=""></script><script src="/_next/static/chunks/8212-ad195a1ac639b812.js" async=""></script><script src="/_next/static/chunks/428-b85ac0b1d8ebbe87.js" async=""></script><script src="/_next/static/chunks/9374-dedf9cc8b15c395b.js" async=""></script><script src="/_next/static/chunks/4485-9ab23cf29f3d4493.js" async=""></script><script src="/_next/static/chunks/4089-38c618b1e8038db2.js" async=""></script><script src="/_next/static/chunks/1598-4e9e0a333affae09.js" async=""></script><script src="/_next/static/chunks/7234-0a01e49f09a75afe.js" async=""></script><script src="/_next/static/chunks/1701-caea77cd580b46da.js" async=""></script><script src="/_next/static/chunks/1589-5e9d65a97827bc49.js" async=""></script><script src="/_next/static/chunks/8817-f756b1c7094aa889.js" async=""></script><script src="/_next/static/chunks/3742-cf316c1014abe42c.js" async=""></script><script src="/_next/static/chunks/7624-a0236e3eec1f6b3c.js" async=""></script><script src="/_next/static/chunks/5588-acf8559ddd553204.js" async=""></script><script src="/_next/static/chunks/1613-9988dde0bcc22cd3.js" async=""></script><script src="/_next/static/chunks/app/not-found-6846642e53dd56ba.js" async=""></script><script src="/_next/static/chunks/app/error-37bbf3f7388748a0.js" async=""></script><script src="/_next/static/chunks/5408-7304a011593a4e7b.js" async=""></script><script src="/_next/static/chunks/4514-28d343fc6e2d14e0.js" async=""></script><script src="/_next/static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js" async=""></script><link rel="preload" href="https://smartcaptcha.yandexcloud.net/captcha.js?render=onload&onload=onloadFunction" as="script"/><link rel="preload" href="https://store-b2b.ru/tag.js?id=wsse7xcbtr07r1&nomodule" as="script"/><title>Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС</title><meta name="description" content="Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС"/><link rel="manifest" href="/site.webmanifest" crossorigin="use-credentials"/><meta name="is_app_seo_default" content="false"/><meta name="vk:image" content="/__new_static__/img/meta-image.png"/><meta name="fb:app_id" content="486413851704844"/><link rel="canonical" href="https://otus.ru/lessons/linux-kernel/"/><meta name="yandex-verification" content="3019a35aeda6b45d"/><meta property="og:title" content="Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС"/><meta property="og:description" content="Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС"/><meta property="og:url" content="https://otus.ru/lessons/linux-kernel/"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС"/><meta name="twitter:description" content="Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС"/><link rel="image_src" href="/__new_static__/img/meta-image.png"/><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"/><link rel="preload" href="/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif" as="image"/><link rel="icon" type="image/png" sizes="16x16" href="/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png"/><link rel="icon" type="image/png" sizes="32x32" href="/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png"/><link rel="apple-touch-icon" href="/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png"/><link rel="apple-touch-icon" sizes="57x57" href="/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png"/><link rel="apple-touch-icon" sizes="60x60" href="/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png"/><link rel="apple-touch-icon" sizes="72x72" href="/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png"/><link rel="apple-touch-icon" sizes="76x76" href="/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png"/><link rel="apple-touch-icon" sizes="114x114" href="/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png"/><link rel="apple-touch-icon" sizes="120x120" href="/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png"/><link rel="apple-touch-icon" sizes="144x144" href="/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png"/><link rel="apple-touch-icon" sizes="152x152" href="/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png"/><link rel="apple-touch-icon" sizes="180x180" href="/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png"/><link rel="mask-icon" href="/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg" color="#000000"/><meta name="msapplication-TileColor" content="#ffffff"/><meta name="msapplication-TileImage" content="/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png"/><script src="https://vk.com/js/api/openapi.js?162" type="text/javascript"></script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script><style data-styled="" data-styled-version="5.3.10">.iJGzvz{display:inline-block;-webkit-animation-name:rotate;animation-name:rotate;-webkit-animation-duration:1.2s;animation-duration:1.2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease;animation-timing-function:ease;will-change:transform;}/*!sc*/
@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}80%{-webkit-transform:rotate(500deg);-ms-transform:rotate(500deg);transform:rotate(500deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}/*!sc*/
@keyframes rotate{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}80%{-webkit-transform:rotate(500deg);-ms-transform:rotate(500deg);transform:rotate(500deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}/*!sc*/
data-styled.g1[id="sc-10qj18o-0"]{content:"iJGzvz,"}/*!sc*/
.bLNTdk{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g2[id="sc-10qj18o-1"]{content:"bLNTdk,"}/*!sc*/
.bmVffP{height:24px;width:24px;position:relative;}/*!sc*/
.gsweRb{height:88px;width:88px;position:relative;}/*!sc*/
.cvcsLz{height:28px;width:28px;position:relative;}/*!sc*/
data-styled.g3[id="sc-i28ik1-0"]{content:"bmVffP,gsweRb,cvcsLz,"}/*!sc*/
.gNVXtU{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}/*!sc*/
.gNVXtU > svg{display:block;}/*!sc*/
data-styled.g4[id="sc-i28ik1-1"]{content:"gNVXtU,"}/*!sc*/
.ViUGY{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.ViUGY{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.ViUGY{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.ViUGY{font-weight:700;}}/*!sc*/
@media (max-width:751px){.ViUGY{font-weight:700;}}/*!sc*/
.eMZyoN{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eMZyoN{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eMZyoN{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eMZyoN{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eMZyoN{font-weight:400;}}/*!sc*/
.kswXpy{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:62px;line-height:68px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.kswXpy{font-size:56px;line-height:60px;}}/*!sc*/
@media (max-width:751px){.kswXpy{font-size:32px;line-height:36px;}}/*!sc*/
@media (max-width:1201px){.kswXpy{font-weight:700;}}/*!sc*/
@media (max-width:751px){.kswXpy{font-weight:700;}}/*!sc*/
.enpOeQ{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:20px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.enpOeQ{font-size:20px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.enpOeQ{font-size:16px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.enpOeQ{font-weight:700;}}/*!sc*/
@media (max-width:751px){.enpOeQ{font-weight:700;}}/*!sc*/
.doSDez{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.doSDez{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.doSDez{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.doSDez{font-weight:400;}}/*!sc*/
@media (max-width:751px){.doSDez{font-weight:400;}}/*!sc*/
.jmLQpp{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.jmLQpp{font-size:40px;line-height:48px;}}/*!sc*/
@media (max-width:751px){.jmLQpp{font-size:20px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.jmLQpp{font-weight:700;}}/*!sc*/
@media (max-width:751px){.jmLQpp{font-weight:700;}}/*!sc*/
.fPZiIk{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;font-weight:500;}/*!sc*/
@media (max-width:1201px){.fPZiIk{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:751px){.fPZiIk{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.fPZiIk{font-weight:500;}}/*!sc*/
@media (max-width:751px){.fPZiIk{font-weight:500;}}/*!sc*/
.bTMeHF{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.bTMeHF{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.bTMeHF{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:1201px){.bTMeHF{font-weight:700;}}/*!sc*/
@media (max-width:751px){.bTMeHF{font-weight:700;}}/*!sc*/
.hQBzUY{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.hQBzUY{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.hQBzUY{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.hQBzUY{font-weight:700;}}/*!sc*/
@media (max-width:751px){.hQBzUY{font-weight:700;}}/*!sc*/
.wJZyp{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.wJZyp{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:751px){.wJZyp{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.wJZyp{font-weight:400;}}/*!sc*/
@media (max-width:751px){.wJZyp{font-weight:400;}}/*!sc*/
.dvqddq{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.dvqddq{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.dvqddq{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.dvqddq{font-weight:700;}}/*!sc*/
@media (max-width:751px){.dvqddq{font-weight:700;}}/*!sc*/
.gGtEnS{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.gGtEnS{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:751px){.gGtEnS{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.gGtEnS{font-weight:700;}}/*!sc*/
@media (max-width:751px){.gGtEnS{font-weight:700;}}/*!sc*/
.iFeEEh{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.iFeEEh{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.iFeEEh{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.iFeEEh{font-weight:700;}}/*!sc*/
@media (max-width:751px){.iFeEEh{font-weight:700;}}/*!sc*/
.iwrrOS{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.iwrrOS{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.iwrrOS{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.iwrrOS{font-weight:400;}}/*!sc*/
@media (max-width:751px){.iwrrOS{font-weight:400;}}/*!sc*/
.ioOegJ{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.ioOegJ{font-size:40px;line-height:48px;}}/*!sc*/
@media (max-width:751px){.ioOegJ{font-size:32px;line-height:36px;}}/*!sc*/
@media (max-width:1201px){.ioOegJ{font-weight:700;}}/*!sc*/
@media (max-width:751px){.ioOegJ{font-weight:700;}}/*!sc*/
.CWfAH{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.CWfAH{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.CWfAH{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.CWfAH{font-weight:400;}}/*!sc*/
@media (max-width:751px){.CWfAH{font-weight:400;}}/*!sc*/
.bDRAny{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.bDRAny{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.bDRAny{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.bDRAny{font-weight:700;}}/*!sc*/
@media (max-width:751px){.bDRAny{font-weight:700;}}/*!sc*/
data-styled.g14[id="sc-1x9oq14-0"]{content:"ViUGY,eMZyoN,kswXpy,enpOeQ,doSDez,jmLQpp,fPZiIk,bTMeHF,hQBzUY,wJZyp,dvqddq,gGtEnS,iFeEEh,iwrrOS,ioOegJ,CWfAH,bDRAny,"}/*!sc*/
.igoKuA{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out;will-change:background,border;overflow:hidden;width:100%;cursor:text;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border:1px solid #afafaf;background:#fff;color:#0f0f10;text-align:left;font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;height:56px;border-radius:12px;}/*!sc*/
@media (max-width:1201px){.igoKuA{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.igoKuA{font-size:16px;line-height:24px;}}/*!sc*/
data-styled.g16[id="sc-7tecya-1"]{content:"igoKuA,"}/*!sc*/
.dUXfnG{-webkit-transition:padding 0.2s ease-out,color 0.2s ease-out;transition:padding 0.2s ease-out,color 0.2s ease-out;will-change:padding,color;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;max-height:100%;padding:16px 24px;}/*!sc*/
data-styled.g17[id="sc-7tecya-2"]{content:"dUXfnG,"}/*!sc*/
.ewcVbw{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:font 0.2s ease-out;transition:font 0.2s ease-out;will-change:font;color:#afafaf;}/*!sc*/
data-styled.g18[id="sc-7tecya-3"]{content:"ewcVbw,"}/*!sc*/
.bkPfUD{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;width:100%;background:transparent;overflow:hidden;text-overflow:ellipsis;margin-top:auto;opacity:0;}/*!sc*/
.bkPfUD::-webkit-input-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD::-moz-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD:-ms-input-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD::placeholder{color:#afafaf;}/*!sc*/
.bkPfUD:disabled{background:transparent;}/*!sc*/
data-styled.g19[id="sc-7tecya-4"]{content:"bkPfUD,"}/*!sc*/
.hzdVAl{display:block;}/*!sc*/
data-styled.g23[id="sc-aobi4b-0"]{content:"hzdVAl,"}/*!sc*/
.eibrwt{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eibrwt{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.eibrwt{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eibrwt{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eibrwt{font-weight:400;}}/*!sc*/
.fvUGfA{font-family:'Roboto',sans-serif;font-size:12px;line-height:16px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.fvUGfA{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:751px){.fvUGfA{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.fvUGfA{font-weight:400;}}/*!sc*/
@media (max-width:751px){.fvUGfA{font-weight:400;}}/*!sc*/
data-styled.g26[id="sc-1x9oq14-0-Component"]{content:"eibrwt,fvUGfA,"}/*!sc*/
.chwycb{padding-right:48px;}/*!sc*/
data-styled.g29[id="sc-1uo0fn1-0"]{content:"chwycb,"}/*!sc*/
.jZoKM{position:absolute;top:50%;right:14px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}/*!sc*/
data-styled.g30[id="sc-1uo0fn1-1"]{content:"jZoKM,"}/*!sc*/
.dzJeEt{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}/*!sc*/
data-styled.g40[id="sc-1bqzqc9-0"]{content:"dzJeEt,"}/*!sc*/
.haeyZv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;}/*!sc*/
.haeyZv .swiper{height:100%;}/*!sc*/
.haeyZv .swiper-slide{opacity:1;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;}/*!sc*/
.haeyZv .swiper-slide:nth-child(n + 3){opacity:0.3;}/*!sc*/
.giOpNO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;}/*!sc*/
.giOpNO .swiper{height:100%;}/*!sc*/
.giOpNO .swiper-slide{opacity:1;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;}/*!sc*/
data-styled.g41[id="sc-1bkbgbz-0"]{content:"haeyZv,giOpNO,"}/*!sc*/
.jssxGI{min-width:100%;width:100%;min-height:100%;height:100%;display:block;margin:0 auto;margin-bottom:56px;}/*!sc*/
@media (min-width:1200px){.jssxGI{margin-bottom:72px;}}/*!sc*/
.ehnata{min-width:100%;width:100%;min-height:100%;height:100%;display:block;margin:0 auto;margin-bottom:68px;}/*!sc*/
data-styled.g42[id="sc-1bkbgbz-1"]{content:"jssxGI,ehnata,"}/*!sc*/
.fzLRzy{-webkit-transition:color 0.2s ease-out,opacity 0.2s ease-out;transition:color 0.2s ease-out,opacity 0.2s ease-out;will-change:color,opacity;width:auto;height:auto;padding:12px;cursor:pointer;-webkit-tap-highlight-color:transparent;background:transparent;color:#740FB4;}/*!sc*/
@media (min-width:1200px){.fzLRzy:hover{color:#740FB4;}}/*!sc*/
.fzLRzy:disabled{opacity:0.4;pointer-events:none;cursor:default;}/*!sc*/
data-styled.g43[id="sc-1bkbgbz-2"]{content:"fzLRzy,"}/*!sc*/
.iPzpLW{margin:-12px -12px -12px 24px;}/*!sc*/
data-styled.g44[id="sc-1bkbgbz-3"]{content:"iPzpLW,"}/*!sc*/
.biZjNh{margin:-12px 24px -12px -12px;}/*!sc*/
data-styled.g45[id="sc-1bkbgbz-4"]{content:"biZjNh,"}/*!sc*/
.hGKrlu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:400px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g46[id="sc-1bkbgbz-5"]{content:"hGKrlu,"}/*!sc*/
.dtHGxE{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);bottom:0;right:50%;}/*!sc*/
.dtHGxE .sc-1bkbgbz-5 > *{background-color:#740FB4 !important;}/*!sc*/
data-styled.g47[id="sc-1bkbgbz-6"]{content:"dtHGxE,"}/*!sc*/
.ldwIhb{color:#4749c0;position:relative;}/*!sc*/
.ldwIhb:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.ldwIhb:active{color:#585cff;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g49[id="sc-1vdp0yy-0"]{content:"ldwIhb,"}/*!sc*/
.eJDLVL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transform:rotate( 0deg );-ms-transform:rotate( 0deg );transform:rotate( 0deg );}/*!sc*/
data-styled.g120[id="sc-8zcw6d-0"]{content:"eJDLVL,"}/*!sc*/
.dxxUfg{width:82px;height:auto;}/*!sc*/
data-styled.g179[id="sc-136rsxq-0"]{content:"dxxUfg,"}/*!sc*/
.hERPbJ{-webkit-animation:iJeNST 32s infinite linear;animation:iJeNST 32s infinite linear;-webkit-transform-box:fill-box;-ms-transform-box:fill-box;transform-box:fill-box;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;will-change:animation,transform;}/*!sc*/
data-styled.g180[id="sc-1gml7ra-0"]{content:"hERPbJ,"}/*!sc*/
.XomuX{overflow:visible;}/*!sc*/
data-styled.g183[id="sc-1gml7ra-3"]{content:"XomuX,"}/*!sc*/
.hOtCic{margin:0 auto;position:relative;}/*!sc*/
@media (min-width:1200px){.hOtCic{max-width:1120px;width:1120px;}}/*!sc*/
@media (max-width:1201px){.hOtCic{max-width:680px;width:680px;}}/*!sc*/
@media (max-width:751px){.hOtCic{max-width:352px;width:352px;}}/*!sc*/
data-styled.g184[id="sc-x072mc-0"]{content:"hOtCic,"}/*!sc*/
.dKnRmO{-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:30;position:-webkit-sticky;position:sticky;top:-1px;height:80px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:0 4px 4px rgba(0,0,0,0.05);background:#fff;color:#232323;}/*!sc*/
@media (max-width:1201px){.dKnRmO{height:64px;}}/*!sc*/
@media (max-width:751px){.dKnRmO{height:60px;}}/*!sc*/
data-styled.g185[id="sc-r03h0s-0"]{content:"dKnRmO,"}/*!sc*/
.eFDQwF{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eFDQwF{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eFDQwF{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eFDQwF{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eFDQwF{font-weight:400;}}/*!sc*/
data-styled.g186[id="sc-1x9oq14-0-styled-div"]{content:"eFDQwF,"}/*!sc*/
.bMTmMH{position:unset;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g187[id="sc-r03h0s-1"]{content:"bMTmMH,"}/*!sc*/
.iLJJBX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 89px 0 0;}/*!sc*/
@media (max-width:1201px){.iLJJBX{margin:0 24px 0 0;}}/*!sc*/
data-styled.g188[id="sc-r03h0s-2"]{content:"iLJJBX,"}/*!sc*/
.kVvakX{-webkit-align-self:normal;-ms-flex-item-align:normal;align-self:normal;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g189[id="sc-r03h0s-3"]{content:"kVvakX,"}/*!sc*/
.bYKNcH{z-index:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 40px 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/
@media (max-width:1201px){.bYKNcH{margin:0 24px 0 0;}}/*!sc*/
.bYKNcH::after{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;content:'';position:absolute;bottom:0;left:0;width:100%;height:4px;background:transparent;}/*!sc*/
.bYKNcH:last-child{margin:0;}/*!sc*/
.cGgLky{z-index:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 40px 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/
@media (max-width:1201px){.cGgLky{margin:0 24px 0 0;}}/*!sc*/
.cGgLky::after{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;content:'';position:absolute;bottom:0;left:0;width:100%;height:4px;background:transparent;}/*!sc*/
.cGgLky:hover::after{background:#4749c0;}/*!sc*/
.cGgLky:last-child{margin:0;}/*!sc*/
data-styled.g191[id="sc-r03h0s-5"]{content:"bYKNcH,cGgLky,"}/*!sc*/
.kpxsrg.kpxsrg{z-index:-1;position:absolute;width:615px;height:615px;}/*!sc*/
data-styled.g192[id="sc-r03h0s-6"]{content:"kpxsrg,"}/*!sc*/
.jHaHbB{margin:0 auto 0 0;color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jHaHbB:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jHaHbB:active{color:inherit;}/*!sc*/
@media (max-width:1201px){.jHaHbB{display:none;}}/*!sc*/
data-styled.g193[id="sc-r03h0s-7"]{content:"jHaHbB,"}/*!sc*/
.dZepSJ{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;cursor:pointer;padding:14px 16px;border-radius:20px;}/*!sc*/
@media (min-width:1200px){.dZepSJ:hover{background:#fff;}}/*!sc*/
@media (max-width:1201px){.dZepSJ{padding:10px 0;}}/*!sc*/
.gXNPrh{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;cursor:pointer;padding:14px 16px;border-radius:20px;font-weight:700;}/*!sc*/
@media (min-width:1200px){.gXNPrh:hover{background:#fff;}}/*!sc*/
@media (max-width:1201px){.gXNPrh{padding:10px 0;}}/*!sc*/
data-styled.g194[id="sc-4zz0i4-0"]{content:"dZepSJ,gXNPrh,"}/*!sc*/
.fXsjgC{margin:0 32px 0 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;}/*!sc*/
.fXsjgC:last-child{margin:0;}/*!sc*/
@media (max-width:751px){.fXsjgC{margin:0 0 24px;}}/*!sc*/
data-styled.g195[id="sc-1kjc6dh-0"]{content:"fXsjgC,"}/*!sc*/
.bxwCjw{width:100%;margin:0 0 12px;padding:0 0 12px;border-bottom:1px solid #ececec;color:#afafaf;}/*!sc*/
@media (max-width:1201px){.bxwCjw{margin:0 0 24px;padding:0;border-bottom:none;}}/*!sc*/
@media (max-width:751px){.bxwCjw{margin:0 0 8px;}}/*!sc*/
data-styled.g196[id="sc-1kjc6dh-1"]{content:"bxwCjw,"}/*!sc*/
.lhsLfs{display:grid;margin:0 -16px;grid-template-columns:repeat(2,288px);}/*!sc*/
@media (max-width:1201px){.lhsLfs{margin:0;}}/*!sc*/
@media (max-width:751px){.lhsLfs{gap:4px;}}/*!sc*/
.eANJVj{display:grid;margin:0 -16px;grid-template-columns:repeat(1,288px);}/*!sc*/
@media (max-width:1201px){.eANJVj{margin:0;}}/*!sc*/
@media (max-width:751px){.eANJVj{gap:4px;}}/*!sc*/
data-styled.g197[id="sc-1kjc6dh-2"]{content:"lhsLfs,eANJVj,"}/*!sc*/
.LDEpF{background-color:#ececec;border-radius:8px;position:relative;overflow:hidden;color:rgba(0,0,0,0);width:100%;height:100%;position:absolute;top:0;left:0;}/*!sc*/
.iXhGSD{background-color:#ececec;border-radius:8px;position:relative;overflow:hidden;color:rgba(0,0,0,0);}/*!sc*/
data-styled.g198[id="sc-1xopqwy-0"]{content:"LDEpF,iXhGSD,"}/*!sc*/
.jTtOKw{position:relative;display:block;}/*!sc*/
.ePGOOQ{position:static;display:block;}/*!sc*/
data-styled.g199[id="sc-hrqzy3-0"]{content:"jTtOKw,ePGOOQ,"}/*!sc*/
.faPWUN{min-width:100%;width:100%;min-height:100%;height:100%;position:relative;z-index:0;}/*!sc*/
.faPWUN *{opacity:0;pointer-events:none;}/*!sc*/
data-styled.g200[id="sc-hrqzy3-1"]{content:"faPWUN,"}/*!sc*/
.fEESDM{position:absolute;z-index:1;display:none;top:100%;left:0;width:100%;}/*!sc*/
data-styled.g236[id="sc-piuiz2-0"]{content:"fEESDM,"}/*!sc*/
.fDVGGf{z-index:0;-webkit-align-self:baseline;-ms-flex-item-align:baseline;align-self:baseline;overflow:hidden;position:relative;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:40px;background:#f8f8f8;box-shadow:0px 16px 16px rgba(0,0,0,0.25);border-radius:0px 0px 20px 20px;}/*!sc*/
@media (min-width:1200px){.fDVGGf{max-width:1200px;margin:0 auto;}}/*!sc*/
@media (max-width:1201px){.fDVGGf{padding:24px 36px;}}/*!sc*/
@media (max-width:751px){.fDVGGf{height:100%;padding:24px 0;border-radius:0;}}/*!sc*/
data-styled.g237[id="sc-piuiz2-1"]{content:"fDVGGf,"}/*!sc*/
.fhxPhf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g238[id="sc-piuiz2-2"]{content:"fhxPhf,"}/*!sc*/
.ggDqfB{right:-101px;top:-105px;bottom:-201px;}/*!sc*/
data-styled.g240[id="sc-1891c19-0"]{content:"ggDqfB,"}/*!sc*/
.dwrtLP{-webkit-transition:color 0.2s ease-out,-webkit-transform 0.2s ease-out;-webkit-transition:color 0.2s ease-out,transform 0.2s ease-out;transition:color 0.2s ease-out,transform 0.2s ease-out;will-change:color,transform;margin:0 0 0 4px;}/*!sc*/
@media (max-width:751px){.dwrtLP{display:none;}}/*!sc*/
data-styled.g241[id="sc-1youhxc-0"]{content:"dwrtLP,"}/*!sc*/
.cMNIlZ{-webkit-transition:font-weight 0.1s ease-out;transition:font-weight 0.1s ease-out;will-change:font-weight;}/*!sc*/
.cMNIlZ::before{content:attr(title);position:relative;display:block;font-weight:700;height:0;overflow:hidden;visibility:hidden;}/*!sc*/
data-styled.g242[id="sc-1youhxc-1"]{content:"cMNIlZ,"}/*!sc*/
@media (min-width:1200px){.gAMwby:hover .sc-1youhxc-0{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);}.gAMwby:hover .sc-1youhxc-0{color:#4749c0;}}/*!sc*/
.ewISlX:hover .sc-1youhxc-1{font-weight:700;}/*!sc*/
@media (min-width:1200px){.ewISlX:hover .sc-1youhxc-0{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);}.ewISlX:hover .sc-1youhxc-0{color:#4749c0;}}/*!sc*/
@media (max-width:1201px){.ewISlX{display:none;}}/*!sc*/
data-styled.g243[id="sc-1youhxc-2"]{content:"gAMwby,ewISlX,"}/*!sc*/
.cgYLnJ{grid-auto-flow:column;grid-template-rows:repeat(8,1fr);}/*!sc*/
@media (max-width:751px){.cgYLnJ{grid-auto-flow:row;grid-template-columns:1fr;grid-template-row:unset;}}/*!sc*/
data-styled.g244[id="sc-ig0m9y-0"]{content:"cgYLnJ,"}/*!sc*/
.czpnNJ{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#0f0f10;background:#ffd709;width:100%;}/*!sc*/
.czpnNJ:active{color:#0f0f10;}/*!sc*/
.czpnNJ:not(:disabled):hover{background:#ffea7d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.czpnNJ:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
.bYRRHi{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#0f0f10;background:#ffd709;}/*!sc*/
.bYRRHi:active{color:#0f0f10;}/*!sc*/
.bYRRHi:not(:disabled):hover{background:#ffea7d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.bYRRHi:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
.jBZCRO{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#fff;background:#232323;}/*!sc*/
.jBZCRO:active{color:#fff;}/*!sc*/
.jBZCRO:not(:disabled):hover{color:#ffd709;background:#0f0f10;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jBZCRO:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
data-styled.g249[id="sc-1qig7zt-0"]{content:"czpnNJ,bYRRHi,jBZCRO,"}/*!sc*/
.eDycrR{pointer-events:none;}/*!sc*/
data-styled.g257[id="sc-gqclrv-0"]{content:"eDycrR,"}/*!sc*/
@media (max-width:751px){.rcsBI{display:none;}}/*!sc*/
data-styled.g258[id="sc-gqclrv-1"]{content:"rcsBI,"}/*!sc*/
.cwTwwh{min-width:32px;width:32px;min-height:32px;height:32px;margin:0 8px 0 0;border-radius:50%;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.cwTwwh{min-width:28px;width:28px;min-height:28px;height:28px;margin:0 4px 0 0;}}/*!sc*/
@media (max-width:751px){.cwTwwh{margin:0;}}/*!sc*/
data-styled.g259[id="sc-199a3eq-1-div"]{content:"cwTwwh,"}/*!sc*/
.deZXFK{-webkit-align-self:normal;-ms-flex-item-align:normal;align-self:normal;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 0 auto;}/*!sc*/
data-styled.g302[id="sc-1pw2hu9-0"]{content:"deZXFK,"}/*!sc*/
.gnDzft{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;position:static;-webkit-tap-highlight-color:transparent;}/*!sc*/
data-styled.g303[id="sc-k2vhmo-0"]{content:"gnDzft,"}/*!sc*/
.cYMYSf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;color:#232323;}/*!sc*/
.cYMYSf:hover{color:#4749c0;}/*!sc*/
data-styled.g304[id="sc-k2vhmo-1"]{content:"cYMYSf,"}/*!sc*/
.etPPJE{-webkit-transition:color 0.2s ease-out;transition:color 0.2s ease-out;will-change:color;}/*!sc*/
data-styled.g305[id="sc-k2vhmo-2"]{content:"etPPJE,"}/*!sc*/
.dMvvUT{position:relative;padding:13px 0 29px;margin-bottom:-16px;background:linear-gradient(90deg,#a34fc6 0%,#5354e4 100%);color:#fff;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.dMvvUT{padding:12px 16px 28px;}}/*!sc*/
@media (max-width:751px){.dMvvUT{padding:9px 15px 25px;}}/*!sc*/
.dMvvUT .before-header-ui__ellipse1{position:absolute;left:-147px;top:-387px;width:854px;height:854px;opacity:0.2;-webkit-filter:blur(12px);filter:blur(12px);background:radial-gradient( 50% 50% at 50% 50%,#f6cae3 0%,rgba(246,202,227,0) 100% );}/*!sc*/
.dMvvUT .before-header-ui__ellipse2{position:absolute;left:-148px;top:-244px;width:568px;height:568px;opacity:0.3;-webkit-filter:blur(12px);filter:blur(12px);background:radial-gradient( 50% 50% at 50% 50%,#f6cae3 0%,rgba(246,202,227,0) 100% );}/*!sc*/
.dMvvUT .before-header-ui__container{font-family:'IBM Plex Sans','Roboto',sans-serif;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;width:1120px;max-width:1120px;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__container{width:100%;max-width:unset;}}/*!sc*/
.dMvvUT .before-header-ui__img{position:relative;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__img{display:none;}}/*!sc*/
.dMvvUT .before-header-ui__img_sales{width:164px;}/*!sc*/
.dMvvUT .before-header-ui__img_sales::before{content:'';position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;height:190px;background:url(/_next/static/images/img/sales-647707e6e3bb6ad2deb188a1217a88ac.png) no-repeat;background-size:contain;}/*!sc*/
.dMvvUT .before-header-ui__content{-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:2px;}/*!sc*/
.dMvvUT .before-header-ui__buttons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.dMvvUT .before-header-ui__title{font-size:28px;line-height:32px;font-weight:700;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__title{font-size:20px;line-height:24px;font-weight:700;}}/*!sc*/
.dMvvUT .before-header-ui__text{font-size:14px;line-height:20px;font-weight:700;-webkit-letter-spacing:-0.01em;-moz-letter-spacing:-0.01em;-ms-letter-spacing:-0.01em;letter-spacing:-0.01em;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__text{font-size:12px;line-height:16px;font-weight:700;-webkit-letter-spacing:0;-moz-letter-spacing:0;-ms-letter-spacing:0;letter-spacing:0;}}/*!sc*/
.dMvvUT .before-header-ui__button{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:18px;line-height:24px;font-weight:700;border-radius:12px;-webkit-text-decoration:none;text-decoration:none;background:#fff;padding:12px 24px;display:inline-block;outline:none;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;color:#232323;text-overflow:ellipsis;min-width:200px;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__button{font-size:16px;line-height:24px;font-weight:700;padding:8px 16px;min-width:auto;}}/*!sc*/
.dMvvUT .before-header-ui__button:hover,.dMvvUT .before-header-ui__button:active{background-color:#ececec;}/*!sc*/
.dMvvUT .before-header-ui__button_secondary{color:#fff;background:rgba(255,255,255,0.2);}/*!sc*/
.dMvvUT .before-header-ui__button_secondary:hover,.dMvvUT .before-header-ui__button_secondary:active{background:rgba(255,255,255,0.3);color:#fff;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__button_secondary{display:none;}}/*!sc*/
data-styled.g339[id="sc-1pwtpfp-0"]{content:"dMvvUT,"}/*!sc*/
.klmZDZ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100%;}/*!sc*/
data-styled.g340[id="sc-1j17uuq-0"]{content:"klmZDZ,"}/*!sc*/
.dPcKhb{position:relative;z-index:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;background:inherit;overflow:hidden;}/*!sc*/
data-styled.g341[id="sc-1j17uuq-1"]{content:"dPcKhb,"}/*!sc*/
@media (max-width:1201px){.ui-chunk-container .hide-mobile{display:none;}}/*!sc*/
@media (max-width:751px){.ui-chunk-container .hide-phone{display:none;}}/*!sc*/
.ui-chunk-container .show-mobile{display:none;}/*!sc*/
@media (max-width:1201px){.ui-chunk-container .show-mobile{display:block;}}/*!sc*/
.ui-chunk-container .show-phone{display:none;}/*!sc*/
@media (max-width:751px){.ui-chunk-container .show-phone{display:block;}}/*!sc*/
data-styled.g343[id="sc-global-eCGhFA1"]{content:"sc-global-eCGhFA1,"}/*!sc*/
.bzaXwp{background-color:#f8f8f8;}/*!sc*/
data-styled.g344[id="sc-1b3dhyb-0"]{content:"bzaXwp,"}/*!sc*/
.dvLdDh{overflow:hidden;z-index:0;}/*!sc*/
data-styled.g345[id="sc-1b3dhyb-1"]{content:"dvLdDh,"}/*!sc*/
@-webkit-keyframes iJeNST{from{-webkit-transform:rotate(0deg) translateX(70px);-ms-transform:rotate(0deg) translateX(70px);transform:rotate(0deg) translateX(70px);}to{-webkit-transform:rotate(360deg) translateX(70px);-ms-transform:rotate(360deg) translateX(70px);transform:rotate(360deg) translateX(70px);}}/*!sc*/
@keyframes iJeNST{from{-webkit-transform:rotate(0deg) translateX(70px);-ms-transform:rotate(0deg) translateX(70px);transform:rotate(0deg) translateX(70px);}to{-webkit-transform:rotate(360deg) translateX(70px);-ms-transform:rotate(360deg) translateX(70px);transform:rotate(360deg) translateX(70px);}}/*!sc*/
data-styled.g346[id="sc-keyframes-iJeNST"]{content:"iJeNST,"}/*!sc*/
.ftkQLi{width:100%;}/*!sc*/
data-styled.g347[id="sc-1lrh8w5-0"]{content:"ftkQLi,"}/*!sc*/
.JTsAm{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/
data-styled.g350[id="sc-1lrh8w5-3"]{content:"JTsAm,"}/*!sc*/
.jTrfLJ{margin:auto;padding:0 4px 0 0;}/*!sc*/
data-styled.g351[id="sc-1lrh8w5-4"]{content:"jTrfLJ,"}/*!sc*/
.eCsaUt{color:#130f26;}/*!sc*/
.kfzfcV{color:#130f26;}/*!sc*/
@media (max-width:751px){.kfzfcV{display:none;}}/*!sc*/
data-styled.g352[id="sc-1lrh8w5-5"]{content:"eCsaUt,kfzfcV,"}/*!sc*/
.ddfkAs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:416px;margin:8px 96px 0 0;}/*!sc*/
@media (max-width:1201px){.ddfkAs{width:552px;margin:0 0 60px;}}/*!sc*/
@media (max-width:751px){.ddfkAs{width:344px;margin:0 0 40px;}}/*!sc*/
data-styled.g370[id="sc-1oz275d-0"]{content:"ddfkAs,"}/*!sc*/
.dCggDS{border:none;border-radius:16px;object-fit:contain;width:100%;}/*!sc*/
@media (max-width:1201px){.dCggDS{border-radius:26px;}}/*!sc*/
@media (max-width:751px){.dCggDS{border-radius:16px;}}/*!sc*/
data-styled.g371[id="sc-1oz275d-1"]{content:"dCggDS,"}/*!sc*/
.cmjKRy{margin-bottom:52px;}/*!sc*/
@media (max-width:1201px){.cmjKRy{margin-bottom:60px;}.cmjKRy .swiper{overflow:visible;}}/*!sc*/
@media (max-width:751px){.cmjKRy{margin-bottom:36px;}.cmjKRy .swiper{overflow:hidden;}}/*!sc*/
data-styled.g372[id="sc-1oz275d-2"]{content:"cmjKRy,"}/*!sc*/
.lliDuJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:992px;margin:0 auto 120px;padding:0 0 120px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;border-bottom:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.lliDuJ{width:100%;padding:0 0 100px;}}/*!sc*/
@media (max-width:751px){.lliDuJ{margin:0 auto 80px;padding:0 0 40px;}}/*!sc*/
data-styled.g374[id="sc-1r62a6q-0"]{content:"lliDuJ,"}/*!sc*/
.llFwsA{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.llFwsA{margin-bottom:32px;}}/*!sc*/
@media (max-width:751px){.llFwsA{width:340px;}}/*!sc*/
data-styled.g375[id="sc-1r62a6q-1"]{content:"llFwsA,"}/*!sc*/
.dtnelf{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.dtnelf{margin-bottom:40px;}}/*!sc*/
data-styled.g376[id="sc-1r62a6q-2"]{content:"dtnelf,"}/*!sc*/
.eNyjzK{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.eNyjzK{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g377[id="sc-1r62a6q-3"]{content:"eNyjzK,"}/*!sc*/
.iFJPFM H1,.iFJPFM H2,.iFJPFM H3,.iFJPFM H4,.iFJPFM H5,.iFJPFM H6{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;padding-bottom:40px;}/*!sc*/
@media (max-width:1201px){.iFJPFM H1,.iFJPFM H2,.iFJPFM H3,.iFJPFM H4,.iFJPFM H5,.iFJPFM H6{font-size:40px;line-height:48px;padding-bottom:32px;}}/*!sc*/
@media (max-width:751px){.iFJPFM H1,.iFJPFM H2,.iFJPFM H3,.iFJPFM H4,.iFJPFM H5,.iFJPFM H6{font-size:20px;line-height:24px;padding-bottom:40px;}}/*!sc*/
.iFJPFM p{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;}/*!sc*/
@media (max-width:1201px){.iFJPFM p{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.iFJPFM p{font-size:16px;line-height:24px;}}/*!sc*/
.iFJPFM ul,.iFJPFM ol{margin:-24px 0 32px;padding:0;}/*!sc*/
.iFJPFM li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;color:#000;}/*!sc*/
@media (max-width:1201px){.iFJPFM li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.iFJPFM li{font-size:16px;line-height:24px;}}/*!sc*/
.iFJPFM li:last-child{margin-bottom:0;}/*!sc*/
.iFJPFM li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.iFJPFM li:before{color:#740FB4;}/*!sc*/
.iFJPFM > *:last-child{margin-bottom:0;}/*!sc*/
data-styled.g378[id="sc-1r62a6q-4"]{content:"iFJPFM,"}/*!sc*/
.hbmMMm{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );-webkit-clip-path:polygon(0 0,100% 0px,100% calc(100% - 80px),0% 100%);clip-path:polygon(0 0,100% 0px,100% calc(100% - 80px),0% 100%);}/*!sc*/
@media (max-width:751px){.hbmMMm{-webkit-clip-path:polygon(0 0,100% 0px,100% calc(100% - 56px),0% 100%);clip-path:polygon(0 0,100% 0px,100% calc(100% - 56px),0% 100%);}}/*!sc*/
.bGLtep{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );-webkit-clip-path:polygon(0 0,100% 80px,100% calc(100% - 80px),0% 100%);clip-path:polygon(0 0,100% 80px,100% calc(100% - 80px),0% 100%);}/*!sc*/
@media (max-width:751px){.bGLtep{-webkit-clip-path:polygon(0 0,100% 56px,100% calc(100% - 56px),0% 100%);clip-path:polygon(0 0,100% 56px,100% calc(100% - 56px),0% 100%);}}/*!sc*/
.clzfwh{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );-webkit-clip-path:polygon(0 80px,100% 0,100% 100%,0 calc(100% - 80px));clip-path:polygon(0 80px,100% 0,100% 100%,0 calc(100% - 80px));}/*!sc*/
@media (max-width:751px){.clzfwh{-webkit-clip-path:polygon(0 56px,100% 0,100% 100%,0 calc(100% - 56px));clip-path:polygon(0 56px,100% 0,100% 100%,0 calc(100% - 56px));}}/*!sc*/
.hNHefG{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );-webkit-clip-path:polygon(0 0,100% 80px,100% calc(100% - 0px),0% 100%);clip-path:polygon(0 0,100% 80px,100% calc(100% - 0px),0% 100%);}/*!sc*/
@media (max-width:751px){.hNHefG{-webkit-clip-path:polygon(0 0,100% 56px,100% calc(100% - 0px),0% 100%);clip-path:polygon(0 0,100% 56px,100% calc(100% - 0px),0% 100%);}}/*!sc*/
data-styled.g381[id="sc-1ddwpfq-0"]{content:"hbmMMm,bGLtep,clzfwh,hNHefG,"}/*!sc*/
.hnlXxp{position:relative;width:100%;padding:80px 0;}/*!sc*/
@media (max-width:751px){.hnlXxp{padding:56px 0;}}/*!sc*/
data-styled.g382[id="sc-1ddwpfq-1"]{content:"hnlXxp,"}/*!sc*/
.SAbyR{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g396[id="sc-1gixy6u-0"]{content:"SAbyR,"}/*!sc*/
.fVuuMJ{color:#0f0f10;word-break:break-word;}/*!sc*/
.fVuuMJ h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.fVuuMJ h1{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.fVuuMJ h1{font-size:24px;line-height:28px;margin-bottom:32px;}}/*!sc*/
.fVuuMJ h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.fVuuMJ h2{font-size:24px;line-height:28px;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.fVuuMJ h2{font-size:18px;line-height:24px;margin-bottom:16px;}}/*!sc*/
.fVuuMJ p{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.fVuuMJ p{margin-bottom:24px;}}/*!sc*/
.fVuuMJ ul,.fVuuMJ ol{margin:-24px 0 32px;padding:0;margin:0 0 32px;}/*!sc*/
.fVuuMJ li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;}/*!sc*/
@media (max-width:1201px){.fVuuMJ li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.fVuuMJ li{font-size:16px;line-height:24px;}}/*!sc*/
.fVuuMJ li:last-child{margin-bottom:0;}/*!sc*/
.fVuuMJ li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.fVuuMJ li::before{color:#740FB4;}/*!sc*/
.fVuuMJ *:last-child{margin-bottom:0;}/*!sc*/
.dJQBfL{color:#fff;word-break:break-word;}/*!sc*/
.dJQBfL h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.dJQBfL h1{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.dJQBfL h1{font-size:24px;line-height:28px;margin-bottom:32px;}}/*!sc*/
.dJQBfL h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.dJQBfL h2{font-size:24px;line-height:28px;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.dJQBfL h2{font-size:18px;line-height:24px;margin-bottom:16px;}}/*!sc*/
.dJQBfL p{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.dJQBfL p{margin-bottom:24px;}}/*!sc*/
.dJQBfL ul,.dJQBfL ol{margin:-24px 0 32px;padding:0;margin:0 0 32px;}/*!sc*/
.dJQBfL li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;}/*!sc*/
@media (max-width:1201px){.dJQBfL li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.dJQBfL li{font-size:16px;line-height:24px;}}/*!sc*/
.dJQBfL li:last-child{margin-bottom:0;}/*!sc*/
.dJQBfL li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.dJQBfL li::before{color:#fff;}/*!sc*/
.dJQBfL *:last-child{margin-bottom:0;}/*!sc*/
data-styled.g417[id="sc-pyhrzd-0"]{content:"fVuuMJ,dJQBfL,"}/*!sc*/
.gjfSTs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:320px;margin:0 0 0 64px;}/*!sc*/
@media (max-width:1201px){.gjfSTs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin:60px 0 0;padding:20px;border-radius:20px;background:#fff;}}/*!sc*/
@media (max-width:751px){.gjfSTs{margin:40px 0 0;}}/*!sc*/
data-styled.g418[id="sc-1232l32-0"]{content:"gjfSTs,"}/*!sc*/
.gLmhvn{margin:0 0 28px;}/*!sc*/
@media (max-width:1201px){.gLmhvn{margin:0 24px 0 0;}}/*!sc*/
@media (max-width:751px){.gLmhvn{margin:0 16px 0 0;}}/*!sc*/
data-styled.g419[id="sc-1232l32-1"]{content:"gLmhvn,"}/*!sc*/
.cLdvvd{color:#afafaf;}/*!sc*/
.cLdvvd h1,.cLdvvd h2,.cLdvvd h3{color:#0f0f10;}/*!sc*/
data-styled.g420[id="sc-1232l32-2"]{content:"cLdvvd,"}/*!sc*/
.cjEHVO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 auto 80px;padding:0 64px 80px;border-bottom:1px solid #afafaf;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cjEHVO{display:block;margin:0 auto 60px;padding:0 0 60px;}}/*!sc*/
@media (max-width:751px){.cjEHVO{display:block;margin:0 auto 40px;padding:0 0 80px;}}/*!sc*/
data-styled.g421[id="sc-lpm061-0"]{content:"cjEHVO,"}/*!sc*/
.iKbbnr{margin:0 0 24px;}/*!sc*/
@media (max-width:751px){.iKbbnr{margin:0 0 16px;}}/*!sc*/
data-styled.g422[id="sc-lpm061-1"]{content:"iKbbnr,"}/*!sc*/
.dYVcmu{margin:20px auto 80px;padding:0 0 80px;border-bottom:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.dYVcmu{margin:0 auto 60px;padding:0 0 60px;}}/*!sc*/
@media (max-width:751px){.dYVcmu{margin:0 auto 80px;padding:0 0 64px;}}/*!sc*/
data-styled.g438[id="sc-1oat6ot-0"]{content:"dYVcmu,"}/*!sc*/
.cVgwEc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0 64px 0;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cVgwEc{padding:0;}}/*!sc*/
data-styled.g439[id="sc-1oat6ot-1"]{content:"cVgwEc,"}/*!sc*/
.hjZAnk{width:auto;min-width:320px;margin:24px 0 0;}/*!sc*/
@media (max-width:1201px){.hjZAnk{margin:48px 0 0;}}/*!sc*/
@media (max-width:751px){.hjZAnk{width:100%;margin:16px 0 0;}}/*!sc*/
data-styled.g441[id="sc-1oat6ot-3"]{content:"hjZAnk,"}/*!sc*/
.hdfpFD{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g442[id="sc-1oat6ot-4"]{content:"hdfpFD,"}/*!sc*/
.klGcVm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:751px){.klGcVm{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g443[id="sc-1oat6ot-5"]{content:"klGcVm,"}/*!sc*/
.iHYLll{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;width:352px;margin-right:32px;}/*!sc*/
.iHYLll:last-child{margin-right:0;}/*!sc*/
@media (max-width:1201px){.iHYLll{width:100%;margin-right:0;margin-top:40px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;text-align:left;}.iHYLll:first-child{margin-top:0;}}/*!sc*/
@media (max-width:751px){.iHYLll{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-top:32px;}}/*!sc*/
data-styled.g449[id="sc-16yt4q5-0"]{content:"iHYLll,"}/*!sc*/
.kArXtu{overflow:hidden;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-bottom:24px;border-radius:50%;background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );}/*!sc*/
@media (max-width:1201px){.kArXtu{margin-bottom:0;margin-right:24px;}}/*!sc*/
data-styled.g450[id="sc-16yt4q5-1"]{content:"kArXtu,"}/*!sc*/
.bUbCKQ{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/oneImg-b1c92b38734a5b324f9b32a5a243bf06.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.bUbCKQ{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.dIESaV{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/twoImg-28bd45b9ade74f4471bf39916d76d47e.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.dIESaV{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.gbGscf{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/threeImg-7d8d62a36e7b66f9691d1d7d01b44fb9.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.gbGscf{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.yjETG{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/oneImg-d53504a93142009806d3cc77cd059dcb.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.yjETG{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.iGfrzu{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/twoImg-bf3134a7f0a1f9684257b13b37cd07b5.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.iGfrzu{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.eJXsCF{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/threeImg-a81ea3b3db08e9c236bce2eb8f407ab7.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.eJXsCF{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
data-styled.g451[id="sc-16yt4q5-2"]{content:"bUbCKQ,dIESaV,gbGscf,yjETG,iGfrzu,eJXsCF,"}/*!sc*/
.kgZxtV p{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;}/*!sc*/
@media (max-width:1201px){.kgZxtV p{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.kgZxtV p{font-size:16px;line-height:24px;}}/*!sc*/
.kgZxtV h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.kgZxtV h1{font-size:24px;line-height:28px;margin-bottom:8px;}}/*!sc*/
@media (max-width:751px){.kgZxtV h1{font-size:18px;line-height:24px;}}/*!sc*/
data-styled.g452[id="sc-16yt4q5-3"]{content:"kgZxtV,"}/*!sc*/
.eOXZIV{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:20px;}/*!sc*/
data-styled.g453[id="sc-11l8wec-0"]{content:"eOXZIV,"}/*!sc*/
.jpiMVl{margin-bottom:120px;position:relative;}/*!sc*/
@media (max-width:1201px){.jpiMVl{margin-bottom:72px;}}/*!sc*/
data-styled.g454[id="sc-ze365z-0"]{content:"jpiMVl,"}/*!sc*/
.RPhWg{margin-bottom:40px;text-align:center;}/*!sc*/
data-styled.g455[id="sc-ze365z-1"]{content:"RPhWg,"}/*!sc*/
.bnqryM{width:416px;}/*!sc*/
@media (max-width:1201px){.bnqryM{width:100%;}}/*!sc*/
data-styled.g457[id="sc-32ejay-1"]{content:"bnqryM,"}/*!sc*/
.eNgslB{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.eNgslB{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eNgslB{font-size:16px;line-height:24px;}}/*!sc*/
.eNgslB:last-child{margin-bottom:0;}/*!sc*/
.eNgslB::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
data-styled.g458[id="sc-1xm68ya-0"]{content:"eNgslB,"}/*!sc*/
.hqEzLD{width:928px;}/*!sc*/
@media (max-width:1201px){.hqEzLD{width:100%;}}/*!sc*/
@media (max-width:751px){.hqEzLD{max-width:344px;}}/*!sc*/
data-styled.g459[id="sc-1xm68ya-1"]{content:"hqEzLD,"}/*!sc*/
.isRQVJ{margin-bottom:80px;padding:160px 0;color:#fff;}/*!sc*/
.isRQVJ .sc-1xm68ya-0::before{color:#fff;}/*!sc*/
@media (max-width:1201px){.isRQVJ{margin-bottom:120px;}}/*!sc*/
@media (max-width:751px){.isRQVJ{margin-bottom:80px;padding:120px 0;}}/*!sc*/
data-styled.g460[id="sc-1xm68ya-2"]{content:"isRQVJ,"}/*!sc*/
.cXcqyt{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.cXcqyt{margin-bottom:52px;}}/*!sc*/
@media (max-width:751px){.cXcqyt{margin-bottom:32px;}}/*!sc*/
data-styled.g461[id="sc-1xm68ya-3"]{content:"cXcqyt,"}/*!sc*/
.kscGdX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:40px;margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.kscGdX{gap:60px;margin-bottom:52px;}}/*!sc*/
@media (max-width:751px){.kscGdX{gap:32px;margin-bottom:40px;}}/*!sc*/
data-styled.g462[id="sc-1xm68ya-4"]{content:"kscGdX,"}/*!sc*/
.jEIquP{padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}/*!sc*/
.jEIquP .sc-1xm68ya-0:after{background-color:#fff;}/*!sc*/
@media (max-width:1201px){.jEIquP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.jEIquP{gap:12px;}}/*!sc*/
data-styled.g464[id="sc-1xm68ya-6"]{content:"jEIquP,"}/*!sc*/
.eOihnY{font-size:18px;line-height:24px;font-weight:400;position:relative;cursor:pointer;}/*!sc*/
@media (max-width:751px){.eOihnY{font-size:16px;line-height:24px;font-weight:400;}}/*!sc*/
.eOihnY:after{content:'';position:absolute;bottom:1px;left:0;width:100%;height:1px;border-bottom:1px solid #fff;}/*!sc*/
data-styled.g465[id="sc-1xm68ya-7"]{content:"eOihnY,"}/*!sc*/
.jzJAgH{height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:1201px){.jzJAgH{margin-bottom:88px;}}/*!sc*/
@media (max-width:751px){.jzJAgH{margin-bottom:64px;padding:136px 0;}}/*!sc*/
data-styled.g485[id="sc-1kuct9n-0"]{content:"jzJAgH,"}/*!sc*/
.jqwyOS{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.jqwyOS{margin-bottom:44px;}}/*!sc*/
@media (max-width:751px){.jqwyOS{margin-bottom:24px;}}/*!sc*/
data-styled.g486[id="sc-1kuct9n-1"]{content:"jqwyOS,"}/*!sc*/
.cfBLof{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.cfBLof{width:100%;}}/*!sc*/
data-styled.g487[id="sc-1kuct9n-2"]{content:"cfBLof,"}/*!sc*/
.efarBD{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.efarBD{margin-bottom:36px;}}/*!sc*/
@media (max-width:751px){.efarBD{margin-bottom:12px;}}/*!sc*/
data-styled.g489[id="sc-1kuct9n-4"]{content:"efarBD,"}/*!sc*/
.hXsBII{margin:0 0 100px;}/*!sc*/
@media (max-width:1201px){.hXsBII{margin:0 0 60xp;}}/*!sc*/
@media (max-width:751px){.hXsBII{margin:0 0 28px;}}/*!sc*/
.hXsBII ul{-webkit-column-count:2;column-count:2;-webkit-column-gap:96px;column-gap:96px;}/*!sc*/
@media (max-width:1201px){.hXsBII ul{-webkit-column-gap:20px;column-gap:20px;}}/*!sc*/
@media (max-width:751px){.hXsBII ul{-webkit-column-count:1;column-count:1;}}/*!sc*/
.hXsBII ul li{width:416px;}/*!sc*/
@media (max-width:1201px){.hXsBII ul li{width:332px;}}/*!sc*/
@media (max-width:751px){.hXsBII ul li{width:100%;}.hXsBII ul li b{font-weight:400;}}/*!sc*/
data-styled.g490[id="sc-1kuct9n-5"]{content:"hXsBII,"}/*!sc*/
.ciEuHS{color:#0f0f10;padding:32px 10px 10px;border-top:1px solid #ececec;}/*!sc*/
@media (max-width:751px){.ciEuHS{padding:12px 0 0;}}/*!sc*/
data-styled.g492[id="sc-ptxdl6-0"]{content:"ciEuHS,"}/*!sc*/
.kyVtIH{-webkit-transition:height 0.2s ease-out;transition:height 0.2s ease-out;will-change:height;overflow:hidden;}/*!sc*/
data-styled.g493[id="sc-ptxdl6-1"]{content:"kyVtIH,"}/*!sc*/
.kVdrfk{padding-top:20px;}/*!sc*/
@media (max-width:751px){.kVdrfk{padding-top:12px;}}/*!sc*/
data-styled.g494[id="sc-ptxdl6-2"]{content:"kVdrfk,"}/*!sc*/
.hdRZtB{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:24px;}/*!sc*/
data-styled.g495[id="sc-li015i-0"]{content:"hdRZtB,"}/*!sc*/
.bqYpKB{color:#0f0f10;padding:10px;}/*!sc*/
@media (max-width:751px){.bqYpKB{padding:0;}}/*!sc*/
data-styled.g496[id="sc-li015i-1"]{content:"bqYpKB,"}/*!sc*/
.iJMWTL{cursor:pointer;color:#740FB4;background:#fff;border-radius:20px;padding:20px 36px 20px 20px;-webkit-tap-highlight-color:transparent;}/*!sc*/
@media (max-width:751px){.iJMWTL{padding:16px 28px 16px 16px;}}/*!sc*/
data-styled.g497[id="sc-li015i-2"]{content:"iJMWTL,"}/*!sc*/
.dbNuvG{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;will-change:transform;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}/*!sc*/
data-styled.g498[id="sc-li015i-3"]{content:"dbNuvG,"}/*!sc*/
.htYSLI{margin-bottom:20px;}/*!sc*/
.htYSLI:last-child{margin-bottom:0;}/*!sc*/
@media (max-width:751px){.htYSLI{margin-bottom:12px;}}/*!sc*/
data-styled.g500[id="sc-tqrjzo-1"]{content:"htYSLI,"}/*!sc*/
.irTCnx{width:992px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.irTCnx{width:100%;}}/*!sc*/
@media (max-width:751px){.irTCnx{width:100%;margin-bottom:28px;}}/*!sc*/
data-styled.g501[id="sc-1mszhjn-0"]{content:"irTCnx,"}/*!sc*/
.kPNZqQ{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.kPNZqQ{margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.kPNZqQ{margin-bottom:20px;}}/*!sc*/
data-styled.g502[id="sc-1mszhjn-1"]{content:"kPNZqQ,"}/*!sc*/
.keMPbH{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:24px;}/*!sc*/
@media (max-width:751px){.keMPbH{margin-left:40px;}}/*!sc*/
data-styled.g503[id="sc-yfz19-0"]{content:"keMPbH,"}/*!sc*/
.hPuTug{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:128px;height:128px;background-image:url(https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg);background-position:center center;background-repeat:no-repeat;background-size:cover;border-radius:50%;}/*!sc*/
.dvxNPZ{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:128px;height:128px;background-image:url(https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg);background-position:center center;background-repeat:no-repeat;background-size:cover;border-radius:50%;}/*!sc*/
data-styled.g504[id="sc-yfz19-1"]{content:"hPuTug,dvxNPZ,"}/*!sc*/
.jaQEyp{white-space:break-spaces;max-height:96px;overflow:hidden;}/*!sc*/
data-styled.g505[id="sc-2yxsal-0"]{content:"jaQEyp,"}/*!sc*/
.gjkZBp{cursor:pointer;display:inline;padding:0;background:transparent;color:#005ece;font:inherit;}/*!sc*/
data-styled.g506[id="sc-2yxsal-1"]{content:"gjkZBp,"}/*!sc*/
.kpFjsV{position:relative;padding:4px;color:#fff;}/*!sc*/
data-styled.g507[id="sc-1pd1pn6-0"]{content:"kpFjsV,"}/*!sc*/
.jpjsGB{position:absolute;top:1px;right:1px;}/*!sc*/
data-styled.g508[id="sc-1pd1pn6-1"]{content:"jpjsGB,"}/*!sc*/
.gCLUsB{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:24px 64px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.gCLUsB{padding:40px 0;}}/*!sc*/
@media (max-width:751px){.gCLUsB{padding:20px 0;}}/*!sc*/
data-styled.g509[id="sc-fgesu2-0"]{content:"gCLUsB,"}/*!sc*/
.fNTfNW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;}/*!sc*/
@media (max-width:1201px){.fNTfNW{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g510[id="sc-fgesu2-1"]{content:"fNTfNW,"}/*!sc*/
.fxDzQc{width:480px;margin-right:24px;}/*!sc*/
@media (max-width:1201px){.fxDzQc{width:100%;margin-right:0;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.fxDzQc{margin-bottom:12px;}}/*!sc*/
data-styled.g511[id="sc-fgesu2-2"]{content:"fxDzQc,"}/*!sc*/
.eyMrGT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g512[id="sc-fgesu2-3"]{content:"eyMrGT,"}/*!sc*/
.fGVXtz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;}/*!sc*/
data-styled.g513[id="sc-fgesu2-4"]{content:"fGVXtz,"}/*!sc*/
.gLvmdB{margin-bottom:12px;}/*!sc*/
@media (max-width:751px){.gLvmdB{margin-bottom:8px;}}/*!sc*/
data-styled.g514[id="sc-fgesu2-5"]{content:"gLvmdB,"}/*!sc*/
.keqBcC{margin-bottom:12px;}/*!sc*/
data-styled.g515[id="sc-fgesu2-6"]{content:"keqBcC,"}/*!sc*/
.eaisXT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
@media (max-width:1201px){.eaisXT{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}/*!sc*/
@media (max-width:751px){.eaisXT{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g516[id="sc-fgesu2-7"]{content:"eaisXT,"}/*!sc*/
.cAsFre{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-bottom:24px;}/*!sc*/
@media (max-width:1201px){.cAsFre{margin-bottom:0;margin-right:24px;}}/*!sc*/
@media (max-width:751px){.cAsFre{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:24px;margin-right:0;}}/*!sc*/
data-styled.g517[id="sc-fgesu2-8"]{content:"cAsFre,"}/*!sc*/
.cLaaQZ{font-weight:700;margin-bottom:8px;}/*!sc*/
@media (max-width:1201px){.cLaaQZ{margin-bottom:4px;}}/*!sc*/
@media (max-width:751px){.cLaaQZ{margin-bottom:0;margin-right:24px;}}/*!sc*/
data-styled.g518[id="sc-fgesu2-9"]{content:"cLaaQZ,"}/*!sc*/
.hIqDgT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 0 auto;}/*!sc*/
@media (max-width:751px){.hIqDgT{margin:0;}}/*!sc*/
data-styled.g519[id="sc-fgesu2-10"]{content:"hIqDgT,"}/*!sc*/
.fPQjfN{width:240px;margin-right:24px;}/*!sc*/
@media (max-width:1201px){.fPQjfN{width:164px;}}/*!sc*/
@media (max-width:751px){.fPQjfN{width:248px;}}/*!sc*/
data-styled.g520[id="sc-fgesu2-11"]{content:"fPQjfN,"}/*!sc*/
.dgeiLf{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/
data-styled.g523[id="sc-fgesu2-14"]{content:"dgeiLf,"}/*!sc*/
.kTlAtn{margin-bottom:80px;color:#0f0f10;}/*!sc*/
data-styled.g524[id="sc-1n8zn8-0"]{content:"kTlAtn,"}/*!sc*/
.eVtlSO h2{font:inherit;margin-bottom:24px;}/*!sc*/
@media (max-width:1201px){.eVtlSO h2{margin-bottom:18px;}}/*!sc*/
@media (max-width:751px){.eVtlSO h2{margin-bottom:24px;}}/*!sc*/
data-styled.g525[id="sc-1n8zn8-1"]{content:"eVtlSO,"}/*!sc*/
.djvzct{margin-bottom:40px;}/*!sc*/
@media (max-width:751px){.djvzct{margin-bottom:60px;}}/*!sc*/
data-styled.g526[id="sc-1n8zn8-2"]{content:"djvzct,"}/*!sc*/
.bNPdJC{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.bNPdJC{width:100%;}}/*!sc*/
data-styled.g527[id="sc-1n8zn8-3"]{content:"bNPdJC,"}/*!sc*/
.eruVPL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g528[id="sc-1n8zn8-4"]{content:"eruVPL,"}/*!sc*/
.hVfuYc{color:#0f0f10;padding:40px 96px;width:992px;}/*!sc*/
@media (max-width:1201px){.hVfuYc{width:688px;padding:40px 46px;}}/*!sc*/
@media (max-width:751px){.hVfuYc{width:100%;padding:76px 20px;}}/*!sc*/
data-styled.g529[id="sc-1n8zn8-5"]{content:"hVfuYc,"}/*!sc*/
.gwYuWO.gwYuWO{width:416px;}/*!sc*/
@media (max-width:751px){.gwYuWO.gwYuWO{width:100%;}}/*!sc*/
data-styled.g530[id="sc-kixk9v-0"]{content:"gwYuWO,"}/*!sc*/
.dgWykw{margin-left:8px;}/*!sc*/
data-styled.g531[id="sc-3cb1l3-0"]{content:"dgWykw,"}/*!sc*/
.galmep{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#fff;width:992px;height:64px;margin:40px auto 0;padding:16px 20px;border-radius:20px;}/*!sc*/
@media (max-width:1201px){.galmep{width:100%;height:auto;padding:16px 24px;}}/*!sc*/
@media (max-width:751px){.galmep{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:48px;padding:24px 12px;}}/*!sc*/
data-styled.g532[id="sc-3cb1l3-1"]{content:"galmep,"}/*!sc*/
.jeNzke{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex:1;-ms-flex:1;flex:1;margin:auto 0;}/*!sc*/
@media (max-width:1201px){.jeNzke{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/
@media (max-width:751px){.jeNzke{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g534[id="sc-3cb1l3-3"]{content:"jeNzke,"}/*!sc*/
.kGoYMV{color:#0f0f10;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0 20px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/
.kGoYMV:after{content:'';background-color:#afafaf;height:24px;width:1px;position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}/*!sc*/
.kGoYMV:first-child:after{display:none;}/*!sc*/
@media (max-width:1201px){.kGoYMV{-webkit-flex:1 0 50%;-ms-flex:1 0 50%;flex:1 0 50%;max-width:50%;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;margin-top:32px;}.kGoYMV:after{display:none;}.kGoYMV:nth-child(-n + 2){margin-top:0;}}/*!sc*/
@media (max-width:751px){.kGoYMV{-webkit-flex:1 0 100%;-ms-flex:1 0 100%;flex:1 0 100%;max-width:100%;margin-top:24px;}.kGoYMV:nth-child(-n + 2){margin-top:24px;}.kGoYMV:first-child{margin-top:0;}}/*!sc*/
data-styled.g535[id="sc-3cb1l3-4"]{content:"kGoYMV,"}/*!sc*/
.golIF{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:10px;}/*!sc*/
@media (max-width:751px){.golIF{display:none;}}/*!sc*/
data-styled.g538[id="sc-1vxm7ng-0"]{content:"golIF,"}/*!sc*/
.dbOiAN{margin:0 16px;}/*!sc*/
data-styled.g539[id="sc-1vxm7ng-1"]{content:"dbOiAN,"}/*!sc*/
.jxmQOK{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;}/*!sc*/
.jxmQOK a{position:relative;}/*!sc*/
.jxmQOK a:hover::after{background-color:transparent;}/*!sc*/
.jxmQOK a::after{-webkit-transition:background-color 0.2s ease-out;transition:background-color 0.2s ease-out;will-change:background-color;content:'';position:absolute;bottom:-4px;left:0;width:100%;height:1px;background-color:currentColor;}/*!sc*/
@media (max-width:1201px){.jxmQOK{font-size:16px;}}/*!sc*/
data-styled.g540[id="sc-1vxm7ng-2"]{content:"jxmQOK,"}/*!sc*/
.jDOZfu{position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;min-width:100%;margin-top:24px;padding:0 41px;z-index:10;}/*!sc*/
@media (max-width:751px){.jDOZfu{padding:0 16.5px;}}/*!sc*/
data-styled.g549[id="sc-4o7hfp-0"]{content:"jDOZfu,"}/*!sc*/
.eBROUt{-webkit-flex:0;-ms-flex:0;flex:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;right:0;margin:0 0 0 auto;}/*!sc*/
@media (max-width:1201px){.eBROUt{-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
@media (max-width:751px){.eBROUt{width:100%;left:0;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
data-styled.g550[id="sc-4o7hfp-1"]{content:"eBROUt,"}/*!sc*/
.fHVRxg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 -12px;}/*!sc*/
@media (max-width:1201px){.fHVRxg{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
data-styled.g551[id="sc-4o7hfp-2"]{content:"fHVRxg,"}/*!sc*/
.eufkJz{position:relative;padding-bottom:60px;color:#fff;}/*!sc*/
@media (max-width:1201px){.eufkJz{padding-bottom:80px;}}/*!sc*/
@media (max-width:751px){.eufkJz{padding-bottom:40px;}}/*!sc*/
data-styled.g555[id="sc-s2pydo-0"]{content:"eufkJz,"}/*!sc*/
.diGrSa{width:654px;margin-bottom:24px;text-align:center;}/*!sc*/
@media (max-width:1201px){.diGrSa{width:468px;}}/*!sc*/
@media (max-width:751px){.diGrSa{width:100%;}}/*!sc*/
data-styled.g556[id="sc-s2pydo-1"]{content:"diGrSa,"}/*!sc*/
.dZDxRw{width:640px;margin-bottom:40px;text-align:center;}/*!sc*/
@media (max-width:751px){.dZDxRw{margin-bottom:24px;width:100%;}}/*!sc*/
data-styled.g558[id="sc-s2pydo-3"]{content:"dZDxRw,"}/*!sc*/
.EOCgR{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g560[id="sc-s2pydo-6"]{content:"EOCgR,"}/*!sc*/
.iHjMxQ{padding:134px 0 200px;}/*!sc*/
@media (max-width:1201px){.iHjMxQ{padding-top:152px;}}/*!sc*/
@media (max-width:751px){.iHjMxQ{padding:128px 0 136px;}}/*!sc*/
data-styled.g561[id="sc-s2pydo-5"]{content:"iHjMxQ,"}/*!sc*/
.fYPwsY.fYPwsY{width:480px;}/*!sc*/
@media (max-width:1201px){.fYPwsY.fYPwsY{width:100%;}}/*!sc*/
data-styled.g562[id="sc-n3p609-0"]{content:"fYPwsY,"}/*!sc*/
.caypgj{margin-bottom:32px;}/*!sc*/
data-styled.g563[id="sc-n3p609-1"]{content:"caypgj,"}/*!sc*/
.gAbnmq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#0f0f10;-webkit-flex:1 0 480px;-ms-flex:1 0 480px;flex:1 0 480px;margin-right:32px;margin-bottom:32px;}/*!sc*/
.gAbnmq:nth-child(2n){margin-right:0;}/*!sc*/
.gAbnmq:nth-last-child(-n + 2){margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.gAbnmq{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-right:0;margin-bottom:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.gAbnmq:nth-last-child(-n + 2){margin-bottom:24px;}.gAbnmq:last-child{margin-bottom:0;}}/*!sc*/
@media (max-width:751px){.gAbnmq{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.gAbnmq:nth-last-child(-n + 2){margin-bottom:40px;}}/*!sc*/
data-styled.g565[id="sc-1l3meww-0"]{content:"gAbnmq,"}/*!sc*/
.yVUWU{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:256px;height:144px;border-radius:20px;margin-right:32px;background-image:url(https://sun9-51.userapi.com/impg/OAHp3leD75B-JtmtyCHjWCiwjNw_X-urfYNfUA/CmjLYEFtfHA.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=b3e6c6e5fe52a14c7205deaef90d022a&c_uniq_tag=HnB9gpGenkl1IrnCaqWkzH6-v0c3-RqI5ZzXzwL-TRc&type=video_thumb);background-position:center center;background-repeat:no-repeat;background-size:cover;cursor:pointer;}/*!sc*/
@media (max-width:1201px){.yVUWU{margin-right:40px;}}/*!sc*/
@media (max-width:751px){.yVUWU{margin-right:0;margin-bottom:12px;width:320px;height:177px;}}/*!sc*/
.JYvfs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:256px;height:144px;border-radius:20px;margin-right:32px;background-image:url(https://sun9-48.userapi.com/impg/7RZVWfcc9PHBxA2jRUMhFDoS0RMwx_QacwGvZQ/FY_PD4nJ2Ps.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=68f67c5f7f03be92de5111840cd76d66&c_uniq_tag=Li4DdUSb9jcxiyXIPQxji6N2QpzwOtvSWJxODWtnkzk&type=video_thumb);background-position:center center;background-repeat:no-repeat;background-size:cover;cursor:pointer;}/*!sc*/
@media (max-width:1201px){.JYvfs{margin-right:40px;}}/*!sc*/
@media (max-width:751px){.JYvfs{margin-right:0;margin-bottom:12px;width:320px;height:177px;}}/*!sc*/
data-styled.g566[id="sc-1l3meww-1"]{content:"yVUWU,JYvfs,"}/*!sc*/
.cHxJxf{width:192px;}/*!sc*/
@media (max-width:1201px){.cHxJxf{width:320px;}}/*!sc*/
data-styled.g567[id="sc-1l3meww-2"]{content:"cHxJxf,"}/*!sc*/
.blhXzJ{white-space:nowrap;overflow:auto;text-overflow:ellipsis;margin-bottom:4px;}/*!sc*/
@media (max-width:1201px){.blhXzJ{margin-bottom:8px;}}/*!sc*/
data-styled.g568[id="sc-1l3meww-3"]{content:"blhXzJ,"}/*!sc*/
.dePnfm{margin-bottom:12px;}/*!sc*/
@media (max-width:1201px){.dePnfm{margin-bottom:8px;}}/*!sc*/
data-styled.g569[id="sc-1l3meww-4"]{content:"dePnfm,"}/*!sc*/
.gnNvLT{word-wrap:break-word;overflow:hidden;max-height:192px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;}/*!sc*/
data-styled.g570[id="sc-1l3meww-5"]{content:"gnNvLT,"}/*!sc*/
.hkpcCk{color:#fff;}/*!sc*/
data-styled.g572[id="sc-1l3meww-7"]{content:"hkpcCk,"}/*!sc*/
.frFtzw{background:#fff;border-radius:20px;padding:64px;margin-bottom:120px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.frFtzw{padding:40px 32px;margin-bottom:152px;}}/*!sc*/
@media (max-width:751px){.frFtzw{padding:20px 16px;margin-bottom:116px;}}/*!sc*/
data-styled.g573[id="sc-g9zqla-0"]{content:"frFtzw,"}/*!sc*/
.jqTCqB{margin-bottom:40px;}/*!sc*/
@media (max-width:751px){.jqTCqB{margin-bottom:24px;}}/*!sc*/
data-styled.g574[id="sc-g9zqla-1"]{content:"jqTCqB,"}/*!sc*/
.nExnN{display:none;}/*!sc*/
@media (max-width:1201px){.nExnN{display:block;}}/*!sc*/
@media (max-width:751px){.nExnN{display:none;}}/*!sc*/
data-styled.g575[id="sc-g9zqla-2"]{content:"nExnN,"}/*!sc*/
.cmzqGo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:32px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/
@media (max-width:1201px){.cmzqGo{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.cmzqGo{margin-bottom:0;}}/*!sc*/
data-styled.g576[id="sc-g9zqla-3"]{content:"cmzqGo,"}/*!sc*/
.yFPt{font-size:16px;line-height:24px;font-weight:700;padding:12px 32px;cursor:pointer;border-radius:100px;color:#000;background:transparent;white-space:nowrap;-webkit-tap-highlight-color:transparent;cursor:default;background:#ffd709;}/*!sc*/
@media (max-width:751px){.yFPt{font-size:14px;line-height:20px;font-weight:700;padding:12px 24px;}}/*!sc*/
.hubLMz{font-size:16px;line-height:24px;font-weight:700;padding:12px 32px;cursor:pointer;border-radius:100px;color:#000;background:transparent;white-space:nowrap;-webkit-tap-highlight-color:transparent;}/*!sc*/
@media (max-width:751px){.hubLMz{font-size:14px;line-height:20px;font-weight:700;padding:12px 24px;}}/*!sc*/
data-styled.g616[id="sc-zkx93-0"]{content:"yFPt,hubLMz,"}/*!sc*/
.gPfNRv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;background:#fff;border-radius:100px;}/*!sc*/
data-styled.g617[id="sc-t8narm-0"]{content:"gPfNRv,"}/*!sc*/
.gosVbC{margin:0 0 35px;}/*!sc*/
@media (max-width:1201px){.gosVbC{margin:0 0 40px;}}/*!sc*/
@media (max-width:751px){.gosVbC{margin:0 0 24px;}}/*!sc*/
data-styled.g618[id="sc-1peufw-0"]{content:"gosVbC,"}/*!sc*/
.lYQex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:12px 0 30px;}/*!sc*/
@media (max-width:751px){.lYQex{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.lYQex{margin:10px 0 24px;}}/*!sc*/
data-styled.g619[id="sc-1peufw-1"]{content:"lYQex,"}/*!sc*/
.iKtgdB{font-family:'IBM Plex Sans','Roboto',sans-serif;height:48px;}/*!sc*/
@media (max-width:751px){.iKtgdB{height:36px;}}/*!sc*/
data-styled.g620[id="sc-1peufw-2"]{content:"iKtgdB,"}/*!sc*/
.iLnntQ{position:relative;bottom:-8px;font-size:25px;}/*!sc*/
@media (max-width:751px){.iLnntQ{bottom:-6px;font-size:19px;}}/*!sc*/
data-styled.g622[id="sc-1peufw-4"]{content:"iLnntQ,"}/*!sc*/
.dAAQHW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:24px;}/*!sc*/
data-styled.g623[id="sc-147fm2r-0"]{content:"dAAQHW,"}/*!sc*/
.cnspAU{margin-right:24px;}/*!sc*/
data-styled.g624[id="sc-147fm2r-1"]{content:"cnspAU,"}/*!sc*/
.ewmmcs{border-top:1px solid #fff;margin-bottom:24px;width:288px;}/*!sc*/
@media (max-width:1201px){.ewmmcs{width:100%;}}/*!sc*/
data-styled.g625[id="sc-1r0uxxj-0"]{content:"ewmmcs,"}/*!sc*/
.bPBPRV{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#fff;}/*!sc*/
data-styled.g626[id="sc-1r0uxxj-1"]{content:"bPBPRV,"}/*!sc*/
.eewVHU{display:none;}/*!sc*/
@media (max-width:751px){.eewVHU{display:block;}}/*!sc*/
data-styled.g627[id="sc-1r0uxxj-2"]{content:"eewVHU,"}/*!sc*/
.kMVdSV{position:relative;cursor:pointer;}/*!sc*/
.kMVdSV:after{content:'';position:absolute;bottom:1px;left:0;width:100%;height:1px;border-bottom:1px solid #fff;}/*!sc*/
data-styled.g628[id="sc-1r0uxxj-3"]{content:"kMVdSV,"}/*!sc*/
.hgTHTJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g629[id="sc-10kui61-0"]{content:"hgTHTJ,"}/*!sc*/
.gEGbfQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-bottom:60px;}/*!sc*/
@media (max-width:751px){.gEGbfQ{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%;margin-bottom:52px;}}/*!sc*/
data-styled.g630[id="sc-10kui61-1"]{content:"gEGbfQ,"}/*!sc*/
.bpPrAe{margin-bottom:36px;}/*!sc*/
@media (max-width:1201px){.bpPrAe{display:none;}}/*!sc*/
data-styled.g631[id="sc-10kui61-2"]{content:"bpPrAe,"}/*!sc*/
.bTFiyu{-webkit-flex:1 0 416px;-ms-flex:1 0 416px;flex:1 0 416px;margin-left:96px;}/*!sc*/
@media (max-width:1201px){.bTFiyu{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-left:0;}}/*!sc*/
data-styled.g632[id="sc-7ugo7y-0"]{content:"bTFiyu,"}/*!sc*/
.iOYphy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:40px 32px;background:#fff;color:#0f0f10;border-radius:20px;}/*!sc*/
@media (max-width:751px){.iOYphy{padding:20px 16px;}}/*!sc*/
data-styled.g633[id="sc-7ugo7y-1"]{content:"iOYphy,"}/*!sc*/
.jFFNWn{margin-top:20px;}/*!sc*/
data-styled.g639[id="sc-ne2nun-0"]{content:"jFFNWn,"}/*!sc*/
.cWqojy{color:#4749c0;position:relative;background:none;padding:0;cursor:pointer;}/*!sc*/
.cWqojy:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.cWqojy:active{color:#585cff;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g641[id="sc-ne2nun-2"]{content:"cWqojy,"}/*!sc*/
.kgGhBx{margin-bottom:12px;}/*!sc*/
data-styled.g644[id="sc-1u84tez-2"]{content:"kgGhBx,"}/*!sc*/
.lcNwWc{margin-bottom:20px;}/*!sc*/
data-styled.g645[id="sc-1u84tez-3"]{content:"lcNwWc,"}/*!sc*/
.VNvrk{width:992px;}/*!sc*/
@media (max-width:1201px){.VNvrk{width:100%;}}/*!sc*/
data-styled.g647[id="sc-mgf5g0-0"]{content:"VNvrk,"}/*!sc*/
.cGuqjL{position:relative;height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:751px){.cGuqjL{margin-bottom:92px;padding:136px 0;}}/*!sc*/
data-styled.g648[id="sc-mgf5g0-1"]{content:"cGuqjL,"}/*!sc*/
.iMmpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.iMmpz{margin-bottom:80px;}}/*!sc*/
@media (max-width:751px){.iMmpz{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:40px;}}/*!sc*/
data-styled.g650[id="sc-mgf5g0-3"]{content:"iMmpz,"}/*!sc*/
.cIkHKG{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.cIkHKG{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g651[id="sc-mgf5g0-4"]{content:"cIkHKG,"}/*!sc*/
.cHLoOP{text-align:center;}/*!sc*/
data-styled.g652[id="sc-mgf5g0-5"]{content:"cHLoOP,"}/*!sc*/
.kiGnqS{margin-top:40px;display:none;}/*!sc*/
@media (max-width:1201px){.kiGnqS{display:inherit;}}/*!sc*/
data-styled.g653[id="sc-mgf5g0-6"]{content:"kiGnqS,"}/*!sc*/
.gOGHoc{background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:120px 0 0;padding:54px 64px;border-radius:20px;box-shadow:0px 0px 49px rgba(0,0,0,0.05);}/*!sc*/
@media (max-width:1201px){.gOGHoc{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:normal;-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;padding:48px 64px;}}/*!sc*/
@media (max-width:1201px){.gOGHoc{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:40px 24px;}}/*!sc*/
data-styled.g654[id="sc-hqry8z-0"]{content:"gOGHoc,"}/*!sc*/
.byqrft{-webkit-flex:1;-ms-flex:1;flex:1;color:#fff;white-space:pre-wrap;}/*!sc*/
@media (max-width:751px){.byqrft{white-space:normal;}}/*!sc*/
data-styled.g655[id="sc-hqry8z-1"]{content:"byqrft,"}/*!sc*/
.ipIyzP{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:288px;margin:0 32px 0 0;}/*!sc*/
@media (max-width:1201px){.ipIyzP{width:100%;margin:32px 0 0;}}/*!sc*/
@media (max-width:1201px){.ipIyzP{margin:28px 0 0;}}/*!sc*/
data-styled.g656[id="sc-hqry8z-2"]{content:"ipIyzP,"}/*!sc*/
.kGaApg:not(:last-child){margin-bottom:24px;}/*!sc*/
data-styled.g657[id="sc-1dvzzbq-0"]{content:"kGaApg,"}/*!sc*/
.bTvRzO{margin-bottom:40px;}/*!sc*/
.bTvRzO:last-child{margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.bTvRzO{margin-bottom:32px;}}/*!sc*/
@media (max-width:751px){.bTvRzO{margin-bottom:24px;}}/*!sc*/
data-styled.g659[id="sc-yxq6ju-1"]{content:"bTvRzO,"}/*!sc*/
.kOagS{padding-top:40px;}/*!sc*/
@media (max-width:1201px){.kOagS{padding-top:32px;}}/*!sc*/
@media (max-width:751px){.kOagS{padding-top:24px;}}/*!sc*/
data-styled.g660[id="sc-12j3cf5-0"]{content:"kOagS,"}/*!sc*/
.jTjgBj{margin:0 0 24px;}/*!sc*/
@media (max-width:751px){.jTjgBj{margin:0 0 16px;}}/*!sc*/
data-styled.g661[id="sc-12j3cf5-1"]{content:"jTjgBj,"}/*!sc*/
.cmpQoV{margin-bottom:120px;padding-top:80px;border-top:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.cmpQoV{margin-bottom:58px;}}/*!sc*/
@media (max-width:751px){.cmpQoV{margin-bottom:64px;}}/*!sc*/
data-styled.g668[id="sc-1am6qh7-0"]{content:"cmpQoV,"}/*!sc*/
.bmcDgO{width:992px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.bmcDgO{width:100%;}}/*!sc*/
@media (max-width:751px){.bmcDgO{width:100%;}}/*!sc*/
data-styled.g669[id="sc-1am6qh7-1"]{content:"bmcDgO,"}/*!sc*/
.jZdzTX{margin-bottom:76px;}/*!sc*/
@media (max-width:1201px){.jZdzTX{margin-bottom:84px;}}/*!sc*/
@media (max-width:751px){.jZdzTX{margin-bottom:32px;}}/*!sc*/
data-styled.g670[id="sc-1am6qh7-2"]{content:"jZdzTX,"}/*!sc*/
.coDgWq{width:512px;}/*!sc*/
@media (max-width:1201px){.coDgWq{width:500px;}}/*!sc*/
@media (max-width:751px){.coDgWq{width:352px;}}/*!sc*/
data-styled.g671[id="sc-wqbts8-0"]{content:"coDgWq,"}/*!sc*/
.jjMVIs{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:992px;margin:0 auto 212px;}/*!sc*/
@media (max-width:1201px){.jjMVIs{margin-bottom:198px;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}}/*!sc*/
@media (max-width:751px){.jjMVIs{margin-bottom:136px;}}/*!sc*/
data-styled.g672[id="sc-130tum6-0"]{content:"jjMVIs,"}/*!sc*/
.leLsGR{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:480px;}/*!sc*/
.leLsGR h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;}/*!sc*/
@media (max-width:1201px){.leLsGR h2{font-size:52px;line-height:64px;max-width:100%;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.leLsGR h2{font-size:24px;line-height:28px;margin-top:28px;}}/*!sc*/
@media (max-width:1201px){.leLsGR{max-width:100%;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.leLsGR{margin-top:28px;}}/*!sc*/
data-styled.g673[id="sc-130tum6-1"]{content:"leLsGR,"}/*!sc*/
.hejpaX{color:#afafaf;}/*!sc*/
data-styled.g695[id="sc-uyf7sm-0"]{content:"hejpaX,"}/*!sc*/
.gQNEkq{padding:40px 64px;background:#fff;border-radius:20px;height:100%;}/*!sc*/
@media (max-width:1201px){.gQNEkq.swiper-slide{width:544px;padding:40px;}}/*!sc*/
@media (max-width:751px){.gQNEkq.swiper-slide{width:100%;margin:0;padding:24px 16px;}}/*!sc*/
data-styled.g696[id="sc-h3yero-0"]{content:"gQNEkq,"}/*!sc*/
.kaQYTv{color:#0f0f10;margin-bottom:16px;}/*!sc*/
@media (max-width:751px){.kaQYTv{margin-bottom:4px;}}/*!sc*/
data-styled.g697[id="sc-h3yero-1"]{content:"kaQYTv,"}/*!sc*/
.dOvyBf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:20px;}/*!sc*/
data-styled.g698[id="sc-h3yero-2"]{content:"dOvyBf,"}/*!sc*/
.keJcdl{margin-right:24px;}/*!sc*/
data-styled.g699[id="sc-h3yero-3"]{content:"keJcdl,"}/*!sc*/
.kiCBYx{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/c3/79/avatar-631638-c37927.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.kiCBYx{width:60px;height:60px;}}/*!sc*/
data-styled.g700[id="sc-h3yero-4"]{content:"kiCBYx,"}/*!sc*/
.dYfXnT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:30%;}/*!sc*/
@media (max-width:1201px){.dYfXnT{max-width:208px;}}/*!sc*/
@media (max-width:751px){.dYfXnT{max-width:92px;}}/*!sc*/
data-styled.g701[id="sc-h3yero-5"]{content:"dYfXnT,"}/*!sc*/
.fwXQYP{color:#0f0f10;margin-bottom:16px;word-wrap:break-word;overflow:hidden;max-height:168px;display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;}/*!sc*/
@media (max-width:1201px){.fwXQYP{word-wrap:break-word;overflow:hidden;max-height:144px;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;}}/*!sc*/
@media (max-width:751px){.fwXQYP{word-wrap:break-word;overflow:hidden;max-height:216px;display:-webkit-box;-webkit-line-clamp:9;-webkit-box-orient:vertical;}}/*!sc*/
data-styled.g704[id="sc-h3yero-8"]{content:"fwXQYP,"}/*!sc*/
.dXezGA{margin-bottom:120px;position:relative;}/*!sc*/
@media (max-width:751px){.dXezGA{margin-bottom:80px;}}/*!sc*/
data-styled.g706[id="sc-h0c1ca-0"]{content:"dXezGA,"}/*!sc*/
@media (min-width:1200px){.gaiDWC{margin:-16px -16px 0;}}/*!sc*/
data-styled.g707[id="sc-h0c1ca-1"]{content:"gaiDWC,"}/*!sc*/
.dygiGU{margin-left:64px;margin-bottom:60px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.dygiGU{margin-left:0;margin-bottom:44px;}}/*!sc*/
@media (max-width:751px){.dygiGU{margin-bottom:24px;}}/*!sc*/
data-styled.g710[id="sc-h0c1ca-4"]{content:"dygiGU,"}/*!sc*/
@media (max-width:1201px){.vuxta .swiper{margin-right:-36px;}}/*!sc*/
@media (max-width:751px){.vuxta .swiper{margin-right:0;}}/*!sc*/
data-styled.g711[id="sc-h0c1ca-5"]{content:"vuxta,"}/*!sc*/
.idGFuj{background-image:url(https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.idGFuj:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
.ePCyAq{background-image:url(https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.ePCyAq:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
data-styled.g712[id="sc-jotj87-0"]{content:"idGFuj,ePCyAq,"}/*!sc*/
.llfUGX{cursor:pointer;position:relative;width:256px;height:380px;cursor:default;}/*!sc*/
@media (max-width:1201px){.llfUGX{width:172px;height:255px;}}/*!sc*/
@media (max-width:751px){.llfUGX{width:136px;height:200px;}}/*!sc*/
data-styled.g713[id="sc-jotj87-1"]{content:"llfUGX,"}/*!sc*/
.fhizvJ{color:#fff;position:absolute;top:16px;left:16px;z-index:1;will-change:background-color,padding,border-radius,transform;border-radius:20px;background-color:#25b969;padding:4px 8px;}/*!sc*/
@media (max-width:751px){.fhizvJ{padding:2px 6px;top:5px;left:5px;right:5px;}}/*!sc*/
data-styled.g717[id="sc-jotj87-5"]{content:"fhizvJ,"}/*!sc*/
.ikwDNo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:24px 0 0;}/*!sc*/
@media (max-width:1201px){.ikwDNo{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g722[id="sc-1qbysh1-0"]{content:"ikwDNo,"}/*!sc*/
.jeXkAk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 32px 0 0;}/*!sc*/
.jeXkAk:last-child{margin-right:0;}/*!sc*/
@media (max-width:1201px){.jeXkAk{margin-right:0;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.jeXkAk{margin-bottom:12px;}}/*!sc*/
data-styled.g723[id="sc-1qbysh1-1"]{content:"jeXkAk,"}/*!sc*/
.fwfLnF{margin-left:12px;}/*!sc*/
data-styled.g724[id="sc-1qbysh1-2"]{content:"fwfLnF,"}/*!sc*/
.ejZqaz{display:grid;grid-template-rows:min-content auto;gap:24px 64px;grid-template-areas:'a b' 'a b';grid-template-columns:min-content auto;}/*!sc*/
@media (max-width:1201px){.ejZqaz{grid-template-areas:'a b' 'c c';grid-template-columns:min-content auto;gap:24px;}}/*!sc*/
.fyaSEb{display:grid;grid-template-rows:min-content auto;gap:24px 64px;grid-template-areas:'b a' 'b a';grid-template-columns:auto min-content;}/*!sc*/
@media (max-width:1201px){.fyaSEb{grid-template-areas:'b a' 'c c';grid-template-columns:auto min-content;gap:24px;}}/*!sc*/
data-styled.g725[id="sc-1xbggqf-0"]{content:"ejZqaz,fyaSEb,"}/*!sc*/
.gKEGyD{grid-area:a;}/*!sc*/
data-styled.g726[id="sc-1xbggqf-1"]{content:"gKEGyD,"}/*!sc*/
@media (max-width:751px){.fnEOTo{width:100%;}}/*!sc*/
data-styled.g727[id="sc-1xbggqf-2"]{content:"fnEOTo,"}/*!sc*/
.ilGgzP{margin:8px 0 0;}/*!sc*/
data-styled.g728[id="sc-1xbggqf-3"]{content:"ilGgzP,"}/*!sc*/
.bqxXZo{font-style:italic;margin:8px 0 0;}/*!sc*/
data-styled.g729[id="sc-1xbggqf-4"]{content:"bqxXZo,"}/*!sc*/
.jdBfaz{overflow:auto;padding:0 15px 0 0;}/*!sc*/
@media (max-width:1201px){.jdBfaz{grid-area:c;}}/*!sc*/
data-styled.g730[id="sc-1xbggqf-5"]{content:"jdBfaz,"}/*!sc*/
.bsOVrL{white-space:break-spaces;margin:0 0 40px;}/*!sc*/
@media (max-width:1201px){.bsOVrL{margin:0 0 24px;}}/*!sc*/
@media (max-width:751px){.bsOVrL{margin:0 0 40px;}}/*!sc*/
data-styled.g731[id="sc-1xbggqf-6"]{content:"bsOVrL,"}/*!sc*/
.gwAjdk{margin-bottom:24px;}/*!sc*/
data-styled.g733[id="sc-1xbggqf-8"]{content:"gwAjdk,"}/*!sc*/
.gShPHD{margin:-24px 0 32px;padding:0;overflow:hidden;margin-bottom:0;margin-top:0;}/*!sc*/
data-styled.g734[id="sc-1xbggqf-9"]{content:"gShPHD,"}/*!sc*/
.jyEMds{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;margin:0 0 12px;color:#fff;}/*!sc*/
@media (max-width:1201px){.jyEMds{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.jyEMds{font-size:16px;line-height:24px;}}/*!sc*/
.jyEMds:last-child{margin-bottom:0;}/*!sc*/
.jyEMds::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.jyEMds:before{color:currentColor;}/*!sc*/
data-styled.g735[id="sc-1xbggqf-10"]{content:"jyEMds,"}/*!sc*/
.iJNhSn{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.iJNhSn{width:100%;}}/*!sc*/
data-styled.g736[id="sc-7bqyxh-0"]{content:"iJNhSn,"}/*!sc*/
.eTWzoY{position:relative;height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:751px){.eTWzoY{margin-bottom:92px;padding:136px 0;}}/*!sc*/
data-styled.g737[id="sc-7bqyxh-1"]{content:"eTWzoY,"}/*!sc*/
.imGcoX{overflow:hidden;padding:0 105px;margin:0 -105px;}/*!sc*/
@media (max-width:1201px){.imGcoX{padding:0 36px;margin:0 -36px;}}/*!sc*/
@media (max-width:751px){.imGcoX{padding:0 16px;margin:0 -16px;}}/*!sc*/
data-styled.g738[id="sc-7bqyxh-2"]{content:"imGcoX,"}/*!sc*/
.ejfgvS{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.ejfgvS{margin-bottom:76px;}}/*!sc*/
@media (max-width:751px){.ejfgvS{margin-bottom:40px;}}/*!sc*/
data-styled.g739[id="sc-7bqyxh-3"]{content:"ejfgvS,"}/*!sc*/
.jUXBik{position:relative;width:992px;}/*!sc*/
.jUXBik::before{content:'';display:block;width:288px;height:1px;margin:0 0 24px;background:#fff;}/*!sc*/
@media (max-width:1201px){.jUXBik{width:100%;}}/*!sc*/
@media (max-width:751px){.jUXBik{width:100%;}}/*!sc*/
data-styled.g740[id="sc-7bqyxh-4"]{content:"jUXBik,"}/*!sc*/
.kaSYYd{padding:80px 0;color:#fff;border-bottom:1px solid #ffffff;}/*!sc*/
.kaSYYd:first-child{padding-top:0;}/*!sc*/
.kaSYYd:last-child{margin-bottom:80px;border-bottom:none;}/*!sc*/
@media (max-width:1201px){.kaSYYd:last-child{margin-bottom:40px;}}/*!sc*/
data-styled.g742[id="sc-7bqyxh-6"]{content:"kaSYYd,"}/*!sc*/
.cjUVzd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 auto 67px;padding:0 64px 0;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cjUVzd{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 auto 110px;padding:0;}}/*!sc*/
@media (max-width:751px){.cjUVzd{margin:0 auto 50px;}}/*!sc*/
data-styled.g743[id="sc-rvdro8-0"]{content:"cjUVzd,"}/*!sc*/
.hIDsVz{margin:0 0 40px;}/*!sc*/
@media (max-width:751px){.hIDsVz{margin:0 0 24px;}}/*!sc*/
data-styled.g745[id="sc-rvdro8-2"]{content:"hIDsVz,"}/*!sc*/
.fAoRTp{min-width:448px;width:448px;min-height:448px;height:448px;margin:0 32px 0 0;object-fit:contain;}/*!sc*/
@media (max-width:1201px){.fAoRTp{min-width:547px;width:547px;min-height:547px;height:547px;margin:0 auto 24px;}}/*!sc*/
@media (max-width:751px){.fAoRTp{min-width:352px;width:352px;min-height:352px;height:352px;margin:0 auto 40px;}}/*!sc*/
data-styled.g746[id="sc-rvdro8-1-Component"]{content:"fAoRTp,"}/*!sc*/
.bbEYfR{margin-bottom:120px;}/*!sc*/
@media (max-width:1201px){.bbEYfR{margin-bottom:80px;}}/*!sc*/
@media (max-width:751px){.bbEYfR{margin-bottom:40px;}}/*!sc*/
data-styled.g747[id="sc-nqd633-0"]{content:"bbEYfR,"}/*!sc*/
.jliiMx{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:0;padding:120px 0 0;background:inherit;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.jliiMx{padding:160px 0 0;}}/*!sc*/
@media (max-width:751px){.jliiMx{padding:80px 0 0;}}/*!sc*/
data-styled.g748[id="sc-oy98rf-0"]{content:"jliiMx,"}/*!sc*/
.ikxHfK{background:linear-gradient( 99.66deg,#59018E 11.62%,#360061 87.01% );}/*!sc*/
data-styled.g749[id="sc-oy98rf-1"]{content:"ikxHfK,"}/*!sc*/
.bLWaqJ{padding:0;}/*!sc*/
data-styled.g750[id="sc-oy98rf-2"]{content:"bLWaqJ,"}/*!sc*/
.fMEenG{padding:120px 0 96px;}/*!sc*/
@media (max-width:1201px){.fMEenG{padding:123px 0 35px;}}/*!sc*/
data-styled.g751[id="sc-oy98rf-3"]{content:"fMEenG,"}/*!sc*/
.kXtOIJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:60px;padding:40px 0;position:relative;color:#fff;}/*!sc*/
.kXtOIJ:after{content:'';position:absolute;left:0;top:0;right:0;opacity:0.2;height:1px;background-color:#fff;}/*!sc*/
@media (max-width:1201px){.kXtOIJ{width:100%;margin-top:40px;}}/*!sc*/
@media (max-width:751px){.kXtOIJ{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;padding:24px 0;}}/*!sc*/
data-styled.g752[id="sc-19c5cbt-0"]{content:"kXtOIJ,"}/*!sc*/
.fvpIrL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:751px){.fvpIrL{margin-bottom:24px;width:100%;}}/*!sc*/
data-styled.g753[id="sc-19c5cbt-1"]{content:"fvpIrL,"}/*!sc*/
.jbfvPl{color:#fff;margin-top:24px;}/*!sc*/
@media (max-width:1201px){.jbfvPl{margin-top:40px;}}/*!sc*/
data-styled.g754[id="sc-b223p8-0"]{content:"jbfvPl,"}/*!sc*/
.kexDMw{margin-bottom:16px;display:inline-block;}/*!sc*/
data-styled.g755[id="sc-b223p8-1"]{content:"kexDMw,"}/*!sc*/
@media (max-width:1201px){.cpJPIb{line-height:16px;}.cpJPIb:after{bottom:1px;}}/*!sc*/
@media (max-width:751px){.cpJPIb:after{bottom:3px;}}/*!sc*/
data-styled.g756[id="sc-b223p8-2"]{content:"cpJPIb,"}/*!sc*/
.kqoeNm{position:relative;display:inline-block;margin:0 0 16px;white-space:nowrap;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.kqoeNm:last-child{margin:0;}/*!sc*/
data-styled.g757[id="sc-b223p8-3"]{content:"kqoeNm,"}/*!sc*/
.dmOCHb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#fff;}/*!sc*/
@media (max-width:751px){.dmOCHb{margin-bottom:44px;}}/*!sc*/
data-styled.g758[id="sc-s8yol2-0"]{content:"dmOCHb,"}/*!sc*/
.fSkxQH{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g759[id="sc-s8yol2-1"]{content:"fSkxQH,"}/*!sc*/
@media (min-width:1200px){.jinSfn{max-width:160px;width:160px;margin-right:32px;}}/*!sc*/
@media (max-width:1201px){.jinSfn{max-width:104px;width:104px;margin-right:48px;}}/*!sc*/
data-styled.g760[id="sc-s8yol2-2"]{content:"jinSfn,"}/*!sc*/
@media (min-width:1200px){.nSSml{max-width:256px;width:256px;margin-right:32px;}}/*!sc*/
@media (max-width:1201px){.nSSml{max-width:176px;width:176px;margin-right:0;}}/*!sc*/
@media (max-width:751px){.nSSml{margin-right:0;}}/*!sc*/
data-styled.g761[id="sc-s8yol2-3"]{content:"nSSml,"}/*!sc*/
.dopIUT{position:relative;margin-bottom:16px;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.dopIUT:last-child{margin-bottom:0;}/*!sc*/
data-styled.g762[id="sc-s8yol2-4"]{content:"dopIUT,"}/*!sc*/
.MecOH{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:256px;margin-right:32px;color:#fff;}/*!sc*/
@media (max-width:1201px){.MecOH{width:240px;margin-right:0;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.MecOH{width:352px;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-top:40px;}}/*!sc*/
data-styled.g763[id="sc-15qczmr-0"]{content:"MecOH,"}/*!sc*/
.dpoRMu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:38px;}/*!sc*/
@media (max-width:1201px){.dpoRMu{margin-bottom:33px;}}/*!sc*/
@media (max-width:751px){.dpoRMu{margin-bottom:0;margin-top:24px;}}/*!sc*/
data-styled.g764[id="sc-15qczmr-1"]{content:"dpoRMu,"}/*!sc*/
.jKMwie{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUivk-1a499178c819de0f4161a07172b27f6b.svg);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.jKMwie{height:24px;width:24px;}}/*!sc*/
.eFVTJV{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUiyt-84e5fa7c2e582191762486a7be2c2652.svg);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.eFVTJV{height:24px;width:24px;}}/*!sc*/
.hUuIIY{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUidzen-cfe01a671b9064c8e5d54b2ac5895a0c.png);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.hUuIIY{height:24px;width:24px;}}/*!sc*/
data-styled.g765[id="sc-15qczmr-2"]{content:"jKMwie,eFVTJV,hUuIIY,"}/*!sc*/
.foluGF{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
@media (max-width:751px){.foluGF{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}/*!sc*/
data-styled.g766[id="sc-15qczmr-3"]{content:"foluGF,"}/*!sc*/
.hMqYlN{margin-bottom:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
@media (max-width:1201px){.hMqYlN{margin-bottom:16px;}}/*!sc*/
@media (max-width:751px){.hMqYlN{margin-bottom:0;margin-right:32px;}.hMqYlN:last-child{margin-right:0;}}/*!sc*/
data-styled.g767[id="sc-15qczmr-4"]{content:"hMqYlN,"}/*!sc*/
.kmPvgJ{margin-right:32px;width:32px;height:32px;background-image:url(/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.kmPvgJ{margin-right:8px;width:24px;height:24px;}}/*!sc*/
data-styled.g768[id="sc-15qczmr-5"]{content:"kmPvgJ,"}/*!sc*/
.driyCh{position:relative;white-space:nowrap;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
@media (max-width:1201px){.driyCh{line-height:16px;-webkit-text-decoration:none;text-decoration:none;}}/*!sc*/
data-styled.g769[id="sc-15qczmr-6"]{content:"driyCh,"}/*!sc*/
.ceClWZ{min-width:100%;width:100%;min-height:100%;height:100%;cursor:pointer;z-index:1;position:absolute;top:0;left:0;opacity:0;}/*!sc*/
data-styled.g771[id="sc-j40lj7-0"]{content:"ceClWZ,"}/*!sc*/
.dWxMps{min-width:24px;width:24px;min-height:24px;height:24px;-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;will-change:transform;will-change:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}/*!sc*/
data-styled.g772[id="sc-hd7keq-0"]{content:"dWxMps,"}/*!sc*/
.eZuRED{-webkit-transition:border-color 0.2s ease-out;transition:border-color 0.2s ease-out;will-change:border-color;min-width:24px;width:24px;min-height:24px;height:24px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:relative;border:1px solid;border-radius:3.5px;color:#4749c0;background-color:#fff;border-color:#4749c0;}/*!sc*/
data-styled.g775[id="sc-12fwr4-0"]{content:"eZuRED,"}/*!sc*/
.exsZZC{position:absolute;top:-1px;left:-1px;}/*!sc*/
data-styled.g776[id="sc-12fwr4-1"]{content:"exsZZC,"}/*!sc*/
.eAOVcR{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g777[id="sc-1fry39v-0"]{content:"eAOVcR,"}/*!sc*/
.kMJHVN{margin:0 0 0 16px;}/*!sc*/
data-styled.g778[id="sc-1fry39v-1"]{content:"kMJHVN,"}/*!sc*/
.fyzNNQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#0f0f10;}/*!sc*/
data-styled.g779[id="sc-dusc05-0"]{content:"fyzNNQ,"}/*!sc*/
.fgICvQ{color:inherit;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.fgICvQ:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g780[id="sc-dusc05-1"]{content:"fgICvQ,"}/*!sc*/
.fYuJAI{color:#fff;}/*!sc*/
data-styled.g782[id="sc-des2oc-0"]{content:"fYuJAI,"}/*!sc*/
.hbxrvB{margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.hbxrvB{margin-bottom:22px;}}/*!sc*/
@media (max-width:751px){.hbxrvB{margin-bottom:16px;}}/*!sc*/
data-styled.g783[id="sc-des2oc-1"]{content:"hbxrvB,"}/*!sc*/
.iHEhCu{display:grid;grid-template-areas:'a b' 'c c';grid-template-columns:240px 96px;gap:12px 16px;}/*!sc*/
@media (max-width:1201px){.iHEhCu{grid-template-columns:200px 96px;gap:8px 8px;}}/*!sc*/
@media (max-width:751px){.iHEhCu{grid-template-columns:244px 96px;gap:10px 12px;}}/*!sc*/
data-styled.g784[id="sc-des2oc-2"]{content:"iHEhCu,"}/*!sc*/
.heMBup{grid-area:a;}/*!sc*/
data-styled.g785[id="sc-des2oc-3"]{content:"heMBup,"}/*!sc*/
.dqoHct{grid-area:b;}/*!sc*/
data-styled.g786[id="sc-des2oc-4"]{content:"dqoHct,"}/*!sc*/
.kSlCOl{grid-area:c;color:inherit;}/*!sc*/
data-styled.g787[id="sc-des2oc-5"]{content:"kSlCOl,"}/*!sc*/
.kVOlcO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g788[id="sc-176eli6-0"]{content:"kVOlcO,"}/*!sc*/
.bIqTVy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g789[id="sc-176eli6-1"]{content:"bIqTVy,"}/*!sc*/
.hRGcmY{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g790[id="sc-176eli6-2"]{content:"hRGcmY,"}/*!sc*/
.kmquqg{object-fit:contain;}/*!sc*/
data-styled.g791[id="sc-ed2fvu-0"]{content:"kmquqg,"}/*!sc*/
.fCchjz{width:100%;margin:auto;}/*!sc*/
data-styled.g792[id="sc-1urziip-0"]{content:"fCchjz,"}/*!sc*/
.cPEbNj{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:82px;height:40px;}/*!sc*/
@media (max-width:1201px){.cPEbNj{margin-right:12px;width:41px;height:24px;}}/*!sc*/
data-styled.g793[id="sc-1urziip-1"]{content:"cPEbNj,"}/*!sc*/
.fEJhZn{margin-right:40px;width:140px;height:40px;background-image:url(/_next/static/images/img/runet-9d9c302c854bd21ffd433cffadd5fc46.png);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.fEJhZn{margin-right:12px;width:84px;height:24px;}}/*!sc*/
data-styled.g794[id="sc-1jb0vz0-0"]{content:"fEJhZn,"}/*!sc*/
.bQKtqJ{margin-right:40px;width:136px;height:40px;background-image:url(/_next/static/images/img/skolkovo-2f0a909e8e465c8d5951d639c67b62c9.svg);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.bQKtqJ{margin-right:12px;width:82px;height:24px;}}/*!sc*/
data-styled.g795[id="sc-1jb0vz0-1"]{content:"bQKtqJ,"}/*!sc*/
</style></head><body><div id="__next"><script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "Course",
"name": "Разработка ядра Linux",
"url": "https://otus.ru",
"logo": "https://otus.ru/__new_static__/img/meta-image.png",
"sameAs": [
"https://vk.com/otusru",
"https://t.me/Otusjava"
],
"description": "Разработка ядра Linux",
"provider": {
"@type": "Organization",
"name": "OTUS",
"sameAs": "https://otus.ru"
},
"image": "https://otus.ru/__new_static__/img/meta-image.png",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": "150"
},
"offers": {
"@type": "Offer",
"priceCurrency": "RUB",
"price": 70000,
"availability": "https://schema.org/InStock",
"url": "https://otus.ru/lessons/linux-kernel"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"name": "Разработка ядра Linux (Онлайн)",
"courseMode": "Online",
"startDate": "2026-04-30",
"endDate": "2026-11-10",
"duration": "P6M"
}
}</script><div class="sc-1j17uuq-0 klmZDZ sc-1b3dhyb-0 bzaXwp"><div class="ui-chunk-container sc-1pwtpfp-0 dMvvUT sc-1pwtpfp-0 dMvvUT"><div class="before-header-ui">
<div class="before-header-ui__ellipse1"></div>
<div class="before-header-ui__ellipse2"></div>
<div class="before-header-ui__container">
<div class="before-header-ui__img before-header-ui__img_sales"></div>
<div class="before-header-ui__content">
<div class="before-header-ui__title hide-phone">Курсы по нейросетям со скидкой до 30%</div>
<div class="before-header-ui__title show-phone">Курсы по нейросетям со скидкой до 30%</div>
</div>
<a class="before-header-ui__button" rel="noopener" href="https://otus.ru/catalog/courses?categories=neural_networks&utm_source=internal&utm_medium=free&utm_campaign=otus&utm_term=chank&utm_content=sla_sale_20-02-2026-10-04-2026" target="_blank">Выбрать курс</a>
</div>
</div></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div id="main-menu" class="sc-r03h0s-0 dKnRmO"><div class="sc-x072mc-0 sc-1x9oq14-0-styled-div sc-r03h0s-1 hOtCic eFDQwF bMTmMH"><a class="sc-r03h0s-2 iLJJBX" href="/"><img src="/_next/static/images/img/logo2022_without_text-ad6a01e8608432b9967c441a0f4760b4.svg" alt="OTUS Logo" width="82" height="42" class="sc-136rsxq-0 dxxUfg"/></a><nav class="sc-r03h0s-3 kVvakX"><div class="sc-r03h0s-5 sc-1youhxc-2 sc-k2vhmo-0 bYKNcH gAMwby gnDzft"><div class="sc-k2vhmo-1 cYMYSf"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-k2vhmo-2 etPPJE"><circle cx="11.7666" cy="11.7666" r="8.98856" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle><path d="M18.0183 18.4852L21.5423 22.0001" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><div class="sc-r03h0s-5 sc-1youhxc-2 cGgLky ewISlX"><span title="Обучение" class="sc-1youhxc-1 cMNIlZ">Обучение</span> <div size="24" class="sc-i28ik1-0 bmVffP sc-1youhxc-0 dwrtLP"><div class="sc-i28ik1-1 gNVXtU"><svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-8zcw6d-0 eJDLVL"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.10067 0.378818C1.29593 0.183556 1.61251 0.183555 1.80778 0.378818L5.00023 3.57127L8.19272 0.378777C8.38798 0.183515 8.70457 0.183515 8.89983 0.378777C9.09509 0.574039 9.09509 0.890622 8.89983 1.08588L5.3643 4.62142C5.26426 4.72146 5.13237 4.77024 5.00127 4.76777C4.8695 4.77079 4.73676 4.72202 4.6362 4.62146L1.10067 1.08592C0.905408 0.890663 0.905408 0.57408 1.10067 0.378818Z" fill="currentColor"></path></svg></div></div></div><div class="sc-piuiz2-0 fEESDM"><div class="sc-piuiz2-1 fDVGGf"><svg class="sc-1gml7ra-3 XomuX sc-r03h0s-6 sc-1891c19-0 kpxsrg ggDqfB" viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.573 140.619C131.659 71.6017 210.245 34.9562 267.027 74.6573L553.942 275.262C610.723 314.962 603.117 401.233 540.247 430.55L222.58 578.681C159.71 607.997 88.7344 558.37 94.8204 489.355L125.573 140.619Z" stroke="#eaeaea" class="sc-1gml7ra-0 hERPbJ"></path><path d="M148.472 246.647C133.624 191.005 184.615 140.013 240.257 154.862L519.856 229.476C575.498 244.325 594.059 313.877 553.266 354.67L348.281 559.656C307.488 600.449 237.935 581.888 223.087 526.246L148.472 246.647Z" fill="url(#4407369ca074ed978499b500)"></path><defs><linearGradient id="4407369ca074ed978499b500" x1="128.696" y1="395.739" x2="443.538" y2="180.173" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(249, 249, 249, 1)"></stop><stop offset="1" stop-color="rgba(235, 235, 235, 1)"></stop></linearGradient></defs></svg><div class="sc-piuiz2-2 fhxPhf"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Направления</p><div class="sc-1kjc6dh-2 sc-ig0m9y-0 lhsLfs cgYLnJ"><a class="sc-4zz0i4-0 dZepSJ" href="/categories/programming">Программирование<!-- --> (<!-- -->117<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/architecture">Архитектура<!-- --> (<!-- -->17<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/data-science">Data Science<!-- --> (<!-- -->27<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/operations">Инфраструктура<!-- --> (<!-- -->58<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/gamedev">GameDev<!-- --> (<!-- -->10<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/information-security-courses">Безопасность<!-- --> (<!-- -->15<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/marketing-business">Управление<!-- --> (<!-- -->46<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/analytics">Аналитика и анализ<!-- --> (<!-- -->25<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/business-product">Бизнес и продукт в IT<!-- --> (<!-- -->26<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/import-substitution">Импортозамещение<!-- --> (<!-- -->15<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/testing">Тестирование<!-- --> (<!-- -->12<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/neural_networks">Нейросети<!-- --> (<!-- -->9<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/it-bez-programmirovanija">IT без программирования<!-- --> (<!-- -->19<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/corporate">Корпоративные курсы<!-- --> (<!-- -->27<!-- -->)</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">События</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/lessons/calendar/2026">Календарь запуска курсов</a><a class="sc-4zz0i4-0 dZepSJ" href="/events/near">Календарь мероприятий</a></div></div><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Другое</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/categories/spec">Специализации<!-- --> (<!-- -->13<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/online">Подготовительные курсы<!-- --> (<!-- -->14<!-- -->)</a><a class="sc-4zz0i4-0 gXNPrh" href="/subscription">Подписка на курсы</a><a class="sc-4zz0i4-0 dZepSJ" href="/tests">Проверьте свои знания</a></div></div></div></div></div></div><div class="sc-r03h0s-5 sc-1youhxc-2 cGgLky ewISlX"><span title="Информация" class="sc-1youhxc-1 cMNIlZ">Информация</span> <div size="24" class="sc-i28ik1-0 bmVffP sc-1youhxc-0 dwrtLP"><div class="sc-i28ik1-1 gNVXtU"><svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-8zcw6d-0 eJDLVL"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.10067 0.378818C1.29593 0.183556 1.61251 0.183555 1.80778 0.378818L5.00023 3.57127L8.19272 0.378777C8.38798 0.183515 8.70457 0.183515 8.89983 0.378777C9.09509 0.574039 9.09509 0.890622 8.89983 1.08588L5.3643 4.62142C5.26426 4.72146 5.13237 4.77024 5.00127 4.76777C4.8695 4.77079 4.73676 4.72202 4.6362 4.62146L1.10067 1.08592C0.905408 0.890663 0.905408 0.57408 1.10067 0.378818Z" fill="currentColor"></path></svg></div></div></div><div class="sc-piuiz2-0 fEESDM"><div class="sc-piuiz2-1 fDVGGf"><svg class="sc-1gml7ra-3 XomuX sc-r03h0s-6 sc-1891c19-0 kpxsrg ggDqfB" viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.573 140.619C131.659 71.6017 210.245 34.9562 267.027 74.6573L553.942 275.262C610.723 314.962 603.117 401.233 540.247 430.55L222.58 578.681C159.71 607.997 88.7344 558.37 94.8204 489.355L125.573 140.619Z" stroke="#eaeaea" class="sc-1gml7ra-0 hERPbJ"></path><path d="M148.472 246.647C133.624 191.005 184.615 140.013 240.257 154.862L519.856 229.476C575.498 244.325 594.059 313.877 553.266 354.67L348.281 559.656C307.488 600.449 237.935 581.888 223.087 526.246L148.472 246.647Z" fill="url(#6fe593cd0da032828499f0b4)"></path><defs><linearGradient id="6fe593cd0da032828499f0b4" x1="128.696" y1="395.739" x2="443.538" y2="180.173" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(249, 249, 249, 1)"></stop><stop offset="1" stop-color="rgba(235, 235, 235, 1)"></stop></linearGradient></defs></svg><div class="sc-piuiz2-2 fhxPhf"><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">OTUS</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/about">О компании</a><a class="sc-4zz0i4-0 dZepSJ" href="/smi">СМИ о нас</a><a class="sc-4zz0i4-0 dZepSJ" href="/journal">OTUS Журнал</a><a class="sc-4zz0i4-0 dZepSJ" href="https://direct.otus.ru" target="_blank" rel="noopener noreferrer">OTUS Директ</a><a class="sc-4zz0i4-0 dZepSJ" href="/legal/common">Сведения об образовательной организации</a><a class="sc-4zz0i4-0 dZepSJ" rel="noopener noreferrer" href="/contacts">Контактная информация</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Студентам</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/reviews">Отзывы</a><a class="sc-4zz0i4-0 dZepSJ" href="https://landing.otus.ru/about-otus ">Как выбрать курс</a><a class="sc-4zz0i4-0 dZepSJ" href="https://landing.otus.ru/gallery">Истории выпускников</a><a class="sc-4zz0i4-0 dZepSJ" href="/instructors">Наши преподаватели</a><a class="sc-4zz0i4-0 dZepSJ" href="/employers/all">Наши партнеры</a><a class="sc-4zz0i4-0 dZepSJ" href="/about/loyalty">Программа лояльности</a><a class="sc-4zz0i4-0 dZepSJ" href="/faq">Вопросы и ответы</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Преподавателям</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/teach">Стать преподавателем</a><a class="sc-4zz0i4-0 dZepSJ" href="/instructors">Наши преподаватели</a><a class="sc-4zz0i4-0 dZepSJ" href="/nest/dlja-prepodavatelej">База знаний</a></div></div></div></div></div></div><a class="sc-1vdp0yy-0 ldwIhb sc-r03h0s-5 sc-r03h0s-7 cGgLky jHaHbB" href="/b2b">Компаниям</a></nav><section class="sc-1pw2hu9-0 deZXFK"><div class="sc-r03h0s-5 sc-gqclrv-0 cGgLky eDycrR"><div class="sc-199a3eq-1-div cwTwwh sc-hrqzy3-0 jTtOKw"><div class="sc-hrqzy3-1 faPWUN"></div><div class="sc-1xopqwy-0 LDEpF"></div></div><p class="sc-1x9oq14-0 sc-gqclrv-1 eMZyoN rcsBI sc-hrqzy3-0 ePGOOQ"><div class="sc-1xopqwy-0 iXhGSD">UserPartName</div></p></div></section></div></div><main class="sc-1j17uuq-1 dPcKhb"><div class="sc-1b3dhyb-1 dvLdDh"><section class="sc-s2pydo-0 eufkJz"><div class="sc-4o7hfp-0 jDOZfu"><div class="sc-1vxm7ng-0 golIF"><div class="sc-1vxm7ng-2 jxmQOK"><a href="/categories/programming">Программирование</a><svg class="sc-1vxm7ng-1 dbOiAN" width="7" height="10" viewBox="0 0 7 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div><div class="sc-1vxm7ng-2 jxmQOK"><span>Разработка ядра Linux</span></div></div><div class="sc-4o7hfp-1 eBROUt"><div class="sc-4o7hfp-2 fHVRxg"></div></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-s2pydo-5 iHjMxQ"><i class="sc-1ddwpfq-0 hbmMMm"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-s2pydo-6 EOCgR sc-x072mc-0 hOtCic"><h1 class="sc-1x9oq14-0 sc-s2pydo-1 kswXpy diGrSa">Разработка ядра Linux</h1><div class="sc-1x9oq14-0 sc-s2pydo-3 enpOeQ dZDxRw"><div><span>Понимание ядра Linux: от архитектуры до разработки эффективных модулей</span></div></div><div class="sc-1lrh8w5-0 ftkQLi sc-kixk9v-0 gwYuWO"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 eCsaUt"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div></div><div class="sc-x072mc-0 sc-3cb1l3-1 hOtCic galmep"><div class="sc-3cb1l3-3 jeNzke"><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.7071 8.79633C18.7071 10.0523 19.039 10.7925 19.7695 11.6456C20.3231 12.2741 20.5 13.0808 20.5 13.956C20.5 14.8302 20.2128 15.6601 19.6373 16.3339C18.884 17.1417 17.8215 17.6573 16.7372 17.747C15.1659 17.8809 13.5937 17.9937 12.0005 17.9937C10.4063 17.9937 8.83505 17.9263 7.26375 17.747C6.17846 17.6573 5.11602 17.1417 4.36367 16.3339C3.78822 15.6601 3.5 14.8302 3.5 13.956C3.5 13.0808 3.6779 12.2741 4.23049 11.6456C4.98384 10.7925 5.29392 10.0523 5.29392 8.79633V8.3703C5.29392 6.68834 5.71333 5.58852 6.577 4.51186C7.86106 2.9417 9.91935 2 11.9558 2H12.0452C14.1254 2 16.2502 2.98702 17.5125 4.62466C18.3314 5.67916 18.7071 6.73265 18.7071 8.3703V8.79633ZM9.07367 20.0608C9.07367 19.5573 9.53582 19.3266 9.96318 19.2279C10.4631 19.1222 13.5093 19.1222 14.0092 19.2279C14.4366 19.3266 14.8987 19.5573 14.8987 20.0608C14.8738 20.5402 14.5926 20.9653 14.204 21.2352C13.7001 21.628 13.1088 21.8767 12.4906 21.9664C12.1487 22.0107 11.8128 22.0117 11.4828 21.9664C10.8636 21.8767 10.2723 21.628 9.76938 21.2342C9.37978 20.9653 9.09852 20.5402 9.07367 20.0608Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">30 апреля</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">4 месяца</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.5 10.3178C3.5 5.71789 7.34388 2 11.9934 2C16.6561 2 20.5 5.71789 20.5 10.3178C20.5 12.6357 19.657 14.7876 18.2695 16.6116C16.7388 18.6235 14.8522 20.3765 12.7285 21.7524C12.2425 22.0704 11.8039 22.0944 11.2704 21.7524C9.13474 20.3765 7.24809 18.6235 5.7305 16.6116C4.34198 14.7876 3.5 12.6357 3.5 10.3178ZM9.19423 10.5768C9.19423 12.1177 10.4517 13.3297 11.9934 13.3297C13.5362 13.3297 14.8058 12.1177 14.8058 10.5768C14.8058 9.0478 13.5362 7.77683 11.9934 7.77683C10.4517 7.77683 9.19423 9.0478 9.19423 10.5768Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">Онлайн</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.66988 2H16.3399C19.7299 2 21.9999 4.379 21.9999 7.919V16.089C21.9999 19.62 19.7299 22 16.3399 22H7.66988C4.27988 22 1.99988 19.62 1.99988 16.089V7.919C1.99988 4.379 4.27988 2 7.66988 2ZM15.5799 15.81C15.8299 15.81 16.0799 15.68 16.2199 15.44C16.4399 15.089 16.3199 14.629 15.9599 14.41L12.3999 12.29V7.669C12.3999 7.26 12.0699 6.919 11.6499 6.919C11.2399 6.919 10.8999 7.26 10.8999 7.669V12.72C10.8999 12.98 11.0399 13.23 11.2699 13.36L15.1899 15.7C15.3099 15.78 15.4499 15.81 15.5799 15.81Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">Вт/Чт 20:00 Мск</p></div></div></div></section><div id="vdescription" class="sc-x072mc-0 sc-1oat6ot-0 hOtCic dYVcmu"><div class="sc-1oat6ot-1 cVgwEc"><div class="sc-1oat6ot-5 klGcVm"><div class="sc-1oat6ot-4 hdfpFD"><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez fVuuMJ"> <h2 role="presentation" dir="ltr">Для кого этот курс:</h2>
<ul>
<li role="presentation" dir="ltr"><span> <strong>Системные администраторов и DevOps-инженеров</strong>, которые хотят у</span>лучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов.</li>
<li role="presentation" dir="ltr"><strong>Программистов, желающих перейти в системное программирование, </strong>но не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра.</li>
<li role="presentation" dir="ltr"><strong>Инженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей</strong>, которые сталкиваются со с<span>ложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации</span></li>
<li role="presentation" dir="ltr"><span><strong>Разработчики на C</strong>, которым нужны улубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода.</span></li>
<li role="presentation" dir="ltr"><span><strong>Системные программисты</strong>, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения</span></li>
<li role="presentation" dir="ltr"><span><strong>Разработчики встраиваемых (embedded) систем</strong>, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением</span></li>
<li role="presentation" dir="ltr"><span><strong>Системные администраторы с навыками программирования на C</strong>, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра<br></span><span></span></li>
</ul>
<h3><strong id="docs-internal-guid-39945b5f-7fff-91bd-51e4-8a6606fa5672"><span>Необходимые знания:</span></strong></h3>
<div> </div>
<div>
<ul>
<li><span>Уметь работать в ОС Linux</span></li>
<li><span>Базовое знание Bash</span></li>
<li><span>Базовое знание Python</span></li>
<li><span>Уверенный уровень разработки на языках программирования C</span></li>
<li><span>Умение работать и подключаться к Виртуальной машине</span></li>
</ul>
</div></div><div class="sc-1lrh8w5-0 ftkQLi sc-1oat6ot-3 hjZAnk"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 eCsaUt"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div></div></div></div><div class="sc-x072mc-0 sc-lpm061-0 hOtCic cjEHVO"><div><h2 class="sc-1x9oq14-0 sc-lpm061-1 jmLQpp iKbbnr"></h2><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez fVuuMJ"><h1>Что даст вам этот курс</h1>
<div>
<ul>
<li><strong>Основы разработки ядра:</strong> Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы</li>
<li><strong>Создание и отладка модулей: </strong>Навыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg)</li>
<li><strong>Работа со структурами данных и алгоритмами:</strong> Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра</li>
<li><strong>Управление процессами и потоками: </strong>Понимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры)</li>
<li><strong>Обработка прерываний: </strong>Освоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации</li>
<li><strong>Управление памятью:</strong> Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц.</li>
</ul>
<div> </div>
</div>
<h2><strong id="docs-internal-guid-5308d5a2-7fff-32a2-8d01-b1df53aaed7d"><span>Вы научитесь</span></strong>:</h2>
<div>
<ul>
<li><span>Разрабатывать и интегрировать собственные модули ядра: </span><span>Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg</span></li>
<li><span>Владеть алгоритмами и структурами: </span><span>Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux</span></li>
<li><span>Реализовывать синхронизацию процессов и потоков: </span><span>Используют различные примитивы синхронизации в собственных разработках</span></li>
<li><span>Анализировать и обрабатывать прерывания: </span><span>Понимают, как работают обработчики прерываний и смогут их отлаживать</span></li>
<li><span>Управлять памятью в ядре:</span><span> Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами</span></li>
<li><span>Участвовать в проектах на основе Linux: </span><span>Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.</span></li>
</ul>
</div></div></div><div class="sc-1232l32-0 gjfSTs"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1232l32-1 gLmhvn"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.66988 1.99927H16.3399C19.7299 1.99927 21.9999 4.37927 21.9999 7.91927V16.0903C21.9999 19.6203 19.7299 21.9993 16.3399 21.9993H7.66988C4.27988 21.9993 1.99988 19.6203 1.99988 16.0903V7.91927C1.99988 4.37927 4.27988 1.99927 7.66988 1.99927ZM11.9899 9.06027C11.5199 9.06027 11.1299 8.66927 11.1299 8.19027C11.1299 7.70027 11.5199 7.31027 12.0099 7.31027C12.4899 7.31027 12.8799 7.70027 12.8799 8.19027C12.8799 8.66927 12.4899 9.06027 11.9899 9.06027ZM12.8699 15.7803C12.8699 16.2603 12.4799 16.6503 11.9899 16.6503C11.5099 16.6503 11.1199 16.2603 11.1199 15.7803V11.3603C11.1199 10.8793 11.5099 10.4803 11.9899 10.4803C12.4799 10.4803 12.8699 10.8793 12.8699 11.3603V15.7803Z" fill="url(#0385907a41b4e85f72e581f1)"></path><defs><linearGradient id="0385907a41b4e85f72e581f1" x1="7.24435" y1="16.8809" x2="41.5417" y2="22.7167" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient></defs></svg><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez fVuuMJ sc-1232l32-2 cLdvvd"></div></div></div><div class="sc-x072mc-0 sc-rvdro8-0 hOtCic cjUVzd"><svg class="sc-rvdro8-1-Component fAoRTp" width="448" height="448" viewBox="0 0 448 448" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M73.973 262.521c-25.943-9.97-31.12-43.662-9.318-60.646L292.018 24.752c21.802-16.984 54.23-4.521 58.372 22.432l43.19 281.097c4.142 26.954-23.11 48.184-49.053 38.214L73.973 262.521Z" fill="url(#processDefaultImageIconA)"></path><path d="M119.392 368.19c-23.13 10.287-48.177-8.104-45.084-33.104l32.265-260.72c3.094-25 32.008-37.859 52.045-23.146l208.965 153.435c20.037 14.712 16.17 45.962-6.961 56.25L119.392 368.19Z" fill="url(#processDefaultImageIconB)"></path><path d="M204.971 119.576c-8.276-10.24-2.416-25.302 10.548-27.111l135.199-18.87c12.964-1.81 23.309 10.99 18.621 23.039l-48.89 125.659c-4.688 12.049-20.893 14.311-29.169 4.071l-86.309-106.788Z" fill="url(#processDefaultImageIconC)"></path><path d="M90.942 108.696c-3.277 0-6.145-2.456-6.145-5.732a3.67 3.67 0 0 0-3.687-3.684 3.67 3.67 0 0 0-3.687 3.684c0 3.276-2.459 5.732-5.736 5.732A3.67 3.67 0 0 0 68 112.381a3.67 3.67 0 0 0 3.687 3.685c3.278 0 5.736 2.456 5.736 5.731a3.67 3.67 0 0 0 3.687 3.685 3.67 3.67 0 0 0 3.687-3.685c0-3.275 2.458-5.731 5.735-5.731a3.67 3.67 0 0 0 3.687-3.685c.41-2.047-1.229-3.685-3.277-3.685Z" fill="url(#processDefaultImageIconD)"></path><path d="M235.737 385.911c-3.277 0-6.145-2.457-6.145-5.732a3.671 3.671 0 0 0-3.687-3.685 3.67 3.67 0 0 0-3.687 3.685c0 3.275-2.458 5.732-5.736 5.732a3.67 3.67 0 0 0-3.687 3.684 3.671 3.671 0 0 0 3.687 3.685c3.278 0 5.736 2.456 5.736 5.732a3.67 3.67 0 0 0 3.687 3.684 3.67 3.67 0 0 0 3.687-3.684c0-3.276 2.458-5.732 5.735-5.732a3.67 3.67 0 0 0 3.687-3.685c0-2.047-1.638-3.684-3.277-3.684Z" fill="url(#processDefaultImageIconE)"></path><path d="M227.072 79.54a6.553 6.553 0 0 0 6.555-6.55 6.553 6.553 0 0 0-6.555-6.55 6.553 6.553 0 0 0-6.555 6.55 6.553 6.553 0 0 0 6.555 6.55Z" fill="url(#processDefaultImageIconF)"></path><path d="M78.242 66.626C72.506 66.626 68 62.122 68 56.39c0-5.731 4.506-10.235 10.242-10.235 5.735 0 10.242 4.504 10.242 10.236 0 5.731-4.507 10.235-10.242 10.235Zm0-13.92c-2.049 0-4.097 1.637-4.097 4.094 0 2.456 1.639 4.094 4.097 4.094 2.048 0 4.097-1.638 4.097-4.094 0-2.456-2.049-4.094-4.097-4.094Z" fill="url(#processDefaultImageIconG)"></path><path d="M307.192 382.834a6.553 6.553 0 0 0 6.555-6.55 6.553 6.553 0 0 0-6.555-6.551 6.553 6.553 0 0 0-6.555 6.551 6.553 6.553 0 0 0 6.555 6.55Z" fill="url(#processDefaultImageIconH)"></path><path d="M324.394 308.101c-5.736 0-10.242-4.503-10.242-10.235 0-5.732 4.506-10.235 10.242-10.235 5.735 0 10.241 4.503 10.241 10.235 0 5.732-4.506 10.235-10.241 10.235Zm0-13.92c-2.049 0-4.097 1.638-4.097 4.095 0 2.456 1.638 4.094 4.097 4.094 2.048 0 4.096-1.638 4.096-4.094 0-2.457-1.638-4.095-4.096-4.095Z" fill="url(#processDefaultImageIconI)"></path><path d="m310.288 164.276-43.879-42.909a13.329 13.329 0 0 0-9.355-3.82c-3.52 0-6.847 1.368-9.354 3.82L109.552 256.414c-2.507 2.452-3.905 5.705-3.905 9.147s1.398 6.696 3.905 9.148l43.88 42.909a13.324 13.324 0 0 0 9.354 3.82c3.52 0 6.847-1.368 9.355-3.82L310.24 182.572c5.207-4.999 5.207-13.25.048-18.296Zm-3.183 15.231L169.006 314.554c-1.639 1.603-3.857 2.499-6.22 2.499-2.363 0-4.532-.896-6.22-2.499l-43.879-42.91a8.432 8.432 0 0 1-2.556-6.036c0-2.31.916-4.432 2.556-6.082l138.099-135.047c1.639-1.603 3.857-2.499 6.22-2.499 2.363 0 4.533.896 6.22 2.499l43.879 42.909a8.433 8.433 0 0 1 0 12.119Z" fill="#fff"></path><path d="m135.88 267.494 5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.916.849 2.363.849 3.231 0ZM143.451 256.979c.867.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706ZM154.155 246.464c.868.849 2.314.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.848-2.314-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705ZM164.908 235.996c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706ZM175.661 225.481c.868.848 2.314.848 3.23 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706ZM186.413 214.965c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.883-5.658c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.882 5.658ZM197.118 204.45c.868.849 2.314.849 3.23 0l5.305-5.186c.867-.849.867-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705ZM207.871 193.982c.868.848 2.314.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.305 5.187c-.867.849-.867 2.263 0 3.159l5.835 5.706ZM218.624 183.468c.868.848 2.314.848 3.23 0l5.304-5.187c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.706ZM229.376 172.952c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.883-5.658c-.868-.849-2.314-.849-3.23 0l-5.305 5.186c-.867.849-.867 2.264 0 3.16l5.883 5.658ZM240.081 162.437c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706ZM250.834 151.922c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0L245 143.057c-.868.849-.868 2.264 0 3.16l5.834 5.705ZM147.259 275.982l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.917-.849.917-2.263 0-3.159ZM148.995 259.809l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.658c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.916-.849-2.363-.849-3.231.047ZM163.461 263.297l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705c.916.849 2.362.849 3.23 0ZM170.453 238.778l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706a2.368 2.368 0 0 0-3.231 0ZM181.206 228.31l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.916-.896-2.363-.896-3.231 0ZM191.959 217.795l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.835-5.706c-.916-.896-2.362-.896-3.23 0ZM202.712 207.28l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.835-5.705c-.916-.849-2.362-.849-3.23 0ZM213.416 196.764l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0ZM224.169 186.249l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.917-.848-2.363-.848-3.231 0ZM234.922 175.781l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.916-.896-2.362-.896-3.23 0ZM245.674 165.266l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.883-5.706c-.867-.849-2.314-.849-3.182 0ZM260.14 168.756l5.304-5.187c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.916.896 2.362.896 3.23 0ZM267.662 158.24c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.867-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705ZM152.371 280.98c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM168.959 276.171l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.305 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.868.849 2.314.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159ZM171.177 274.001c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.835 5.705ZM185.159 263.486l5.305-5.187c.867-.848.867-2.263 0-3.159l-5.835-5.658c-.868-.849-2.314-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705a2.32 2.32 0 0 0 3.23-.047ZM195.864 252.971l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.658c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705c.916.849 2.362.849 3.23-.047ZM206.617 242.503l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.834 5.705c.916.849 2.363.849 3.231 0ZM217.37 231.988l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.916.849 2.362.849 3.23 0ZM228.123 221.472l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.867-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705a2.278 2.278 0 0 0 3.231 0ZM238.875 210.957l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.835 5.705c.868.896 2.314.896 3.23 0ZM249.58 200.489l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705c.916.849 2.362.849 3.23 0ZM260.333 189.974l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.917.849 2.363.849 3.231 0ZM271.086 179.459l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.659c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705a2.417 2.417 0 0 0 3.23-.047ZM272.774 163.286l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159ZM174.504 281.64c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706ZM185.256 271.125c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.867.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM196.009 260.61c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705ZM249.387 208.412c-.868-.849-2.314-.849-3.182 0l-47.062 46.021a2.186 2.186 0 0 0 0 3.113l5.835 5.705c.868.849 2.314.849 3.182 0l47.062-46.021a2.185 2.185 0 0 0 0-3.112l-5.835-5.706ZM260.429 197.613c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706ZM271.183 187.098c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706ZM281.935 176.583c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM141.184 164.323l30.426 24.803 4.774-4.669-30.86-25.179c-5.545-4.527-11.766-10.516-10.415-16.645 1.06-4.857 6.895-7.781 11.958-7.781h.145c6.027 0 11.958 2.924 17.069 5.659 4.292 2.31 9.596 5.139 15.334 4.102 2.989-.566 5.786-2.075 8.824-4.762 6.799-5.989 11.379-14.477 12.633-23.341.241-1.792-1.013-3.443-2.893-3.678-1.832-.236-3.52.99-3.761 2.829-1.013 7.356-4.822 14.382-10.464 19.333-2.121 1.839-3.857 2.876-5.593 3.159-3.375.613-7.185-1.415-10.849-3.395-5.835-3.112-12.682-6.46-20.3-6.46h-.193c-7.571 0-16.636 4.574-18.468 12.92-2.122 9.572 5.641 17.352 12.633 23.105Z" fill="#fff"></path><defs><linearGradient id="processDefaultImageIconA" x1="289.831" y1="218.139" x2="80.152" y2="210.264" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="#fff" stop-opacity=".56"></stop></linearGradient><linearGradient id="processDefaultImageIconB" x1="98.909" y1="150.023" x2="362.575" y2="192.19" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconC" x1="214.875" y1="124.769" x2="359.559" y2="150.919" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconD" x1="70.132" y1="107.718" x2="92.663" y2="111.564" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconE" x1="214.922" y1="384.933" x2="237.402" y2="388.76" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconF" x1="221.581" y1="70.659" x2="232.821" y2="72.573" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconG" x1="69.662" y1="52.748" x2="87.224" y2="55.738" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconH" x1="301.701" y1="373.952" x2="312.941" y2="375.866" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="processDefaultImageIconI" x1="315.813" y1="294.224" x2="333.376" y2="297.214" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient></defs></svg><div><h2 class="sc-1x9oq14-0 sc-rvdro8-2 jmLQpp hIDsVz">Процесс обучения</h2><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez fVuuMJ"><div>
<div>
<div>
<p><span>Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.</span><br><br><strong>Вебинары проводятся 2 раза в неделю по 2 ак. часа<span> </span></strong><span>и </span><strong>сохраняются в записи<span> </span></strong><span>в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.</span><br><br><span>В ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.</span><br><br><span>После выполнения всех домашних заданий вы получите готовый выпускной проект.</span></p>
</div>
</div>
</div></div></div></div><div class="sc-11l8wec-0 eOXZIV sc-x072mc-0 sc-nqd633-0 hOtCic bbEYfR"><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/oneImg-b1c92b38734a5b324f9b32a5a243bf06.svg" class="sc-16yt4q5-2 bUbCKQ"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Оптимальная нагрузка<br><br></h3>
<p><span>Возможность совмещать учебу с работой</span></p>
</div>
</div>
</div></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/twoImg-28bd45b9ade74f4471bf39916d76d47e.svg" class="sc-16yt4q5-2 dIESaV"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Портфолио<br><br></h3>
<p><span>Индивидуальная разработка итоговой проектной работы </span></p>
</div>
</div>
</div></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/threeImg-7d8d62a36e7b66f9691d1d7d01b44fb9.svg" class="sc-16yt4q5-2 gbGscf"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Перспективы</h3>
<p> </p>
<p><span>Получите знания, которые помогут повысить вашу востребованность и доход</span></p>
</div>
</div>
</div></div></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-1kuct9n-0 jzJAgH"><i class="sc-1ddwpfq-0 bGLtep"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 hOtCic"><div class="sc-1kuct9n-2 cfBLof"><h2 class="sc-1x9oq14-0 sc-1kuct9n-1 kswXpy jqwyOS">Партнеры</h2><div class="sc-1x9oq14-0 sc-1kuct9n-4 fPZiIk efarBD"><p>Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности. Мы оказываем помощь в вопросах карьеры на протяжении всего обучения и спустя полгода после его завершения.</p></div><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez dJQBfL sc-1kuct9n-5 hXsBII"><ul><li><b>Получите помощь с оформлением резюме</b>, портфолио и сопроводительного письма</li><li><b>Разместите свое резюме в базе OTUS</b> и сможете получать приглашения на собеседования от партнеров</li><li><b>Пройдете карьерную консультацию</b> с нашим HR-специалистом</li><li><b>Получите рекомендации, как искать работу</b>, и советы по прохождению собеседования</li></ul></div></div></div></div><div class="sc-x072mc-0 sc-ze365z-0 hOtCic jpiMVl"><div class="sc-1x9oq14-0 sc-ze365z-1 bTMeHF RPhWg"><h5>Формат обучения</h5></div><div class="sc-11l8wec-0 eOXZIV"><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/oneImg-d53504a93142009806d3cc77cd059dcb.svg" class="sc-16yt4q5-2 yjETG"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Интерактивные вебинары</h3>
<p><br><span>2 занятия по 2 ак.часа в неделю. </span><span>Доступ к записям и материалам остается навсегда</span></p>
</div>
</div>
</div></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/twoImg-bf3134a7f0a1f9684257b13b37cd07b5.svg" class="sc-16yt4q5-2 iGfrzu"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Обратная связь</h3>
<p><br><span>Домашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии</span></p>
</div>
</div>
</div></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 kArXtu"><div src="/_next/static/images/img/threeImg-a81ea3b3db08e9c236bce2eb8f407ab7.svg" class="sc-16yt4q5-2 eJXsCF"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><div>
<div>
<div>
<h3>Активное сообщество</h3>
<p><br><span>Чат в Telegram для общения преподавателей и студентов</span></p>
</div>
</div>
</div></div></div></div></div><div class="sc-x072mc-0 sc-1am6qh7-0 hOtCic cmpQoV"><div class="sc-1am6qh7-1 bmcDgO"><h2 class="sc-1x9oq14-0 sc-1am6qh7-2 kswXpy jZdzTX">Программа</h2><div class="sc-12j3cf5-0 kOagS"><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Введение в разработку ядра Linux</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите общие сведения о ядре Linux, его сборке и установке.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Начальные сведения о ядре Linux</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Компиляция и настройка ядра. Инструменты работы с ядром</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Модули ядра Linux</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите что такое модуль ядра; научитесь собирать, загружать и выгружать модули ядра.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Модуль ядра Linux. Буффер сообщений ядра (dmesg)</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Написание модуля ядра "Hello, World!" // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Отладка модулей ядра</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы познакомитесь с инструментами отладки ядра и их основными возможностями.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Отладка с помощью kgdb</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Другие инструменты отладки</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Структуры данных и алгоритмы в ядре Linux</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите базовые структуры данных и алгоритмы в ядре Linux.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Очереди в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Сетевой стек в ядре Linux</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 6: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Управление процессами и потоками</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите процессы и потоки в ядре Linux; примитивы синхронизации и их реализацию.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Процесс в ядре Linux. Поток в ядре Linux. API для работы с процессами и потоками</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации </p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Работа Spinlock, Mutex, Semaphores. Архитектурный код ядра, где реализованы эти примитивы. RCU // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите прерывания и их обработка в ядре Linux; разновидности прерываний, разбор PF-ов; механизмы отложенного выполнения в ядре Linux.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Page Fault. Виды PF в Linux // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Время в ядре Linux. Таймеры. Preemption многозадачность.</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите таймеры в ядре Linux и виды многозадачности, в частности preemption многозадачность; обобщите знания о прерываниях, таймерах, процессах и многозадачности.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Как протекает время в ядре Linux. API таймеров</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Что такое Preemption. Обобщаем работу с процессами и прерываниями // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Управление RAM памятью</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы рассмотрите виртуальную и физическую память; аллокаторы SLAB и SLUB в ядре; способы эффективного выделения памяти под задачу.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Управление памятью в Linux. SLAB-аллокатор, SLUB-аллокатор. API для выделения памяти в ядре</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Отличие физической памяти от виртуальной памяти. Page Table. Реализация pagging в ядре Linux</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Выделение памяти для объектов одинакового размера заранее. Kmem_cache. Mempool // ДЗ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Q&A занятие по ДЗ</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Устройства в Linux</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В этом модуле вы изучите символьные и блочные устройства, виртуальные файловые системы и интерфейсы.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Символьные устройства</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Блочные устройства</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink</p></div></div></div></div><div class="sc-li015i-2 iJMWTL sc-yxq6ju-1 bTvRzO" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Проектная работа</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">Заключительный месяц курса посвящён проектной работе. Проект – это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Выбор темы и организация проектной работы // Проект</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Консультация по проектам и домашним заданиям</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Защита проектных работ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Подведение итогов курса</p></div></div></div></div></div></div><div class="sc-hqry8z-0 gOGHoc"><h5 class="sc-1x9oq14-0 sc-hqry8z-1 fPZiIk byqrft">Также вы можете получить полную программу,
чтобы убедиться, что обучение вам подходит</h5><button class="sc-1qig7zt-0 bYRRHi sc-hqry8z-2 ipIyzP">Получить</button></div></div><div class="sc-x072mc-0 sc-130tum6-0 hOtCic jjMVIs"><div class="sc-1x9oq14-0 sc-130tum6-1 fPZiIk leLsGR"><h2>Выпускной проект</h2>
<p><br>Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!<br><br>Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.</p></div><svg viewBox="0 0 512 460" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-wqbts8-0 coDgWq"><path d="M245.655 442C367.71 442 466.655 343.055 466.655 221C466.655 98.9451 367.71 0 245.655 0C123.6 0 24.6548 98.9451 24.6548 221C24.6548 343.055 123.6 442 245.655 442Z" fill="url(#GraduationProjects0)"></path><path d="M339.351 330.984C408.966 330.984 465.399 274.623 465.399 205.097C465.399 135.571 408.966 79.2095 339.351 79.2095C269.737 79.2095 213.304 135.571 213.304 205.097C213.304 274.623 269.737 330.984 339.351 330.984Z" fill="url(#GraduationProjects1)"></path><path d="M190.363 320.725C201.556 273.813 172.551 226.722 125.58 215.544C78.6085 204.366 31.4575 233.333 20.2651 280.245C9.07273 327.157 38.0773 374.248 85.0486 385.426C132.02 396.604 179.171 367.636 190.363 320.725Z" fill="url(#GraduationProjects1)"></path><path d="M396.694 335.224V363.622C396.694 377.186 385.671 388.63 371.68 388.63H115.172C101.604 388.63 90.1567 377.61 90.1567 363.622V335.224H396.694Z" fill="white"></path><path d="M396.694 335.224V363.622C396.694 377.186 385.671 388.63 371.68 388.63H115.172C101.604 388.63 90.1567 377.61 90.1567 363.622V335.224H396.694Z" fill="url(#GraduationProjects2)"></path><path d="M371.679 391.595H115.171C99.4834 391.595 87.188 378.879 87.188 363.62V335.221C87.188 333.526 88.4599 331.83 90.5798 331.83H396.693C398.389 331.83 400.085 333.102 400.085 335.221V363.62C399.661 378.879 387.366 391.595 371.679 391.595ZM93.5477 338.612V363.62C93.5477 375.488 103.299 385.237 115.171 385.237H371.679C383.55 385.237 393.302 375.488 393.302 363.62V338.612H93.5477Z" fill="url(#GraduationProjects1)"></path><path d="M397.456 188.138V335.218H90.583V188.138C90.583 174.574 101.619 163.13 115.625 163.13H372.414C385.996 163.13 397.456 174.574 397.456 188.138Z" fill="white"></path><path d="M397.842 338.612H90.5835C88.3095 338.612 87.188 337.34 87.188 335.221V188.14C87.188 172.457 99.9213 160.165 115.201 160.165H371.99C387.694 160.165 400.003 172.881 400.003 188.14L400.085 336.348C400.085 337.468 398.964 338.612 397.842 338.612ZM93.9791 332.254H394.061V188.14C394.061 176.272 384.298 166.523 372.414 166.523H115.626C103.741 166.523 93.9791 176.272 93.9791 188.14V332.254Z" fill="url(#GraduationProjects1)"></path><path d="M57.122 177.118C53.7268 177.118 50.756 174.575 50.756 171.184C50.756 169.065 49.0584 167.369 46.9364 167.369C44.8144 167.369 43.1167 169.065 43.1167 171.184C43.1167 174.575 40.5703 177.118 37.1751 177.118C35.0531 177.118 33.3555 178.814 33.3555 180.933C33.3555 183.052 35.0531 184.748 37.1751 184.748C40.5703 184.748 43.1167 187.291 43.1167 190.682C43.1167 192.801 44.8144 194.497 46.9364 194.497C49.0584 194.497 50.756 192.801 50.756 190.682C50.756 187.291 53.3024 184.748 56.6976 184.748C58.8197 184.748 60.5173 183.052 60.5173 180.933C60.9417 178.814 59.2441 177.118 57.122 177.118Z" fill="url(#GraduationProjects1)"></path><path d="M494.257 351.754C490.862 351.754 487.891 349.211 487.891 345.82C487.891 343.7 486.194 342.005 484.072 342.005C481.95 342.005 480.252 343.7 480.252 345.82C480.252 349.211 477.706 351.754 474.31 351.754C472.188 351.754 470.491 353.449 470.491 355.569C470.491 357.688 472.188 359.383 474.31 359.383C477.706 359.383 480.252 361.926 480.252 365.317C480.252 367.437 481.95 369.132 484.072 369.132C486.194 369.132 487.891 367.437 487.891 365.317C487.891 361.926 490.438 359.383 493.833 359.383C495.955 359.383 497.653 357.688 497.653 355.569C497.653 353.449 495.955 351.754 494.257 351.754Z" fill="url(#GraduationProjects1)"></path><path d="M79.6176 149.566C83.3679 149.566 86.4081 146.53 86.4081 142.784C86.4081 139.039 83.3679 136.002 79.6176 136.002C75.8673 136.002 72.8271 139.039 72.8271 142.784C72.8271 146.53 75.8673 149.566 79.6176 149.566Z" fill="url(#GraduationProjects1)"></path><path d="M71.5515 92.7706C65.6098 92.7706 60.9414 88.1081 60.9414 82.174C60.9414 76.2399 65.6098 71.5774 71.5515 71.5774C77.4931 71.5774 82.1616 76.2399 82.1616 82.174C82.1616 88.1081 77.4931 92.7706 71.5515 92.7706ZM71.5515 78.3592C69.4295 78.3592 67.3075 80.0547 67.3075 82.5978C67.3075 85.141 69.0051 86.8365 71.5515 86.8365C73.6735 86.8365 75.7955 85.141 75.7955 82.5978C75.7955 80.0547 73.6735 78.3592 71.5515 78.3592Z" fill="url(#GraduationProjects1)"></path><path d="M431.446 391.597C435.196 391.597 438.237 388.561 438.237 384.815C438.237 381.07 435.196 378.033 431.446 378.033C427.696 378.033 424.656 381.07 424.656 384.815C424.656 388.561 427.696 391.597 431.446 391.597Z" fill="url(#GraduationProjects1)"></path><path d="M463.278 317.841C457.336 317.841 452.668 313.178 452.668 307.244C452.668 301.31 457.336 296.648 463.278 296.648C469.22 296.648 473.888 301.31 473.888 307.244C473.888 313.178 469.22 317.841 463.278 317.841ZM463.278 303.43C461.156 303.43 459.034 305.125 459.034 307.668C459.034 310.211 460.732 311.907 463.278 311.907C465.4 311.907 467.522 310.211 467.522 307.668C467.522 305.125 465.824 303.43 463.278 303.43Z" fill="url(#GraduationProjects1)"></path><path d="M305.398 426.355L299.881 423.812C285.875 417.454 279.085 403.89 279.085 388.207H212.454C212.454 403.466 206.088 417.454 191.658 423.812L186.141 426.355H305.398Z" fill="url(#GraduationProjects1)"></path><path d="M305.399 429.319H186.142C184.444 429.319 183.171 428.472 183.171 426.776C182.747 425.505 183.595 423.809 184.869 423.385L190.386 420.842C202.269 415.756 209.06 403.888 209.06 388.205C209.06 386.509 210.333 384.814 212.455 384.814H279.51C281.208 384.814 282.906 386.085 282.906 388.205C282.906 403.464 289.696 415.332 301.579 420.842L307.097 423.385C308.37 423.809 309.219 425.505 308.794 426.776C308.37 428.472 307.097 429.319 305.399 429.319ZM199.723 422.961H292.243C282.906 416.18 276.964 405.159 276.54 391.596H215.426C215.001 405.159 209.06 416.18 199.723 422.961Z" fill="url(#GraduationProjects1)"></path><path d="M85.1337 445.001H36.3274C34.6297 445.001 32.9321 443.73 32.9321 441.61C32.9321 439.915 34.2053 438.219 36.3274 438.219H85.1337C86.8313 438.219 88.5289 439.491 88.5289 441.61C88.5289 443.73 86.8313 445.001 85.1337 445.001Z" fill="url(#GraduationProjects1)"></path><path d="M450.121 445.001H431.872C430.174 445.001 428.477 443.73 428.477 441.61C428.477 439.915 429.75 438.219 431.872 438.219H450.121C451.819 438.219 453.516 439.491 453.516 441.61C453.092 443.73 451.819 445.001 450.121 445.001Z" fill="url(#GraduationProjects1)"></path><path d="M332.986 321.657H139.458C127.999 321.657 118.662 312.332 118.662 300.888V198.313C118.662 186.868 127.999 177.543 139.458 177.543H333.41C344.869 177.543 354.206 186.868 354.206 198.313V300.888C353.781 312.332 344.445 321.657 332.986 321.657ZM139.458 183.901C131.394 183.901 125.028 190.259 125.028 198.313V300.888C125.028 308.941 131.394 315.299 139.458 315.299H333.41C341.474 315.299 347.84 308.941 347.84 300.888V198.313C347.84 190.259 341.474 183.901 333.41 183.901H139.458Z" fill="url(#GraduationProjects1)"></path><path d="M139.458 183.901C131.394 183.901 125.028 190.259 125.028 198.313V300.888C125.028 308.941 131.394 315.299 139.458 315.299H333.41C341.474 315.299 347.84 308.941 347.84 300.888V198.313C347.84 190.259 341.474 183.901 333.41 183.901H139.458Z" fill="url(#GraduationProjects1)"></path><path d="M314.284 292.413H239.688C231.933 292.413 225.655 285.208 225.655 276.306V239.43C225.655 230.529 231.933 223.323 239.688 223.323H314.284C322.039 223.323 328.317 230.529 328.317 239.43V276.306C328.317 285.208 322.039 292.413 314.284 292.413ZM239.688 229.681C234.887 229.681 231.194 233.92 231.194 239.43V276.306C231.194 281.817 234.887 286.055 239.688 286.055H314.284C319.084 286.055 322.777 281.817 322.777 276.306V239.43C322.777 233.92 319.084 229.681 314.284 229.681H239.688Z" fill="white"></path><path d="M239.688 229.681C234.887 229.681 231.194 233.92 231.194 239.43V276.306C231.194 281.817 234.887 286.055 239.688 286.055H314.284C319.084 286.055 322.777 281.817 322.777 276.306V239.43C322.777 233.92 319.084 229.681 314.284 229.681H239.688Z" fill="white"></path><mask id="mask0" maskType="alpha" maskUnits="userSpaceOnUse" x="144" y="222" width="77" height="70"><rect x="144.655" y="222.999" width="76" height="69" rx="16" fill="#C4C4C4"></rect></mask><g mask="url(#mask0)"><rect x="144.655" y="222.813" width="76" height="70.3704" fill="white"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M154.589 291.24L148.034 296.924C148.034 296.924 150.758 273.834 170.151 253.646L167.852 255.265C167.699 254.186 167.58 252.702 167.58 251.2C167.58 247.726 168.533 244.505 170.185 241.789C170.185 241.789 171.513 242.228 172.994 242.076C172.994 242.076 171.155 241.907 170.1 241.267C168.193 240.086 167.818 236.73 167.818 236.73C169.044 238.686 172.262 237.978 174.05 237.387C176.774 235.144 180.196 233.829 183.908 233.829C187.398 233.829 191.11 234.959 194.106 237.337C195.877 237.927 199.163 238.686 200.389 236.696C200.389 236.696 199.981 240.12 198.108 241.317C196.729 242.211 195.435 242.245 195.435 242.245C196.66 242.346 197.937 241.874 197.937 241.874C199.964 245.584 200.815 250.627 199.521 257.12C199.282 258.301 198.295 261.033 197.324 263.327L199.317 259.616C200.866 264.339 202.586 281.947 183.448 293.399L183.355 293.454L183.239 293.523C181.858 294.342 180.448 295.179 179.362 296.367C179.311 296.426 179.26 296.481 179.209 296.536C179.157 296.59 179.106 296.645 179.055 296.704C178.204 297.682 178.408 299.116 179.379 299.858C179.532 299.976 179.719 300.094 179.924 300.162C183.193 301.46 187.994 304.378 183.005 309.286C183.005 309.286 184.776 304.901 181.626 304.193C181.626 304.193 182.478 306.992 180.179 308.898C180.179 308.898 180.741 305.896 178.766 303.957C178.119 303.323 177.176 303.287 176.134 303.247C174.872 303.198 173.465 303.144 172.262 302.017C171.428 301.224 170.713 299.926 170.202 297.733C170.1 297.311 169.248 293.871 169.248 293.871L169.401 296.654C166.541 296.789 163.034 296.671 159.628 296.333L160.871 293.213L151.967 307.33L154.589 291.24ZM187.313 247.827C187.313 250.268 189.463 252.246 192.114 252.246C194.766 252.246 196.916 250.268 196.916 247.827C196.916 245.387 194.766 243.409 192.114 243.409C189.463 243.409 187.313 245.387 187.313 247.827ZM189.407 247.827C189.407 249.197 190.619 250.307 192.114 250.307C193.61 250.307 194.822 249.197 194.822 247.827C194.822 247.276 194.625 246.766 194.292 246.355C194.267 246.79 193.873 247.136 193.391 247.136C192.893 247.136 192.489 246.766 192.489 246.309C192.489 245.942 192.752 245.63 193.114 245.523C192.805 245.41 192.468 245.348 192.114 245.348C190.619 245.348 189.407 246.458 189.407 247.827ZM176.587 252.246C173.935 252.246 171.785 250.268 171.785 247.827C171.785 245.387 173.935 243.409 176.587 243.409C179.238 243.409 181.388 245.387 181.388 247.827C181.388 250.268 179.238 252.246 176.587 252.246ZM176.587 250.307C175.091 250.307 173.879 249.197 173.879 247.827C173.879 246.458 175.091 245.348 176.587 245.348C176.94 245.348 177.278 245.41 177.588 245.523C177.232 245.631 176.978 245.943 176.978 246.309C176.978 246.765 177.387 247.136 177.881 247.136C178.358 247.136 178.741 246.804 178.765 246.355C179.097 246.767 179.294 247.276 179.294 247.827C179.294 249.197 178.082 250.307 176.587 250.307ZM184.368 250.205C188.403 250.172 184.35 257.002 184.35 257.002C184.35 257.002 180.298 250.189 184.333 250.205H184.368ZM180.537 260.46C180.128 260.494 179.907 260.527 179.907 260.527C179.907 260.527 180.111 260.477 180.537 260.308C180.628 260.293 180.731 260.278 180.843 260.261C180.981 260.241 181.134 260.218 181.303 260.19C181.353 260.187 181.405 260.184 181.458 260.181C181.728 260.164 182.031 260.145 182.358 260.173C183.159 260.224 184.129 260.426 185.134 260.898C185.193 260.932 185.257 260.962 185.321 260.991C185.385 261.021 185.449 261.05 185.508 261.084C185.568 261.118 185.632 261.156 185.696 261.193C185.759 261.231 185.823 261.269 185.883 261.303C185.934 261.354 186.002 261.387 186.07 261.421C186.104 261.446 186.134 261.468 186.164 261.489C186.194 261.51 186.223 261.531 186.257 261.556C186.317 261.598 186.381 261.645 186.445 261.691C186.509 261.737 186.572 261.784 186.632 261.826L186.99 262.13C187.018 262.154 187.047 262.178 187.077 262.202C187.172 262.28 187.269 262.36 187.347 262.45C187.568 262.669 187.807 262.905 187.994 263.175C188.42 263.698 188.743 264.305 189.033 264.946L189.051 264.994L189.078 265.068C189.185 265.351 189.297 265.648 189.356 265.958C189.373 266.051 189.394 266.139 189.416 266.228C189.437 266.316 189.458 266.405 189.475 266.498C189.483 266.576 189.495 266.657 189.507 266.741C189.52 266.838 189.534 266.938 189.543 267.037C189.561 267.122 189.578 267.206 189.578 267.307V267.594V268.167C189.546 268.339 189.529 268.524 189.513 268.698L189.509 268.741L189.475 269.028C189.475 269.093 189.461 269.151 189.447 269.211C189.439 269.244 189.43 269.278 189.424 269.314C189.407 269.407 189.386 269.504 189.365 269.601C189.343 269.698 189.322 269.795 189.305 269.888C189.284 270.014 189.243 270.134 189.202 270.252C189.178 270.322 189.154 270.392 189.135 270.461C189.084 270.664 189.016 270.849 188.948 271.035C188.879 271.22 188.794 271.406 188.709 271.591C188.045 273.059 187.041 274.442 185.849 275.673C184.657 276.904 183.295 278.017 181.865 279.029L180.758 279.754C180.588 279.872 180.4 279.99 180.213 280.108L179.651 280.446C179.277 280.665 178.902 280.884 178.51 281.103L177.387 281.711L176.263 282.318C176.027 282.43 175.797 282.548 175.57 282.664C175.42 282.741 175.271 282.818 175.122 282.891C174.583 283.171 174.034 283.432 173.496 283.689C173.287 283.789 173.08 283.888 172.875 283.988C171.444 284.672 170.028 285.278 168.691 285.85L168.55 285.91C168.136 286.081 167.727 286.245 167.324 286.407C167.049 286.518 166.777 286.627 166.507 286.737C166.207 286.851 165.91 286.962 165.618 287.071L165.617 287.072C165.264 287.204 164.918 287.333 164.583 287.462C164.308 287.557 164.04 287.656 163.779 287.753C163.44 287.877 163.112 287.998 162.795 288.103C162.51 288.197 162.228 288.291 161.954 288.383L161.949 288.385L161.948 288.385L161.947 288.386C161.684 288.474 161.427 288.56 161.178 288.642C160.278 288.94 159.483 289.172 158.794 289.372C158.702 289.399 158.611 289.426 158.522 289.452C157.826 289.656 157.263 289.801 156.873 289.902L156.872 289.902L156.871 289.902L156.785 289.924C156.393 290.025 156.172 290.076 156.172 290.076C156.172 290.076 156.972 289.739 158.369 289.132C158.686 288.993 159.032 288.838 159.406 288.67L159.407 288.669L159.408 288.669C159.855 288.467 160.343 288.248 160.871 288.018C161.633 287.682 162.481 287.291 163.39 286.873C163.619 286.767 163.853 286.66 164.089 286.551C164.668 286.281 165.281 285.995 165.911 285.691C166.23 285.537 166.554 285.379 166.882 285.219L166.882 285.219L166.884 285.218C167.202 285.062 167.525 284.904 167.852 284.746C169.18 284.089 170.576 283.38 172.006 282.638L172.126 282.576C172.209 282.533 172.292 282.49 172.376 282.447C172.972 282.139 173.576 281.827 174.169 281.491C174.413 281.356 174.657 281.223 174.901 281.09L174.901 281.09C175.389 280.824 175.877 280.558 176.365 280.277C176.471 280.217 176.578 280.156 176.686 280.094L176.688 280.093L176.689 280.093L176.69 280.092C176.946 279.945 177.209 279.795 177.472 279.653C177.651 279.543 177.829 279.438 178.008 279.333C178.187 279.227 178.366 279.122 178.545 279.012L179.089 278.692C179.277 278.59 179.447 278.472 179.617 278.354L180.656 277.663C182.001 276.702 183.278 275.673 184.402 274.56C184.963 274.003 185.474 273.413 185.934 272.822C186.377 272.215 186.785 271.608 187.109 270.967C187.151 270.891 187.19 270.811 187.228 270.731C187.266 270.651 187.305 270.571 187.347 270.495C187.376 270.423 187.402 270.352 187.427 270.282C187.462 270.186 187.495 270.093 187.534 270.006C187.556 269.936 187.582 269.869 187.609 269.803C187.647 269.709 187.685 269.616 187.705 269.517C187.73 269.432 187.751 269.352 187.773 269.272C187.794 269.192 187.815 269.112 187.841 269.028C187.848 269 187.857 268.97 187.868 268.938C187.883 268.892 187.899 268.842 187.909 268.791L187.943 268.555C187.959 268.477 187.971 268.399 187.983 268.322C187.997 268.234 188.01 268.148 188.028 268.066C188.037 267.99 188.041 267.91 188.045 267.83C188.049 267.75 188.054 267.67 188.062 267.594L188.079 267.358C188.09 267.302 188.087 267.254 188.083 267.204C188.081 267.177 188.079 267.151 188.079 267.122C188.079 267.035 188.075 266.953 188.07 266.873C188.066 266.797 188.062 266.723 188.062 266.65C188.054 266.574 188.041 266.498 188.028 266.422C188.015 266.346 188.003 266.27 187.994 266.194C187.971 265.987 187.916 265.788 187.862 265.592C187.837 265.5 187.811 265.409 187.79 265.317C187.585 264.744 187.364 264.204 187.041 263.732C186.428 262.77 185.593 262.028 184.742 261.505C183.891 260.999 183.022 260.696 182.29 260.561C182.034 260.503 181.793 260.485 181.574 260.468C181.473 260.461 181.377 260.454 181.286 260.443C180.996 260.443 180.741 260.443 180.537 260.46Z" fill="url(#GraduationProjects1)"></path></g><path d="M217.122 212.722H147.095C145.398 212.722 143.7 211.45 143.7 209.331C143.7 207.635 144.973 205.94 147.095 205.94H217.122C218.82 205.94 220.517 207.211 220.517 209.331C220.093 211.026 218.82 212.722 217.122 212.722Z" fill="white"></path><path d="M263.384 212.722H229.008C227.31 212.722 225.612 211.45 225.612 209.331C225.612 207.635 226.886 205.94 229.008 205.94H263.384C265.082 205.94 266.779 207.211 266.779 209.331C266.355 211.026 265.082 212.722 263.384 212.722Z" fill="white"></path><path d="M285.026 212.722H274.416C272.719 212.722 271.021 211.45 271.021 209.331C271.021 207.635 272.294 205.94 274.416 205.94H285.026C286.724 205.94 288.422 207.211 288.422 209.331C287.997 211.026 286.724 212.722 285.026 212.722Z" fill="white"></path><path d="M325.346 212.722H296.063C294.365 212.722 292.667 211.45 292.667 209.331C292.667 207.635 293.941 205.94 296.063 205.94H325.346C327.044 205.94 328.742 207.211 328.742 209.331C328.317 211.026 327.044 212.722 325.346 212.722Z" fill="white"></path><path d="M319.829 436.522V442.032H167.469V436.522C167.469 431.011 172.137 426.349 177.654 426.349H310.068C315.585 426.349 319.829 430.588 319.829 436.522Z" fill="white"></path><path d="M319.83 445.001H167.469C165.772 445.001 164.074 443.73 164.074 441.61V436.524C164.074 429.318 170.016 423.384 177.231 423.384H309.645C316.859 423.384 322.801 429.318 322.801 436.524V442.034C323.225 443.73 321.528 445.001 319.83 445.001ZM170.44 438.643H316.435V436.524C316.435 432.709 313.464 429.742 309.645 429.742H177.655C173.835 429.742 170.865 432.709 170.865 436.524V438.643H170.44Z" fill="url(#GraduationProjects1)"></path><path d="M421.686 445.001H105.081C103.384 445.001 101.686 443.73 101.686 441.61C101.686 439.915 102.959 438.219 105.081 438.219H421.262C422.959 438.219 424.657 439.491 424.657 441.61C424.657 443.73 423.384 445.001 421.686 445.001Z" fill="url(#GraduationProjects1)"></path><defs><linearGradient id="GraduationProjects0" x1="228.598" y1="252.519" x2="264.261" y2="62.8264" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="white" stop-opacity="0.56"></stop></linearGradient><linearGradient id="GraduationProjects1" x1="233.752" y1="160.296" x2="449.892" y2="197.12" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient><linearGradient id="GraduationProjects2" x1="347.655" y1="388.999" x2="213.549" y2="470.528" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="white" stop-opacity="0.56"></stop></linearGradient></defs></svg></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-1ddwpfq-1 hnlXxp sc-7bqyxh-1 eTWzoY"><i class="sc-1ddwpfq-0 clzfwh"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><section class="sc-7bqyxh-0 iJNhSn sc-x072mc-0 hOtCic"><div class="sc-7bqyxh-2 imGcoX"><h2 class="sc-1x9oq14-0 sc-7bqyxh-3 kswXpy ejfgvS">Преподаватели</h2><div><div class="sc-1xbggqf-0 ejZqaz sc-7bqyxh-6 kaSYYd"><div class="sc-jotj87-1 llfUGX sc-1xbggqf-1 gKEGyD"><div class="sc-1x9oq14-0 sc-jotj87-5 wJZyp fhizvJ">Руководитель курса</div><div src="https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg" class="sc-jotj87-0 idGFuj"></div></div><div class="sc-1xbggqf-2 fnEOTo"><h3 class="sc-1x9oq14-0 jmLQpp">Коробейников Глеб</h3><p class="sc-1x9oq14-0 sc-1xbggqf-3 dvqddq ilGgzP">Astra Linux</p><p class="sc-1x9oq14-0 sc-1xbggqf-4 eMZyoN bqxXZo">Senior-разработчик ядра Linux</p><div class="sc-1qbysh1-0 ikwDNo"><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.8498 2.50065C16.4808 2.50065 17.1108 2.58965 17.7098 2.79065C21.4008 3.99065 22.7308 8.04065 21.6198 11.5806C20.9898 13.3896 19.9598 15.0406 18.6108 16.3896C16.6798 18.2596 14.5608 19.9196 12.2798 21.3496L12.0298 21.5006L11.7698 21.3396C9.48077 19.9196 7.34977 18.2596 5.40077 16.3796C4.06077 15.0306 3.02977 13.3896 2.38977 11.5806C1.25977 8.04065 2.58977 3.99065 6.32077 2.76965C6.61077 2.66965 6.90977 2.59965 7.20977 2.56065H7.32977C7.61077 2.51965 7.88977 2.50065 8.16977 2.50065H8.27977C8.90977 2.51965 9.51977 2.62965 10.1108 2.83065H10.1698C10.2098 2.84965 10.2398 2.87065 10.2598 2.88965C10.4808 2.96065 10.6898 3.04065 10.8898 3.15065L11.2698 3.32065C11.3616 3.36962 11.4647 3.44445 11.5537 3.50912C11.6102 3.55009 11.661 3.58699 11.6998 3.61065C11.7161 3.62028 11.7327 3.62996 11.7494 3.63972C11.8351 3.68977 11.9245 3.74191 11.9998 3.79965C13.1108 2.95065 14.4598 2.49065 15.8498 2.50065ZM18.5098 9.70065C18.9198 9.68965 19.2698 9.36065 19.2998 8.93965V8.82065C19.3298 7.41965 18.4808 6.15065 17.1898 5.66065C16.7798 5.51965 16.3298 5.74065 16.1798 6.16065C16.0398 6.58065 16.2598 7.04065 16.6798 7.18965C17.3208 7.42965 17.7498 8.06065 17.7498 8.75965V8.79065C17.7308 9.01965 17.7998 9.24065 17.9398 9.41065C18.0798 9.58065 18.2898 9.67965 18.5098 9.70065Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">2<!-- --> <!-- -->года<!-- --> в Otus</div></div><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.1748 15.2174H11.825C9.42166 15.2174 7.47358 13.2927 7.47358 10.9203V6.29706C7.47358 3.92373 9.42166 2 11.825 2H12.1748C14.5781 2 16.5272 3.92373 16.5272 6.29706V10.9203C16.5272 13.2927 14.5781 15.2174 12.1748 15.2174ZM18.5626 10.7829C18.5626 10.2539 18.9966 9.82626 19.5313 9.82626C20.066 9.82626 20.5 10.2539 20.5 10.7829C20.5 15.0866 17.2006 18.6404 12.9692 19.1178V21.0434C12.9692 21.5714 12.5352 22 12.0005 22C11.4648 22 11.0318 21.5714 11.0318 21.0434V19.1178C6.79945 18.6404 3.5 15.0866 3.5 10.7829C3.5 10.2539 3.93398 9.82626 4.46872 9.82626C5.00345 9.82626 5.43743 10.2539 5.43743 10.7829C5.43743 14.3558 8.38136 17.2629 12.0005 17.2629C15.6186 17.2629 18.5626 14.3558 18.5626 10.7829Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">39<!-- --> <!-- -->занятий</div></div><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.1583 8.23285C16.1583 10.5825 14.2851 12.4666 11.949 12.4666C9.61292 12.4666 7.73974 10.5825 7.73974 8.23285C7.73974 5.88227 9.61292 4 11.949 4C14.2851 4 16.1583 5.88227 16.1583 8.23285ZM11.949 20C8.51785 20 5.58809 19.456 5.58809 17.2802C5.58809 15.1034 8.49904 14.5396 11.949 14.5396C15.3802 14.5396 18.31 15.0836 18.31 17.2604C18.31 19.4362 15.399 20 11.949 20ZM17.9571 8.30922C17.9571 9.50703 17.5998 10.6229 16.973 11.5505C16.9086 11.646 16.9659 11.7748 17.0796 11.7946C17.2363 11.8216 17.3984 11.8369 17.5631 11.8414C19.2062 11.8846 20.6809 10.821 21.0883 9.21974C21.6918 6.84123 19.9198 4.7059 17.6634 4.7059C17.4181 4.7059 17.1835 4.73201 16.9551 4.77884C16.9238 4.78605 16.8907 4.80046 16.8728 4.82838C16.8513 4.8626 16.8674 4.90853 16.8889 4.93825C17.5667 5.8938 17.9571 7.05918 17.9571 8.30922ZM20.6782 13.5126C21.7823 13.7296 22.5084 14.1727 22.8093 14.8166C23.0636 15.3453 23.0636 15.9586 22.8093 16.4864C22.349 17.4851 20.8654 17.8058 20.2887 17.8886C20.1696 17.9066 20.0738 17.8031 20.0864 17.6833C20.3809 14.9157 18.0377 13.6035 17.4315 13.3018C17.4055 13.2883 17.4002 13.2676 17.4028 13.255C17.4046 13.246 17.4154 13.2316 17.4351 13.2289C18.7468 13.2046 20.1571 13.3847 20.6782 13.5126ZM6.43711 11.8413C6.60186 11.8368 6.76304 11.8224 6.92063 11.7945C7.03434 11.7747 7.09165 11.6459 7.02718 11.5504C6.4004 10.6228 6.04313 9.50694 6.04313 8.30913C6.04313 7.05909 6.43353 5.89371 7.11135 4.93816C7.13284 4.90844 7.14806 4.86251 7.12746 4.82829C7.10956 4.80127 7.07553 4.78596 7.04509 4.77875C6.81586 4.73192 6.58127 4.70581 6.33593 4.70581C4.07951 4.70581 2.30751 6.84114 2.91191 9.21965C3.31932 10.8209 4.79405 11.8845 6.43711 11.8413ZM6.59694 13.2545C6.59962 13.268 6.59425 13.2878 6.56918 13.3022C5.9621 13.6039 3.61883 14.9161 3.91342 17.6827C3.92595 17.8034 3.83104 17.9061 3.71195 17.889C3.13531 17.8061 1.65163 17.4855 1.19139 16.4867C0.936203 15.9581 0.936203 15.3457 1.19139 14.817C1.49225 14.1731 2.21752 13.73 3.32156 13.512C3.84358 13.385 5.25294 13.2049 6.5656 13.2292C6.5853 13.2319 6.59515 13.2464 6.59694 13.2545Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">98<!-- --> <!-- -->студентов</div></div></div></div><div class="sc-1xbggqf-5 jdBfaz"><p class="sc-1x9oq14-0 sc-1xbggqf-6 doSDez bsOVrL">4 года опыта разработчиком в ядре Linux. Работал в таких фирмах как RAIDIX, YADRO, SBERTECH. Есть несколько багрепортов и коммитов в ядро Linux. Практический опыт базируется на знании языков C, bash и знании инструментов для отладки ядерного кода таких как kmemleak, KASAN, KGDB, ftrace, eBPF. Теоретический опыт базируется на знании архитектуры amd64, архитектуры современных операционых систем в том числе Linux.
Окончил ИГУ по специальности чистая математика.</p><div class="sc-1xbggqf-7 fsygCj"><h4 class="sc-1x9oq14-0 sc-1xbggqf-8 gGtEnS gwAjdk">Преподает на курсах</h4><ul class="sc-1xbggqf-9 gShPHD"><li class="sc-1x9oq14-0 sc-1xbggqf-10 hQBzUY jyEMds">Разработка ядра Linux</li></ul></div></div></div><div class="sc-1xbggqf-0 fyaSEb sc-7bqyxh-6 kaSYYd"><div class="sc-jotj87-1 llfUGX sc-1xbggqf-1 gKEGyD"><div src="https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg" class="sc-jotj87-0 ePCyAq"></div></div><div class="sc-1xbggqf-2 fnEOTo"><h3 class="sc-1x9oq14-0 jmLQpp">Вячеслав Степанов</h3><p class="sc-1x9oq14-0 sc-1xbggqf-3 dvqddq ilGgzP">НТЦ Модуль</p><p class="sc-1x9oq14-0 sc-1xbggqf-4 eMZyoN bqxXZo">Начальник сектора разработки embedded Linux</p><div class="sc-1qbysh1-0 ikwDNo"><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.8498 2.50065C16.4808 2.50065 17.1108 2.58965 17.7098 2.79065C21.4008 3.99065 22.7308 8.04065 21.6198 11.5806C20.9898 13.3896 19.9598 15.0406 18.6108 16.3896C16.6798 18.2596 14.5608 19.9196 12.2798 21.3496L12.0298 21.5006L11.7698 21.3396C9.48077 19.9196 7.34977 18.2596 5.40077 16.3796C4.06077 15.0306 3.02977 13.3896 2.38977 11.5806C1.25977 8.04065 2.58977 3.99065 6.32077 2.76965C6.61077 2.66965 6.90977 2.59965 7.20977 2.56065H7.32977C7.61077 2.51965 7.88977 2.50065 8.16977 2.50065H8.27977C8.90977 2.51965 9.51977 2.62965 10.1108 2.83065H10.1698C10.2098 2.84965 10.2398 2.87065 10.2598 2.88965C10.4808 2.96065 10.6898 3.04065 10.8898 3.15065L11.2698 3.32065C11.3616 3.36962 11.4647 3.44445 11.5537 3.50912C11.6102 3.55009 11.661 3.58699 11.6998 3.61065C11.7161 3.62028 11.7327 3.62996 11.7494 3.63972C11.8351 3.68977 11.9245 3.74191 11.9998 3.79965C13.1108 2.95065 14.4598 2.49065 15.8498 2.50065ZM18.5098 9.70065C18.9198 9.68965 19.2698 9.36065 19.2998 8.93965V8.82065C19.3298 7.41965 18.4808 6.15065 17.1898 5.66065C16.7798 5.51965 16.3298 5.74065 16.1798 6.16065C16.0398 6.58065 16.2598 7.04065 16.6798 7.18965C17.3208 7.42965 17.7498 8.06065 17.7498 8.75965V8.79065C17.7308 9.01965 17.7998 9.24065 17.9398 9.41065C18.0798 9.58065 18.2898 9.67965 18.5098 9.70065Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">1<!-- --> <!-- -->год<!-- --> в Otus</div></div><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.1748 15.2174H11.825C9.42166 15.2174 7.47358 13.2927 7.47358 10.9203V6.29706C7.47358 3.92373 9.42166 2 11.825 2H12.1748C14.5781 2 16.5272 3.92373 16.5272 6.29706V10.9203C16.5272 13.2927 14.5781 15.2174 12.1748 15.2174ZM18.5626 10.7829C18.5626 10.2539 18.9966 9.82626 19.5313 9.82626C20.066 9.82626 20.5 10.2539 20.5 10.7829C20.5 15.0866 17.2006 18.6404 12.9692 19.1178V21.0434C12.9692 21.5714 12.5352 22 12.0005 22C11.4648 22 11.0318 21.5714 11.0318 21.0434V19.1178C6.79945 18.6404 3.5 15.0866 3.5 10.7829C3.5 10.2539 3.93398 9.82626 4.46872 9.82626C5.00345 9.82626 5.43743 10.2539 5.43743 10.7829C5.43743 14.3558 8.38136 17.2629 12.0005 17.2629C15.6186 17.2629 18.5626 14.3558 18.5626 10.7829Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">14<!-- --> <!-- -->занятий</div></div><div class="sc-1x9oq14-0 sc-1qbysh1-1 enpOeQ jeXkAk"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.1583 8.23285C16.1583 10.5825 14.2851 12.4666 11.949 12.4666C9.61292 12.4666 7.73974 10.5825 7.73974 8.23285C7.73974 5.88227 9.61292 4 11.949 4C14.2851 4 16.1583 5.88227 16.1583 8.23285ZM11.949 20C8.51785 20 5.58809 19.456 5.58809 17.2802C5.58809 15.1034 8.49904 14.5396 11.949 14.5396C15.3802 14.5396 18.31 15.0836 18.31 17.2604C18.31 19.4362 15.399 20 11.949 20ZM17.9571 8.30922C17.9571 9.50703 17.5998 10.6229 16.973 11.5505C16.9086 11.646 16.9659 11.7748 17.0796 11.7946C17.2363 11.8216 17.3984 11.8369 17.5631 11.8414C19.2062 11.8846 20.6809 10.821 21.0883 9.21974C21.6918 6.84123 19.9198 4.7059 17.6634 4.7059C17.4181 4.7059 17.1835 4.73201 16.9551 4.77884C16.9238 4.78605 16.8907 4.80046 16.8728 4.82838C16.8513 4.8626 16.8674 4.90853 16.8889 4.93825C17.5667 5.8938 17.9571 7.05918 17.9571 8.30922ZM20.6782 13.5126C21.7823 13.7296 22.5084 14.1727 22.8093 14.8166C23.0636 15.3453 23.0636 15.9586 22.8093 16.4864C22.349 17.4851 20.8654 17.8058 20.2887 17.8886C20.1696 17.9066 20.0738 17.8031 20.0864 17.6833C20.3809 14.9157 18.0377 13.6035 17.4315 13.3018C17.4055 13.2883 17.4002 13.2676 17.4028 13.255C17.4046 13.246 17.4154 13.2316 17.4351 13.2289C18.7468 13.2046 20.1571 13.3847 20.6782 13.5126ZM6.43711 11.8413C6.60186 11.8368 6.76304 11.8224 6.92063 11.7945C7.03434 11.7747 7.09165 11.6459 7.02718 11.5504C6.4004 10.6228 6.04313 9.50694 6.04313 8.30913C6.04313 7.05909 6.43353 5.89371 7.11135 4.93816C7.13284 4.90844 7.14806 4.86251 7.12746 4.82829C7.10956 4.80127 7.07553 4.78596 7.04509 4.77875C6.81586 4.73192 6.58127 4.70581 6.33593 4.70581C4.07951 4.70581 2.30751 6.84114 2.91191 9.21965C3.31932 10.8209 4.79405 11.8845 6.43711 11.8413ZM6.59694 13.2545C6.59962 13.268 6.59425 13.2878 6.56918 13.3022C5.9621 13.6039 3.61883 14.9161 3.91342 17.6827C3.92595 17.8034 3.83104 17.9061 3.71195 17.889C3.13531 17.8061 1.65163 17.4855 1.19139 16.4867C0.936203 15.9581 0.936203 15.3457 1.19139 14.817C1.49225 14.1731 2.21752 13.73 3.32156 13.512C3.84358 13.385 5.25294 13.2049 6.5656 13.2292C6.5853 13.2319 6.59515 13.2464 6.59694 13.2545Z" fill="currentColor"></path></svg><div class="sc-1qbysh1-2 fwfLnF">164<!-- --> <!-- -->студента</div></div></div></div><div class="sc-1xbggqf-5 jdBfaz"><p class="sc-1x9oq14-0 sc-1xbggqf-6 doSDez bsOVrL">Мой профессиональный путь начался с должности инженера-программиста в этой же компании. На собственном опыте прошел все ступени развития: начинал с написания низкоуровневых библиотек для микроконтроллеров, а затем перешел к созданию сложных систем на Embedded Linux.
Имел опыт работы с отечественными процессорами «Эльбрус», где занимался адаптацией драйверов и прикладных программ. Моим ключевым проектом стала разработка программного обеспечения для встраиваемого бортового вычислителя «NM Pilot», который сегодня используется в реальных промышленных задачах, например, в самоходных буровых установках горнорудной промышленности.
Магистр МАИ по специальности "Конструирование и технология электронных средств".</p><div class="sc-1xbggqf-7 fsygCj"><h4 class="sc-1x9oq14-0 sc-1xbggqf-8 gGtEnS gwAjdk">Преподает на курсах</h4><ul class="sc-1xbggqf-9 gShPHD"><li class="sc-1x9oq14-0 sc-1xbggqf-10 hQBzUY jyEMds">Программист С</li><li class="sc-1x9oq14-0 sc-1xbggqf-10 hQBzUY jyEMds">Разработка ядра Linux</li></ul></div></div></div></div><p class="sc-1x9oq14-0 sc-7bqyxh-4 fPZiIk jUXBik">Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания</p></div></section></div><div id="broadcast" class="sc-x072mc-0 sc-1n8zn8-0 hOtCic kTlAtn"><div class="sc-1n8zn8-3 bNPdJC"><div class="sc-1x9oq14-0 sc-1n8zn8-1 bTMeHF eVtlSO"><h2>Ближайшие мероприятия</h2></div><div class="sc-1x9oq14-0 sc-1n8zn8-2 fPZiIk djvzct"><p>Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.</p></div></div><div class="sc-1n8zn8-4 eruVPL"><div class="sc-fgesu2-0 gCLUsB"><div class="sc-yfz19-0 keMPbH"><div size="128" src="https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg" class="sc-yfz19-1 hPuTug"></div></div><div id="event-7036" class="sc-fgesu2-1 fNTfNW"><div class="sc-fgesu2-2 fxDzQc"><div class="sc-fgesu2-3 eyMrGT"><div class="sc-fgesu2-4 fGVXtz"><div class="sc-1x9oq14-0 sc-fgesu2-5 gGtEnS gLvmdB">Платформенные драйвера. Как управлять периферией систем на кристалле (SoC)</div><div class="sc-1x9oq14-0 sc-fgesu2-6 iFeEEh keqBcC">Вячеслав Степанов</div></div></div><div class="sc-1x9oq14-0 sc-2yxsal-0 doSDez jaQEyp"><span><span></span><span><span>На уроке рассмотрятся механизмы взаимодействия ядра Linux с периферией SoC: как ядро «видит» железо через файл дерева устройств (Device Tree), и путь от описания пинов в DTS до работы готового платформенного драйвера.
</span><br/><span>
</span><br/><span>Что будет рассмотрено на открытом уроке:
</span><br/><span>- Роль Device Tree в современных SoC: Почему на смену «платформенным данным» (platform_data) пришло дерево устройств и как оно описывает нестандартную периферию .
</span><br/><span>- Как ядро анализирует бинарный blob (.dtb), преобразует его в дерево структур struct device_node и создает экземпляры platform_device .
</span><br/><span>- Как осуществляется поиск правильного драйвера. Детальный разбор поля compatible в DTS и таблицы of_match_table в драйвере .
</span><br/><span>- Практический пример: Написание каркаса собственного платформенного драйвера с нуля, включая обработку полученных из DTS ресурсов и взаимодействие с аппаратурой .
</span><br/><span>
</span><br/><span>Какие результаты на выходе:
</span><br/><span>- Понимать, как ядро Linux абстрагирует аппаратные различия SoC с помощью Device Tree.
</span><br/><span>- Уметь находить связь между узлом в файле .dts и конкретным драйвером в коде ядра.
</span><br/><span>- Знать структуру платформенного драйвера (struct platform_driver) и порядок действий при его написании.
</span><br/><span>
</span><br/><span>Кому будет полезно присутствовать
</span><br/><span>- Начинающим embedded-разработчикам: которые хотят понять, с чего начинать написание драйверов для новой платы.
</span><br/><span>- Системным программистам: желающим систематизировать знания о подсистеме platform driver и Device Tree.
</span><br/><span>- Студентам и инженерам: работающим с одноплатными компьютерами (Raspberry Pi, BeagleBone и др.)</span></span><span style="position:fixed;visibility:hidden;top:0;left:0">...<!-- --> <button class="sc-2yxsal-1 gjkZBp">Читать дальше</button></span></span></div></div><div class="sc-fgesu2-7 eaisXT"><div class="sc-fgesu2-8 cAsFre"><div class="sc-1x9oq14-0 sc-fgesu2-9 fPZiIk cLaaQZ">9 апреля в 17:00</div><div class="sc-1x9oq14-0 enpOeQ">Открытый вебинар</div></div><div class="sc-fgesu2-10 hIqDgT"><button class="sc-1qig7zt-0 bYRRHi sc-fgesu2-11 fPQjfN"><div style="color:#fff" class="sc-10qj18o-1 bLNTdk"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="sc-10qj18o-0 iJGzvz"><circle cx="50" cy="50" fill="none" r="45" stroke-width="10" stroke="currentColor" stroke-dasharray="73.82742735936014 73.82742735936014"></circle></svg></div></button><button class="sc-1qig7zt-0 jBZCRO"><div class="sc-1pd1pn6-0 kpFjsV"><svg class="sc-1pd1pn6-1 jpjsGB" width="6" height="6" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.10103 2.08786H3.89795V0.911617C3.89795 0.409446 3.49521 0 2.99897 0C2.50377 0 2.1 0.409446 2.1 0.911617V2.08786H0.898973C0.40274 2.08786 0 2.49731 0 2.99948C0 3.50165 0.40274 3.9111 0.898973 3.9111H2.1V5.08838C2.1 5.59055 2.50377 6 2.99897 6C3.49521 6 3.89795 5.59055 3.89795 5.08838V3.9111H5.10103C5.59623 3.9111 6 3.50165 6 2.99948C6 2.49731 5.59623 2.08786 5.10103 2.08786Z" fill="currentColor"></path></svg><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg></div></button></div></div></div></div><div class="sc-fgesu2-0 gCLUsB"><div class="sc-yfz19-0 keMPbH"><div size="128" src="https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg" class="sc-yfz19-1 dvxNPZ"></div></div><div id="event-7037" class="sc-fgesu2-1 fNTfNW"><div class="sc-fgesu2-2 fxDzQc"><div class="sc-fgesu2-3 eyMrGT"><div class="sc-fgesu2-4 fGVXtz"><div class="sc-1x9oq14-0 sc-fgesu2-5 gGtEnS gLvmdB">Связанные списки в ядре Linux: от API до реального кода</div><div class="sc-1x9oq14-0 sc-fgesu2-6 iFeEEh keqBcC">Коробейников Глеб</div></div></div><div class="sc-1x9oq14-0 sc-2yxsal-0 doSDez jaQEyp"><span><span></span><span><span>Связанные списки — одна из базовых структур данных в ядре Linux и важный инструмент для разработки драйверов и модулей ядра.
</span><br/><span>На занятии разберём API связанных списков в ядре Linux, посмотрим реальные примеры из кода ядра и драйверов, а также закрепим материал на практике.
</span><br/><span>Покажем, где и зачем используются связанные списки, как писать с ними корректный и безопасный код, и на какие типичные ошибки стоит обращать внимание при работе с динамическими структурами данных в ядре.
</span><br/><span>
</span><br/><span>Что разберём:
</span><br/><span>- API связанных списков и очередей в ядре Linux
</span><br/><span>- Реальные кейсы использования связанных списков в драйверах
</span><br/><span>- Примеры простых модулей ядра с использованием связанных списков
</span><br/><span>- Типовые ошибки при работе с динамическими структурами данных и способы их избежать
</span><br/><span>
</span><br/><span>После занятия вы сможете:
</span><br/><span>- Писать код в ядре Linux с использованием связанных списков;
</span><br/><span>- Понимать, в каких сценариях связанные списки — оптимальный выбор;
</span><br/><span>- Уверенно работать с API связных списков и очередей ядра;
</span><br/><span>- Находить и исправлять ошибки при работе с динамическими структурами данных;
</span><br/><span>- Разрабатывать и отлаживать модули ядра с поддержкой связанных списков.
</span><br/><span>
</span><br/><span>Кому будет полезно
</span><br/><span>- Разработчикам, изучающим внутреннее устройство ядра Linux;
</span><br/><span>- Инженерам, работающим с драйверами и модулями ядра;</span></span><span style="position:fixed;visibility:hidden;top:0;left:0">...<!-- --> <button class="sc-2yxsal-1 gjkZBp">Читать дальше</button></span></span></div></div><div class="sc-fgesu2-7 eaisXT"><div class="sc-fgesu2-8 cAsFre"><div class="sc-1x9oq14-0 sc-fgesu2-9 fPZiIk cLaaQZ">21 апреля в 17:00</div><div class="sc-1x9oq14-0 enpOeQ">Открытый вебинар</div></div><div class="sc-fgesu2-10 hIqDgT"><button class="sc-1qig7zt-0 bYRRHi sc-fgesu2-11 fPQjfN"><div style="color:#fff" class="sc-10qj18o-1 bLNTdk"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="sc-10qj18o-0 iJGzvz"><circle cx="50" cy="50" fill="none" r="45" stroke-width="10" stroke="currentColor" stroke-dasharray="73.82742735936014 73.82742735936014"></circle></svg></div></button><button class="sc-1qig7zt-0 jBZCRO"><div class="sc-1pd1pn6-0 kpFjsV"><svg class="sc-1pd1pn6-1 jpjsGB" width="6" height="6" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.10103 2.08786H3.89795V0.911617C3.89795 0.409446 3.49521 0 2.99897 0C2.50377 0 2.1 0.409446 2.1 0.911617V2.08786H0.898973C0.40274 2.08786 0 2.49731 0 2.99948C0 3.50165 0.40274 3.9111 0.898973 3.9111H2.1V5.08838C2.1 5.59055 2.50377 6 2.99897 6C3.49521 6 3.89795 5.59055 3.89795 5.08838V3.9111H5.10103C5.59623 3.9111 6 3.50165 6 2.99948C6 2.49731 5.59623 2.08786 5.10103 2.08786Z" fill="currentColor"></path></svg><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg></div></button></div></div></div></div></div></div><div id="pastevents" class="sc-x072mc-0 sc-g9zqla-0 hOtCic frFtzw"><h2 class="sc-1x9oq14-0 sc-g9zqla-1 bTMeHF jqTCqB">Прошедшие <br class="sc-g9zqla-2 nExnN"/>мероприятия</h2><div class="sc-g9zqla-3 cmzqGo"><div id="video-6439" class="sc-1l3meww-0 gAbnmq"><div src="https://sun9-51.userapi.com/impg/OAHp3leD75B-JtmtyCHjWCiwjNw_X-urfYNfUA/CmjLYEFtfHA.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=b3e6c6e5fe52a14c7205deaef90d022a&c_uniq_tag=HnB9gpGenkl1IrnCaqWkzH6-v0c3-RqI5ZzXzwL-TRc&type=video_thumb" class="sc-1l3meww-1 yVUWU"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1l3meww-7 hkpcCk"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12.0058C2 6.48625 6.48842 2 12 2C17.5116 2 22 6.48625 22 12.0058C22 17.5137 17.5116 22 12 22C6.48842 22 2 17.5137 2 12.0058ZM15.668 13.0178C15.7741 12.9117 15.9093 12.7477 15.9382 12.7091C16.0927 12.5065 16.1699 12.2557 16.1699 12.0058C16.1699 11.725 16.083 11.4645 15.9189 11.2523C15.9055 11.2388 15.8791 11.2102 15.8448 11.1728C15.7806 11.103 15.6885 11.0026 15.6004 10.9146C14.8089 10.0656 12.7432 8.67631 11.6622 8.25181C11.4981 8.18524 11.083 8.03956 10.861 8.02991C10.6486 8.02991 10.4459 8.07815 10.2529 8.17463C10.0116 8.3097 9.81853 8.52195 9.71236 8.77279C9.64479 8.94645 9.53861 9.46744 9.53861 9.47709C9.43243 10.0463 9.37452 10.9725 9.37452 11.9952C9.37452 12.9706 9.43243 13.8572 9.51931 14.4361C9.52169 14.4385 9.53 14.4799 9.5429 14.5442C9.58211 14.7397 9.6638 15.1471 9.75097 15.314C9.96332 15.7192 10.3784 15.9701 10.8224 15.9701H10.861C11.1506 15.9604 11.7587 15.7096 11.7587 15.7C12.7819 15.2754 14.7992 13.9537 15.61 13.0757L15.668 13.0178Z" fill="currentColor"></path></svg></div><div class="sc-1l3meww-2 cHxJxf"><div class="sc-1x9oq14-0 sc-1l3meww-3 dvqddq blhXzJ">Коробейников Глеб</div><div class="sc-1x9oq14-0 sc-1l3meww-4 iFeEEh dePnfm">Открытый вебинар</div><div class="sc-1x9oq14-0 sc-1l3meww-5 doSDez gnNvLT">Вход в ядро: системные вызовы и граница между user space и kernel space</div></div></div><div id="video-6435" class="sc-1l3meww-0 gAbnmq"><div src="https://sun9-48.userapi.com/impg/7RZVWfcc9PHBxA2jRUMhFDoS0RMwx_QacwGvZQ/FY_PD4nJ2Ps.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=68f67c5f7f03be92de5111840cd76d66&c_uniq_tag=Li4DdUSb9jcxiyXIPQxji6N2QpzwOtvSWJxODWtnkzk&type=video_thumb" class="sc-1l3meww-1 JYvfs"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1l3meww-7 hkpcCk"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12.0058C2 6.48625 6.48842 2 12 2C17.5116 2 22 6.48625 22 12.0058C22 17.5137 17.5116 22 12 22C6.48842 22 2 17.5137 2 12.0058ZM15.668 13.0178C15.7741 12.9117 15.9093 12.7477 15.9382 12.7091C16.0927 12.5065 16.1699 12.2557 16.1699 12.0058C16.1699 11.725 16.083 11.4645 15.9189 11.2523C15.9055 11.2388 15.8791 11.2102 15.8448 11.1728C15.7806 11.103 15.6885 11.0026 15.6004 10.9146C14.8089 10.0656 12.7432 8.67631 11.6622 8.25181C11.4981 8.18524 11.083 8.03956 10.861 8.02991C10.6486 8.02991 10.4459 8.07815 10.2529 8.17463C10.0116 8.3097 9.81853 8.52195 9.71236 8.77279C9.64479 8.94645 9.53861 9.46744 9.53861 9.47709C9.43243 10.0463 9.37452 10.9725 9.37452 11.9952C9.37452 12.9706 9.43243 13.8572 9.51931 14.4361C9.52169 14.4385 9.53 14.4799 9.5429 14.5442C9.58211 14.7397 9.6638 15.1471 9.75097 15.314C9.96332 15.7192 10.3784 15.9701 10.8224 15.9701H10.861C11.1506 15.9604 11.7587 15.7096 11.7587 15.7C12.7819 15.2754 14.7992 13.9537 15.61 13.0757L15.668 13.0178Z" fill="currentColor"></path></svg></div><div class="sc-1l3meww-2 cHxJxf"><div class="sc-1x9oq14-0 sc-1l3meww-3 dvqddq blhXzJ">Вячеслав Степанов</div><div class="sc-1x9oq14-0 sc-1l3meww-4 iFeEEh dePnfm">Открытый вебинар</div><div class="sc-1x9oq14-0 sc-1l3meww-5 doSDez gnNvLT">Как ядро Linux взаимодействует с устройствами: драйверы, шины и модель устройств</div></div></div></div><div class="sc-1x9oq14-0 sc-n3p609-1 doSDez caypgj">Для доступа ко всем прошедшим мероприятиям необходимо пройти<!-- --> <b>входное тестирование</b><br/>Возможность пройти вступительное тестирование повторно появится только через <b>3 дня</b><br/>Результаты тестирования будут отправлены вам <b>на email</b>, указанный при регистрации.<br/>Тест рассчитан на <b>30</b> минут, после начала тестирования отложить тестирование не получится!</div><div class="sc-1lrh8w5-0 ftkQLi sc-n3p609-0 fYPwsY"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 kfzfcV"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-1xm68ya-2 isRQVJ"><i class="sc-1ddwpfq-0 bGLtep"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 sc-1xm68ya-1 hOtCic hqEzLD sc-x072mc-0 hOtCic"><h2 class="sc-1x9oq14-0 sc-1xm68ya-3 kswXpy cXcqyt">Этот курс может оплатить ваш работодатель</h2><div class="sc-1xm68ya-4 kscGdX"><div class="sc-1x9oq14-0 sc-1xm68ya-5 fPZiIk">Обучайтесь за счёт работодателя или разделите оплату 50/50</div><ul class="sc-1xm68ya-6 jEIquP"><li class="sc-1xm68ya-0 eNgslB">Подробно расскажем об интересующем вас курсе</li><li class="sc-1xm68ya-0 eNgslB">Объясним, как договориться с работодателем</li><li class="sc-1xm68ya-0 eNgslB">Сообщим стоимость обучения и варианты оплаты</li><li class="sc-1xm68ya-0 eNgslB">Ответим на вопросы</li><li class="sc-1xm68ya-0 eNgslB">Предоставим шаблон договора и счёт на оплату</li></ul><div><a class="sc-1xm68ya-7 eOihnY" target="_blank" rel="noopener noreferrer" href="/b2b">Подробнее о корпоративном обучении</a></div></div><div class="sc-32ejay-1 bnqryM"><button class="sc-1qig7zt-0 czpnNJ">Оставить заявку</button></div></div></div><div class="sc-x072mc-0 sc-h0c1ca-0 hOtCic dXezGA"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><h2 class="sc-1x9oq14-0 sc-h0c1ca-4 kswXpy dygiGU">Отзывы</h2><div class="sc-h0c1ca-1 gaiDWC"><div class="sc-1bkbgbz-0 haeyZv swiper-ui sc-h0c1ca-5 vuxta"><div class="sc-1bkbgbz-1 jssxGI"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Алексей Гришин</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">20.11.2025</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Последнее моё место работы - инженер-программист в концерне "Телематика". Имею достаточно широкий опыт в разработке ПО для программно-аппаратных устройств, а также участие в построении архитектуры разрабатываемых систем. В этом году я решил углубить свои познания в разработке драйверов устройств для ОС "Linux", собственно, ради этого я и выбрал этот курс. Скажу, что нисколько не жалел потраченного времени и денег, хочу выразить признательность преподавателям-авторам этого курса. Главное его преимущество - это возможность учиться у действующих практикующих разработчиков модулей ядра, это очень ценно. Понравилась в Отусе также и гибкость расписания, возможность просмотра записей лекций при отсутствии возможности очного присутствия. Касаемо собственно курса: мог бы посоветовать при его доработке для будущих потоков добавить больше иллюстративных материалов и поработать над доступностью изложения. Касаемо результатов обучения, я не питаю никаких иллюзий относительно трудоустройства и понимаю, что в случае смены своей специальности и при переквалификации в разработчики ядра мне только предстоит освоить огромный пласт информации, набраться опыта, и т.п. Никакой курс не сможет меня обучить на супер-пупер-разработчика, все нужно постигать своим умом и трудом. Но понять направление, куда двигаться, мне удалось.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#59018E"></stop><stop offset="1" stop-color="#360061"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Андрей </p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">15.10.2025</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Я занимался разработкой программ на языке Си (userspace), работаю над балансировщиком трафика. Я выбрал этот курс, так как хотел расширить свои знания в области kernelspace. Курс мне в целом понравился. Обучение мне дало систематизацию знаний в области ядра linux.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/c3/79/avatar-631638-c37927.png" class="sc-h3yero-4 kiCBYx"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Ринат Гадельшин</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">14.10.2025</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Курс мне понравился. Денег своих точно стоит. Уложил в моей голове базовые концепции кода ядра (контейнеры, kthread, память, ну и вообще про драйвера).
Вероятно совсем новеньким в Linux будет тяжело, т.к. если каждую тему до конца разжёвывать, то надо курс в разы по времени увеличивать (возможно стоит разбить курс на несколько).
Отдельное спасибо за лекцию с отладкой ядра!</div></div></div></div></div><div color="#740FB4" class="sc-1bkbgbz-6 dtHGxE"><button color="#740FB4" class="sc-1bkbgbz-2 sc-1bkbgbz-4 fzLRzy biZjNh"><div class="sc-1bqzqc9-0"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button><div class="sc-1bkbgbz-5 hGKrlu"></div><button color="#740FB4" class="sc-1bkbgbz-2 sc-1bkbgbz-3 fzLRzy iPzpLW"><div class="sc-1bqzqc9-0 dzJeEt"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button></div></div></div></div><div class="sc-x072mc-0 sc-1r62a6q-0 hOtCic lliDuJ"><h2 class="sc-1x9oq14-0 sc-1r62a6q-1 bTMeHF llFwsA">Подтверждение знаний и навыков</h2><div class="sc-1x9oq14-0 sc-1r62a6q-2 fPZiIk dtnelf"><p>OTUS осуществляет лицензированную образовательную деятельность. <br>В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности</p></div><div class="sc-1r62a6q-3 eNyjzK"><div class="sc-1oz275d-0 ddfkAs"><div class="sc-1bkbgbz-0 giOpNO swiper-ui sc-1oz275d-3 hXVWHD"><div class="sc-1oz275d-2 cmjKRy sc-1bkbgbz-1 ehnata"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide"><img src="/_next/static/images/img/otus-certificate-832bf0e82aba1cde68e7417b12683728.png" class="sc-1oz275d-1 dCggDS"/></div><div class="swiper-slide"><img src="/_next/static/images/img/upk-diploma-d6bca6c33b9795bec7d04fb91a431230.png" class="sc-1oz275d-1 dCggDS"/></div></div></div></div><div color="#740FB4" class="sc-1bkbgbz-6 dtHGxE"><button color="#740FB4" class="sc-1bkbgbz-2 sc-1bkbgbz-4 fzLRzy biZjNh"><div class="sc-1bqzqc9-0"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button><div class="sc-1bkbgbz-5 hGKrlu"></div><button color="#740FB4" class="sc-1bkbgbz-2 sc-1bkbgbz-3 fzLRzy iPzpLW"><div class="sc-1bqzqc9-0 dzJeEt"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button></div></div></div><div class="sc-1r62a6q-4 iFJPFM"><h2>После обучения вы:</h2>
<ul>
<li>Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)</li>
<li><span>Создадите свой проект, который поможет при прохождении собеседований</span></li>
<li>Повысите свою ценность и конкурентоспособность как IT-специалист</li>
<li>Получите сертификат об окончании курса</li>
</ul></div></div></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div id="payment-link" class="sc-1ddwpfq-1 hnlXxp sc-mgf5g0-1 cGuqjL"><i class="sc-1ddwpfq-0 clzfwh"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-mgf5g0-0 VNvrk sc-x072mc-0 hOtCic"><div class="sc-mgf5g0-3 iMmpz"><h2 class="sc-1x9oq14-0 sc-mgf5g0-5 jmLQpp cHLoOP">Разработка ядра Linux</h2></div><div class="sc-mgf5g0-4 cIkHKG"><div class="sc-10kui61-0 hgTHTJ"><div class="sc-10kui61-1 gEGbfQ"><div class="sc-t8narm-0 gPfNRv sc-1peufw-0 gosVbC"><div class="sc-zkx93-0 yFPt"><div>В рассрочку</div></div><div class="sc-zkx93-0 hubLMz"><div>Полная</div></div><div class="sc-zkx93-0 hubLMz"><div>Компаниям</div></div></div><p class="sc-1x9oq14-0 hQBzUY">Стоимость в рассрочку</p><div class="sc-1peufw-1 lYQex"><div class="sc-1x9oq14-0 sc-1peufw-2 ioOegJ iKtgdB">от<!-- --> <!-- -->5 833,33<!-- --> <!-- -->₽<span class="sc-1peufw-4 iLnntQ">/мес</span></div></div><div class="sc-1gixy6u-0 SAbyR"></div></div><div class="sc-1r0uxxj-1 bPBPRV sc-10kui61-2 bpPrAe"><div class="sc-1r0uxxj-0 ewmmcs"></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.7689 8.3818H22C22 4.98459 19.9644 3 16.5156 3H7.48444C4.03556 3 2 4.98459 2 8.33847V15.6615C2 19.0154 4.03556 21 7.48444 21H16.5156C19.9644 21 22 19.0154 22 15.6615V15.3495H17.7689C15.8052 15.3495 14.2133 13.7975 14.2133 11.883C14.2133 9.96849 15.8052 8.41647 17.7689 8.41647V8.3818ZM17.7689 9.87241H21.2533C21.6657 9.87241 22 10.1983 22 10.6004V13.131C21.9952 13.5311 21.6637 13.8543 21.2533 13.8589H17.8489C16.8548 13.872 15.9855 13.2084 15.76 12.2643C15.6471 11.6783 15.8056 11.0736 16.1931 10.6122C16.5805 10.1509 17.1573 9.88007 17.7689 9.87241ZM17.92 12.533H18.2489C18.6711 12.533 19.0133 12.1993 19.0133 11.7877C19.0133 11.3761 18.6711 11.0424 18.2489 11.0424H17.92C17.7181 11.0401 17.5236 11.1166 17.38 11.255C17.2364 11.3934 17.1555 11.5821 17.1556 11.779C17.1555 12.1921 17.4964 12.5282 17.92 12.533ZM6.73778 8.3818H12.3822C12.8044 8.3818 13.1467 8.04812 13.1467 7.63649C13.1467 7.22487 12.8044 6.89119 12.3822 6.89119H6.73778C6.31903 6.89116 5.9782 7.2196 5.97333 7.62783C5.97331 8.04087 6.31415 8.37705 6.73778 8.3818Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez"><span class="sc-1r0uxxj-3 kMVdSV">Доступные способы оплаты.</span> <br class="sc-1r0uxxj-2 eewVHU"/>Стоимость указана для оплаты физическими лицами</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M20.3991 9.14611L21.1193 9.86611C21.6895 10.4261 21.9996 11.1861 21.9996 11.9861C22.0096 12.7861 21.6995 13.5471 21.1393 14.1161C21.1327 14.1234 21.126 14.1299 21.1193 14.1363C21.116 14.1396 21.1127 14.1428 21.1093 14.1461L20.3991 14.8561C20.119 15.1361 19.9589 15.5161 19.9589 15.9171V16.9461C19.9589 18.6061 18.6084 19.9571 16.9478 19.9571H15.9174C15.5173 19.9571 15.1372 20.1161 14.8571 20.3961L14.1368 21.1161C13.5466 21.7071 12.7763 21.9961 12.006 21.9961C11.2357 21.9961 10.4655 21.7071 9.87525 21.1271L9.14498 20.3961C8.86488 20.1161 8.48474 19.9571 8.0846 19.9571H7.05423C5.39362 19.9571 4.04313 18.6061 4.04313 16.9461V15.9171C4.04313 15.5161 3.88308 15.1361 3.60298 14.8461L2.88271 14.1361C1.71229 12.9671 1.70229 11.0561 2.87271 9.87711L3.60298 9.14611C3.88308 8.86611 4.04313 8.48611 4.04313 8.07611V7.05611C4.04313 5.39611 5.39362 4.04711 7.05423 4.04711H8.0846C8.48474 4.04711 8.86488 3.88611 9.14498 3.60611L9.86524 2.88611C11.0357 1.70711 12.9464 1.70711 14.1268 2.87711L14.8571 3.60611C15.1372 3.88611 15.5173 4.04711 15.9174 4.04711H16.9478C18.6084 4.04711 19.9589 5.39611 19.9589 7.05611V8.08711C19.9589 8.48611 20.119 8.86611 20.3991 9.14611ZM9.42509 15.4461C9.66517 15.4461 9.88525 15.3561 10.0453 15.1861L15.1872 10.0471C15.5273 9.70711 15.5273 9.14611 15.1872 8.80611C14.8471 8.46711 14.2969 8.46711 13.9567 8.80611L8.81486 13.9461C8.47474 14.2861 8.47474 14.8461 8.81486 15.1861C8.97492 15.3561 9.195 15.4461 9.42509 15.4461ZM13.6966 14.5661C13.6966 15.0561 14.0868 15.4461 14.577 15.4461C15.0571 15.4461 15.4473 15.0561 15.4473 14.5661C15.4473 14.0871 15.0571 13.6961 14.577 13.6961C14.0868 13.6961 13.6966 14.0871 13.6966 14.5661ZM9.43509 8.55611C9.91526 8.55611 10.3054 8.94611 10.3054 9.42611C10.3054 9.91711 9.91526 10.3061 9.43509 10.3061C8.95492 10.3061 8.55477 9.91711 8.55477 9.42611C8.55477 8.94611 8.95492 8.55611 9.43509 8.55611Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez">Верните с помощью налогового <br class="sc-1r0uxxj-2 eewVHU"/>вычета до 13% стоимости обучения.<!-- --> <!-- -->Пройдите тестирование и менеджер вас проконсультирует</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><g><path d="M14.4183 5.49C13.9422 5.40206 13.505 5.70586 13.4144 6.17054C13.3238 6.63522 13.6285 7.08891 14.0916 7.17984C15.4859 7.45166 16.5624 8.53092 16.8353 9.92995V9.93095C16.913 10.3337 17.2675 10.6265 17.6759 10.6265C17.7306 10.6265 17.7854 10.6215 17.8412 10.6115C18.3043 10.5186 18.609 10.0659 18.5184 9.60018C18.1111 7.51062 16.5027 5.89672 14.4183 5.49Z" fill="currentColor"></path><path d="M14.356 2.00793C14.1329 1.97595 13.9088 2.04191 13.7305 2.18381C13.5473 2.32771 13.4328 2.53557 13.4079 2.76841C13.3551 3.23908 13.6947 3.66479 14.1648 3.71776C17.4064 4.07951 19.926 6.60477 20.2905 9.85654C20.3393 10.2922 20.7048 10.621 21.141 10.621C21.1739 10.621 21.2058 10.619 21.2386 10.615C21.4667 10.59 21.6699 10.4771 21.8133 10.2972C21.9557 10.1174 22.0204 9.89351 21.9945 9.66467C21.5404 5.60746 18.4003 2.45862 14.356 2.00793Z" fill="currentColor"></path></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.0317 12.9724C15.0208 16.9604 15.9258 12.3467 18.4656 14.8848C20.9143 17.3328 22.3216 17.8232 19.2192 20.9247C18.8306 21.237 16.3616 24.9943 7.6846 16.3197C-0.993478 7.644 2.76158 5.17244 3.07397 4.78395C6.18387 1.67385 6.66586 3.08938 9.11449 5.53733C11.6544 8.0765 7.04266 8.98441 11.0317 12.9724Z" fill="currentColor"></path></g></svg></div><div class="sc-1x9oq14-0 doSDez">Есть вопросы? Позвоните!<br/><a href="tel:+7 499 938-92-02"><span class="sc-1r0uxxj-3 kMVdSV">+7 499 938-92-02</span></a> <!-- -->бесплатно</div></div></div></div><div class="sc-7ugo7y-0 bTFiyu"><div class="sc-7ugo7y-1 iOYphy"><div class="sc-1x9oq14-0 sc-1u84tez-2 gGtEnS kgGhBx">Пройдите тестирование</div><div class="sc-1x9oq14-0 sc-1u84tez-3 eMZyoN lcNwWc">Старт занятий 30 апреля</div><div class="sc-1lrh8w5-0 ftkQLi"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 kfzfcV"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div><div class="sc-ne2nun-0 jFFNWn"><button class="sc-1x9oq14-0 sc-ne2nun-2 doSDez cWqojy">Оставить заявку на оплату<!-- --> <!-- -->курса<!-- --> работодателем</button></div></div></div><div class="sc-1r0uxxj-1 bPBPRV sc-mgf5g0-6 kiGnqS"><div class="sc-1r0uxxj-0 ewmmcs"></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.7689 8.3818H22C22 4.98459 19.9644 3 16.5156 3H7.48444C4.03556 3 2 4.98459 2 8.33847V15.6615C2 19.0154 4.03556 21 7.48444 21H16.5156C19.9644 21 22 19.0154 22 15.6615V15.3495H17.7689C15.8052 15.3495 14.2133 13.7975 14.2133 11.883C14.2133 9.96849 15.8052 8.41647 17.7689 8.41647V8.3818ZM17.7689 9.87241H21.2533C21.6657 9.87241 22 10.1983 22 10.6004V13.131C21.9952 13.5311 21.6637 13.8543 21.2533 13.8589H17.8489C16.8548 13.872 15.9855 13.2084 15.76 12.2643C15.6471 11.6783 15.8056 11.0736 16.1931 10.6122C16.5805 10.1509 17.1573 9.88007 17.7689 9.87241ZM17.92 12.533H18.2489C18.6711 12.533 19.0133 12.1993 19.0133 11.7877C19.0133 11.3761 18.6711 11.0424 18.2489 11.0424H17.92C17.7181 11.0401 17.5236 11.1166 17.38 11.255C17.2364 11.3934 17.1555 11.5821 17.1556 11.779C17.1555 12.1921 17.4964 12.5282 17.92 12.533ZM6.73778 8.3818H12.3822C12.8044 8.3818 13.1467 8.04812 13.1467 7.63649C13.1467 7.22487 12.8044 6.89119 12.3822 6.89119H6.73778C6.31903 6.89116 5.9782 7.2196 5.97333 7.62783C5.97331 8.04087 6.31415 8.37705 6.73778 8.3818Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez"><span class="sc-1r0uxxj-3 kMVdSV">Доступные способы оплаты.</span> <br class="sc-1r0uxxj-2 eewVHU"/>Стоимость указана для оплаты физическими лицами</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M20.3991 9.14611L21.1193 9.86611C21.6895 10.4261 21.9996 11.1861 21.9996 11.9861C22.0096 12.7861 21.6995 13.5471 21.1393 14.1161C21.1327 14.1234 21.126 14.1299 21.1193 14.1363C21.116 14.1396 21.1127 14.1428 21.1093 14.1461L20.3991 14.8561C20.119 15.1361 19.9589 15.5161 19.9589 15.9171V16.9461C19.9589 18.6061 18.6084 19.9571 16.9478 19.9571H15.9174C15.5173 19.9571 15.1372 20.1161 14.8571 20.3961L14.1368 21.1161C13.5466 21.7071 12.7763 21.9961 12.006 21.9961C11.2357 21.9961 10.4655 21.7071 9.87525 21.1271L9.14498 20.3961C8.86488 20.1161 8.48474 19.9571 8.0846 19.9571H7.05423C5.39362 19.9571 4.04313 18.6061 4.04313 16.9461V15.9171C4.04313 15.5161 3.88308 15.1361 3.60298 14.8461L2.88271 14.1361C1.71229 12.9671 1.70229 11.0561 2.87271 9.87711L3.60298 9.14611C3.88308 8.86611 4.04313 8.48611 4.04313 8.07611V7.05611C4.04313 5.39611 5.39362 4.04711 7.05423 4.04711H8.0846C8.48474 4.04711 8.86488 3.88611 9.14498 3.60611L9.86524 2.88611C11.0357 1.70711 12.9464 1.70711 14.1268 2.87711L14.8571 3.60611C15.1372 3.88611 15.5173 4.04711 15.9174 4.04711H16.9478C18.6084 4.04711 19.9589 5.39611 19.9589 7.05611V8.08711C19.9589 8.48611 20.119 8.86611 20.3991 9.14611ZM9.42509 15.4461C9.66517 15.4461 9.88525 15.3561 10.0453 15.1861L15.1872 10.0471C15.5273 9.70711 15.5273 9.14611 15.1872 8.80611C14.8471 8.46711 14.2969 8.46711 13.9567 8.80611L8.81486 13.9461C8.47474 14.2861 8.47474 14.8461 8.81486 15.1861C8.97492 15.3561 9.195 15.4461 9.42509 15.4461ZM13.6966 14.5661C13.6966 15.0561 14.0868 15.4461 14.577 15.4461C15.0571 15.4461 15.4473 15.0561 15.4473 14.5661C15.4473 14.0871 15.0571 13.6961 14.577 13.6961C14.0868 13.6961 13.6966 14.0871 13.6966 14.5661ZM9.43509 8.55611C9.91526 8.55611 10.3054 8.94611 10.3054 9.42611C10.3054 9.91711 9.91526 10.3061 9.43509 10.3061C8.95492 10.3061 8.55477 9.91711 8.55477 9.42611C8.55477 8.94611 8.95492 8.55611 9.43509 8.55611Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez">Верните с помощью налогового <br class="sc-1r0uxxj-2 eewVHU"/>вычета до 13% стоимости обучения.<!-- --> <!-- -->Пройдите тестирование и менеджер вас проконсультирует</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><g><path d="M14.4183 5.49C13.9422 5.40206 13.505 5.70586 13.4144 6.17054C13.3238 6.63522 13.6285 7.08891 14.0916 7.17984C15.4859 7.45166 16.5624 8.53092 16.8353 9.92995V9.93095C16.913 10.3337 17.2675 10.6265 17.6759 10.6265C17.7306 10.6265 17.7854 10.6215 17.8412 10.6115C18.3043 10.5186 18.609 10.0659 18.5184 9.60018C18.1111 7.51062 16.5027 5.89672 14.4183 5.49Z" fill="currentColor"></path><path d="M14.356 2.00793C14.1329 1.97595 13.9088 2.04191 13.7305 2.18381C13.5473 2.32771 13.4328 2.53557 13.4079 2.76841C13.3551 3.23908 13.6947 3.66479 14.1648 3.71776C17.4064 4.07951 19.926 6.60477 20.2905 9.85654C20.3393 10.2922 20.7048 10.621 21.141 10.621C21.1739 10.621 21.2058 10.619 21.2386 10.615C21.4667 10.59 21.6699 10.4771 21.8133 10.2972C21.9557 10.1174 22.0204 9.89351 21.9945 9.66467C21.5404 5.60746 18.4003 2.45862 14.356 2.00793Z" fill="currentColor"></path></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.0317 12.9724C15.0208 16.9604 15.9258 12.3467 18.4656 14.8848C20.9143 17.3328 22.3216 17.8232 19.2192 20.9247C18.8306 21.237 16.3616 24.9943 7.6846 16.3197C-0.993478 7.644 2.76158 5.17244 3.07397 4.78395C6.18387 1.67385 6.66586 3.08938 9.11449 5.53733C11.6544 8.0765 7.04266 8.98441 11.0317 12.9724Z" fill="currentColor"></path></g></svg></div><div class="sc-1x9oq14-0 doSDez">Есть вопросы? Позвоните!<br/><a href="tel:+7 499 938-92-02"><span class="sc-1r0uxxj-3 kMVdSV">+7 499 938-92-02</span></a> <!-- -->бесплатно</div></div></div></div></div></div><div class="sc-x072mc-0 sc-1mszhjn-0 hOtCic irTCnx"><h2 class="sc-1x9oq14-0 sc-1mszhjn-1 kswXpy kPNZqQ">Частые вопросы</h2><div class="sc-tqrjzo-0 doKOqQ"><div class="sc-li015i-2 iJMWTL sc-tqrjzo-1 htYSLI" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Что, если в середине курса я не смогу продолжать обучение?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">У вас есть право одного бесплатного трансфера в другую группу</div></div></div></div><div class="sc-li015i-2 iJMWTL sc-tqrjzo-1 htYSLI" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Обязательно ли защищать выпускной проект?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.</div></div></div></div><div class="sc-li015i-2 iJMWTL sc-tqrjzo-1 htYSLI" color="#740FB4"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Я могу вернуть деньги?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.</div></div></div></div></div></div></div></main><!--$--><footer class="sc-oy98rf-0 jliiMx"><div class="sc-oy98rf-2 bLWaqJ sc-1ddwpfq-1 hnlXxp sc-oy98rf-3 fMEenG"><div class="sc-oy98rf-1 ikxHfK sc-1ddwpfq-0 hNHefG"></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 hOtCic"><!--$--><div class="sc-176eli6-0 kVOlcO"><div class="sc-176eli6-1 bIqTVy"><div class="sc-s8yol2-0 dmOCHb"><div class="sc-s8yol2-1 sc-s8yol2-2 fSkxQH jinSfn"><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/about">О нас</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/smi">СМИ о нас</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/reviews">Отзывы</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/contacts">Контакты</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/journal">Блог</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/faq">FAQ</a></div><div class="sc-s8yol2-1 sc-s8yol2-3 fSkxQH nSSml"><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/b2b">Корпоративное обучение</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/lessons">Каталог курсов</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/about/loyalty">Программы лояльности</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/professions">Каталог профессий</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/employers/all">Наши партнеры</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/teach">Стать преподавателем</a></div></div><div class="sc-15qczmr-0 MecOH"><div class="sc-15qczmr-1 dpoRMu"><a target="_blank" rel="nofollow noopener" href="https://vk.com/club145052891" src="/_next/static/images/img/footerUivk-1a499178c819de0f4161a07172b27f6b.svg" class="sc-15qczmr-2 jKMwie"></a><a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g" src="/_next/static/images/img/footerUiyt-84e5fa7c2e582191762486a7be2c2652.svg" class="sc-15qczmr-2 eFVTJV"></a><a target="_blank" rel="nofollow noopener" href="https://zen.yandex.ru/id/5bbcbc1ba5bd5400a990e7d9" src="/_next/static/images/img/footerUidzen-cfe01a671b9064c8e5d54b2ac5895a0c.png" class="sc-15qczmr-2 hUuIIY"></a></div><div class="sc-15qczmr-3 foluGF"><a target="_blank" rel="nofollow noopener" href="https://t.me/Otusjava" class="sc-15qczmr-4 hMqYlN"><div src="/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg" class="sc-15qczmr-5 kmPvgJ"></div><div class="sc-1x9oq14-0 sc-15qczmr-6 CWfAH driyCh">Канал в Telegram</div></a><a target="_blank" rel="nofollow noopener" href="https://t.me/joinchat/JMakp0NXc-L8nNneHCtx7A" class="sc-15qczmr-4 hMqYlN"><div src="/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg" class="sc-15qczmr-5 kmPvgJ"></div><div class="sc-1x9oq14-0 sc-15qczmr-6 CWfAH driyCh">Группа в Telegram</div></a></div></div><div class="sc-176eli6-2 hRGcmY"><section class="sc-des2oc-0 fYuJAI"><div class="sc-1x9oq14-0 sc-des2oc-1 bDRAny hbxrvB">Подписка на новости IT, анонсы открытых уроков, спец. предложения</div><div class="sc-des2oc-2 iHEhCu"><div class="sc-7tecya-1 igoKuA sc-des2oc-3 heMBup"><div class="sc-1uo0fn1-0 chwycb sc-7tecya-2 dUXfnG"><label class="sc-7tecya-3 ewcVbw">Введите Email</label><input placeholder="" class="sc-7tecya-4 bkPfUD" type="text" value=""/></div></div><button class="sc-1qig7zt-0 bYRRHi sc-des2oc-4 dqoHct">OK</button><div class="sc-1x9oq14-0 sc-dusc05-0 doSDez fyzNNQ sc-1x9oq14-0-Component sc-des2oc-5 fvUGfA kSlCOl"><div class="sc-1fry39v-0 eAOVcR" value="true"><div class="sc-12fwr4-0 eZuRED"><input id="f8e11255d6221de449e6ebd3" type="checkbox" class="sc-j40lj7-0 ceClWZ" checked=""/><svg class="sc-hd7keq-0 dWxMps sc-12fwr4-1 exsZZC" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.26022 12.5541C7.60716 12.2072 8.16964 12.2072 8.51658 12.5541L10.3433 14.3808L15.4311 8.31742C15.7465 7.94157 16.3068 7.89254 16.6827 8.20792C17.0585 8.52329 17.1075 9.08364 16.7921 9.45949L11.1045 16.2377C11.0816 16.2674 11.0565 16.2959 11.0293 16.3232C10.6824 16.6701 10.1199 16.6701 9.77293 16.3232L7.26022 13.8104C6.91329 13.4635 6.91329 12.901 7.26022 12.5541Z" fill="currentColor"></path></svg></div><label for="f8e11255d6221de449e6ebd3" class="sc-1fry39v-1 kMJHVN">Я принимаю условия<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/privacy" target="_blank">Политики обработки персональных данных</a> <!-- -->и<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/terms" target="_blank">Пользовательского соглашения</a> <!-- -->и даю свое<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/lead_privacy_agree" target="_blank">согласие на обработку персональных данных</a></label></div></div></div></section><div class="sc-b223p8-0 jbfvPl"><span class="sc-b223p8-1 kexDMw"><span class="sc-1x9oq14-0 sc-b223p8-2 CWfAH cpJPIb">По всем вопросам<!-- --> <!-- -->пишите на</span> <a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="mailto:help@otus.ru"> <!-- -->help@otus.ru</a></span><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/common">Сведения об образовательной организации</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/it_company_accreditation">OTUS является аккредитованной IT-компанией</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="https://reestr.digital.gov.ru/reestr/2704482/" target="_blank">В реестре отечественного ПО №24216</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/terms">Условия использования сервиса</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/recommendations">Сведения о рекомендательных технологиях</a></div></div></div><div class="sc-19c5cbt-0 kXtOIJ"><div class="sc-1x9oq14-0 eMZyoN">© 2015-2026 OTUS</div><!--$--><div class="sc-19c5cbt-1 fvpIrL"><div class="sc-1jb0vz0-0 fEJhZn"></div><a target="_blank" rel="noopener noreferrer" href="http://sk.ru/?utm_source=otus" class="sc-1jb0vz0-1 bQKtqJ"></a><a target="_blank" href="https://ktsstudio.com/?utm_source=otus" class="sc-1urziip-1 cPEbNj"><img src="/_next/static/images/img/light-3dd56d782c43dc1e78b7e0da7bb3fb50.svg" alt="KTS Logo" class="sc-ed2fvu-0 sc-1urziip-0 kmquqg fCchjz"/></a></div><!--/$--></div></div><!--/$--></div></div></footer><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><div class="smart-captcha"></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><div id="__PORTAL__"></div><noscript><div><img src="https://mc.yandex.ru/watch/44973232" style="position:absolute;left:-9999px;top:0" alt=""/></div></noscript><noscript><img src="https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv" style="position:fixed;left:-999px" alt=""/></noscript><noscript><div><img src="https://top-fwz1.mail.ru/counter?id=3316675;js=na" style="position:absolute;left:-9999px" alt="Top.Mail.Ru"/></div></noscript><script src="/_next/static/chunks/webpack-3018d93ec30a05b2.js" async=""></script><style data-styled="" data-styled-version="5.3.10"></style><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/8cc264f7ea39f5c5.css\",\"style\"]\n2:HL[\"/_next/static/css/369ab862ca923128.css\",\"style\"]\n3:HL[\"/_next/static/css/1eb8edb263c0b31d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[69521,[],\"\"]\n6:I[38895,[],\"\"]\n8:I[35725,[],\"\"]\nc:I[63988,[],\"NotFoundBoundary\"]\n17:I[27927,[],\"\"]\n7:[\"slug\",\"linux-kernel\",\"d\"]\nf:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8cc264f7ea39f5c5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\ne:[\"$\",\"link\",\"0\",\"$f\"]\n11:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/369ab862ca923128.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\n10:[\"$\",\"link\",\"1\",\"$11\"]\n13:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1eb8edb263c0b31d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\n12:[\"$\",\"link\",\"2\",\"$13\"]\nd:[\"$e\",\"$10\",\"$12\"]\n18:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"NbqG4_TtV1FbFpGan6e4s\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"lessons\",\"linux-kernel\"],\"initialTree\":[\"\",{\"structuredData\":[\"children\",{\"children\":[\"lessons\",{\"children\":[[\"slug\",\"linux-kernel\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]}],\"children\":[\"lessons\",{\"children\":[[\"slug\",\"linux-kernel\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"structuredData\":[\"children\",{\"children\":[\"lessons\",{\"children\":[[\"slug\",\"linux-kernel\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$undefined\",\"$L5\",null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\",\"lessons\",\"children\",\"$7\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\",\"lessons\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null],\"children\":[\"lessons\",{\"children\":[[\"slug\",\"linux-kernel\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$L9\",\"$La\",null],null],null]},[[null,\"$Lb\"],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"lessons\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8cc264f7ea39f5c5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/369ab862ca923128.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1eb8edb263c0b31d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$Lc\",null,{\"notFound\":[\"$d\",\"$L14\"],\"children\":\"$L15\"}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L16\"],\"globalErrorComponent\":\"$17\",\"missingSlots\":\"$W18\"}]\n"])</script><script>self.__next_f.push([1,"19:[\"slug\",\"linux-kernel\",\"d\"]\nb:[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"lessons\",\"children\",\"$19\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"16:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"is_app_seo_default\",\"content\":\"false\"}],[\"$\",\"meta\",\"6\",{\"name\":\"vk:image\",\"content\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"meta\",\"7\",{\"name\":\"fb:app_id\",\"content\":\"486413851704844\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://otus.ru/lessons/linux-kernel/\"}],[\"$\",\"meta\",\"9\",{\"name\":\"yandex-verification\",\"content\":\"3019a35aeda6b45d\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://otus.ru/lessons/linux-kernel/\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"Курс «Разработка ядра Linux»: создание, сборка и внедрение модулей ядра - обучение онлайн ОТУС\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Онлайн-курс по разработке ядра Linux: научитесь созданию драйверов, управлению памятью, процессами и потоками, работе с прерываниями в Линукс системе. Обучение подходит для embedded-разработчиков и системных инженеров. Записаться на курс «Разработка ядра Linux» на сайте ОТУС\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\n"])</script><script>self.__next_f.push([1,"1a:I[58890,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"default\"]\n1b:I[49866,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"Providers\"]\n1c:I[17776,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b."])</script><script>self.__next_f.push([1,"js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1701\",\"static/chunks/1701-caea77cd580b46da.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-9988dde0bcc22cd3.js\",\"9160\",\"static/chunks/app/not-found-6846642e53dd56ba.js\"],\"default\"]\n1d:I[27869,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"html\",null,{\"lang\":\"ru\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"charSet\":\"UTF-8\"}],[\"$\",\"meta\",null,{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"link\",null,{\"rel\":\"image_src\",\"href\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"type\":\"image/x-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif\",\"as\":\"image\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"57x57\",\"href\":\"/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"60x60\",\"href\":\"/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"72x72\",\"href\":\"/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"76x76\",\"href\":\"/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"114x114\",\"href\":\"/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"120x120\",\"href\":\"/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"144x144\",\"href\":\"/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"152x152\",\"href\":\"/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"mask-icon\",\"href\":\"/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg\",\"color\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileImage\",\"content\":\"/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png\"}],[\"$\",\"script\",null,{\"src\":\"https://vk.com/js/api/openapi.js?162\",\"type\":\"text/javascript\"}],[\"$\",\"$L1a\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"div\",null,{\"id\":\"__next\",\"children\":[\"$\",\"$L1b\",null,{\"data\":{\"headerStoreInitialData\":{\"categories\":[{\"objectType\":\"category\",\"coursesCount\":117,\"id\":1,\"imageUrl\":\"https://cdn.otus.ru/media/public/df/68/df68cab51573450db618e44501ae4c57.jpg\",\"slug\":\"programming\",\"title\":\"Программирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":17,\"id\":12,\"imageUrl\":\"https://cdn.otus.ru/media/public/69/0b/690b6d40c17c484d9130d57eb344260e.png\",\"slug\":\"architecture\",\"title\":\"Архитектура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":2,\"imageUrl\":\"https://cdn.otus.ru/media/public/4a/72/4a72106d85b8465c9d744cc0efe28a47.jpg\",\"slug\":\"data-science\",\"title\":\"Data Science\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":58,\"id\":3,\"imageUrl\":\"https://cdn.otus.ru/media/public/5d/74/5d74d97874e84236a8094f3e0246e6a8.jpg\",\"slug\":\"operations\",\"title\":\"Инфраструктура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":10,\"id\":8,\"imageUrl\":\"https://cdn.otus.ru/media/public/35/df/35dfb4a92fe140f6a1a3839fb8717f97.jpeg\",\"slug\":\"gamedev\",\"title\":\"GameDev\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":11,\"imageUrl\":\"https://cdn.otus.ru/media/public/c7/7e/c77e523bd935455ab0e0bd0c92c760b6.png\",\"slug\":\"information-security-courses\",\"title\":\"Безопасность\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":46,\"id\":5,\"imageUrl\":\"https://cdn.otus.ru/media/public/84/43/8443c0d256c04ca698665c673afc866c.jpg\",\"slug\":\"marketing-business\",\"title\":\"Управление\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":25,\"id\":9,\"imageUrl\":\"https://cdn.otus.ru/media/public/75/ae/75ae55064f7345e3aab0301a7f42c66e.png\",\"slug\":\"analytics\",\"title\":\"Аналитика и анализ\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":26,\"id\":15,\"imageUrl\":null,\"slug\":\"business-product\",\"title\":\"Бизнес и продукт в IT\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":16,\"imageUrl\":null,\"slug\":\"import-substitution\",\"title\":\"Импортозамещение\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":12,\"id\":6,\"imageUrl\":\"https://cdn.otus.ru/media/public/f2/fa/f2fa758623834ad1b320efd6cd5166b5.png\",\"slug\":\"testing\",\"title\":\"Тестирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":9,\"id\":17,\"imageUrl\":null,\"slug\":\"neural_networks\",\"title\":\"Нейросети\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":19,\"id\":13,\"imageUrl\":null,\"slug\":\"it-bez-programmirovanija\",\"title\":\"IT без программирования\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":4,\"imageUrl\":\"https://cdn.otus.ru/media/public/2f/ac/2fac7d21d6534f50b383405656782275.jpg\",\"slug\":\"corporate\",\"title\":\"Корпоративные курсы\",\"isShowOnMainPage\":true},{\"objectType\":\"specialization\",\"coursesCount\":13,\"slug\":\"spec\",\"title\":\"Специализации\",\"isShowOnMainPage\":\"$undefined\"},{\"objectType\":\"online\",\"coursesCount\":14,\"slug\":\"online\",\"title\":\"Подготовительные курсы\",\"isShowOnMainPage\":true}]},\"headChunkStoreInitialData\":{\"type\":1,\"data\":{\"html\":\"\u003cdiv class=\\\"before-header-ui\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse1\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse2\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__container\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__img before-header-ui__img_sales\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__content\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title hide-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title show-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003c/div\u003e\\r\\n \u003ca href=\\\"https://otus.ru/catalog/courses?categories=neural_networks\u0026utm_source=internal\u0026utm_medium=free\u0026utm_campaign=otus\u0026utm_term=chank\u0026utm_content=sla_sale_20-02-2026-10-04-2026\\\" rel=\\\"nofollow noreferrer noopener\\\" target=\\\"_blank\\\" class=\\\"before-header-ui__button\\\"\u003eВыбрать курс\u003c/a\u003e\\r\\n \u003c/div\u003e\\r\\n\u003c/div\u003e\",\"id\":425,\"namespace\":null,\"key\":\"before-header-ui\",\"title\":\"Скидки на курсы по нейросетям\",\"include_paths\":null,\"exclude_paths\":null}}},\"children\":[\"$undefined\",[[],[\"$\",\"$L1c\",null,{}]],[\"$\",\"$L1d\",null,{}]]}]}],[\"$\",\"div\",null,{\"id\":\"__PORTAL__\"}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://mc.yandex.ru/watch/44973232\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\",\"top\":\"0\"},\"alt\":\"\"}]}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv\",\"style\":{\"position\":\"fixed\",\"left\":\"-999px\"},\"alt\":\"\"}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://top-fwz1.mail.ru/counter?id=3316675;js=na\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\"},\"alt\":\"Top.Mail.Ru\"}]}]}]]}]]}]\n"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"1e:I[78444,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1701\",\"static/chunks/1701-caea77cd580b46da.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-9988dde0bcc22cd3.js\",\"7601\",\"static/chunks/app/error-37bbf3f7388748a0.js\"],\"default\"]\n1f:[]\n20:[]\n21:[]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"html\",null,{\"lang\":\"ru\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"charSet\":\"UTF-8\"}],[\"$\",\"meta\",null,{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"link\",null,{\"rel\":\"image_src\",\"href\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"type\":\"image/x-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif\",\"as\":\"image\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"57x57\",\"href\":\"/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"60x60\",\"href\":\"/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"72x72\",\"href\":\"/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"76x76\",\"href\":\"/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"114x114\",\"href\":\"/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"120x120\",\"href\":\"/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"144x144\",\"href\":\"/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"152x152\",\"href\":\"/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"mask-icon\",\"href\":\"/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg\",\"color\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileImage\",\"content\":\"/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png\"}],[\"$\",\"script\",null,{\"src\":\"https://vk.com/js/api/openapi.js?162\",\"type\":\"text/javascript\"}],[\"$\",\"$L1a\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"div\",null,{\"id\":\"__next\",\"children\":[\"$\",\"$L1b\",null,{\"data\":{\"headerStoreInitialData\":{\"categories\":[{\"objectType\":\"category\",\"coursesCount\":117,\"id\":1,\"imageUrl\":\"https://cdn.otus.ru/media/public/df/68/df68cab51573450db618e44501ae4c57.jpg\",\"slug\":\"programming\",\"title\":\"Программирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":17,\"id\":12,\"imageUrl\":\"https://cdn.otus.ru/media/public/69/0b/690b6d40c17c484d9130d57eb344260e.png\",\"slug\":\"architecture\",\"title\":\"Архитектура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":2,\"imageUrl\":\"https://cdn.otus.ru/media/public/4a/72/4a72106d85b8465c9d744cc0efe28a47.jpg\",\"slug\":\"data-science\",\"title\":\"Data Science\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":58,\"id\":3,\"imageUrl\":\"https://cdn.otus.ru/media/public/5d/74/5d74d97874e84236a8094f3e0246e6a8.jpg\",\"slug\":\"operations\",\"title\":\"Инфраструктура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":10,\"id\":8,\"imageUrl\":\"https://cdn.otus.ru/media/public/35/df/35dfb4a92fe140f6a1a3839fb8717f97.jpeg\",\"slug\":\"gamedev\",\"title\":\"GameDev\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":11,\"imageUrl\":\"https://cdn.otus.ru/media/public/c7/7e/c77e523bd935455ab0e0bd0c92c760b6.png\",\"slug\":\"information-security-courses\",\"title\":\"Безопасность\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":46,\"id\":5,\"imageUrl\":\"https://cdn.otus.ru/media/public/84/43/8443c0d256c04ca698665c673afc866c.jpg\",\"slug\":\"marketing-business\",\"title\":\"Управление\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":25,\"id\":9,\"imageUrl\":\"https://cdn.otus.ru/media/public/75/ae/75ae55064f7345e3aab0301a7f42c66e.png\",\"slug\":\"analytics\",\"title\":\"Аналитика и анализ\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":26,\"id\":15,\"imageUrl\":null,\"slug\":\"business-product\",\"title\":\"Бизнес и продукт в IT\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":16,\"imageUrl\":null,\"slug\":\"import-substitution\",\"title\":\"Импортозамещение\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":12,\"id\":6,\"imageUrl\":\"https://cdn.otus.ru/media/public/f2/fa/f2fa758623834ad1b320efd6cd5166b5.png\",\"slug\":\"testing\",\"title\":\"Тестирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":9,\"id\":17,\"imageUrl\":null,\"slug\":\"neural_networks\",\"title\":\"Нейросети\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":19,\"id\":13,\"imageUrl\":null,\"slug\":\"it-bez-programmirovanija\",\"title\":\"IT без программирования\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":4,\"imageUrl\":\"https://cdn.otus.ru/media/public/2f/ac/2fac7d21d6534f50b383405656782275.jpg\",\"slug\":\"corporate\",\"title\":\"Корпоративные курсы\",\"isShowOnMainPage\":true},{\"objectType\":\"specialization\",\"coursesCount\":13,\"slug\":\"spec\",\"title\":\"Специализации\",\"isShowOnMainPage\":\"$undefined\"},{\"objectType\":\"online\",\"coursesCount\":14,\"slug\":\"online\",\"title\":\"Подготовительные курсы\",\"isShowOnMainPage\":true}]},\"headChunkStoreInitialData\":{\"type\":1,\"data\":{\"html\":\"\u003cdiv class=\\\"before-header-ui\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse1\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse2\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__container\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__img before-header-ui__img_sales\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__content\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title hide-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title show-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003c/div\u003e\\r\\n \u003ca href=\\\"https://otus.ru/catalog/courses?categories=neural_networks\u0026utm_source=internal\u0026utm_medium=free\u0026utm_campaign=otus\u0026utm_term=chank\u0026utm_content=sla_sale_20-02-2026-10-04-2026\\\" rel=\\\"nofollow noreferrer noopener\\\" target=\\\"_blank\\\" class=\\\"before-header-ui__button\\\"\u003eВыбрать курс\u003c/a\u003e\\r\\n \u003c/div\u003e\\r\\n\u003c/div\u003e\",\"id\":425,\"namespace\":null,\"key\":\"before-header-ui\",\"title\":\"Скидки на курсы по нейросетям\",\"include_paths\":null,\"exclude_paths\":null}}},\"children\":[[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"structuredData\",\"segmentPath\":[\"structuredData\"],\"error\":\"$1e\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$1f\"}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$1e\",\"errorStyles\":\"$20\",\"errorScripts\":\"$21\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L1c\",null,{}],\"notFoundStyles\":\"$1f\"}],[\"$\",\"$L1d\",null,{}]]}]}],[\"$\",\"div\",null,{\"id\":\"__PORTAL__\"}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://mc.yandex.ru/watch/44973232\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\",\"top\":\"0\"},\"alt\":\"\"}]}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv\",\"style\":{\"position\":\"fixed\",\"left\":\"-999px\"},\"alt\":\"\"}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://top-fwz1.mail.ru/counter?id=3316675;js=na\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\"},\"alt\":\"Top.Mail.Ru\"}]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"22:I[20056,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"5408\",\"static/chunks/5408-7304a011593a4e7b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-9988dde0bcc22cd3.js\",\"4514\",\"static/chunks/4514-28d343fc6e2d14e0.js\",\"9697\",\"static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js\"],\"Page\"]\n23:I[18927,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chu"])</script><script>self.__next_f.push([1,"nks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"5408\",\"static/chunks/5408-7304a011593a4e7b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-9988dde0bcc22cd3.js\",\"4514\",\"static/chunks/4514-28d343fc6e2d14e0.js\",\"9697\",\"static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js\"],\"default\"]\n24:Td42,"])</script><script>self.__next_f.push([1," \u003ch2 dir=\"ltr\" role=\"presentation\"\u003eДля кого этот курс:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cspan\u003e\u0026nbsp;\u003cstrong\u003eСистемные администраторов и DevOps-инженеров\u003c/strong\u003e, которые хотят у\u003c/span\u003eлучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов.\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cstrong\u003eПрограммистов, желающих перейти в системное программирование, \u003c/strong\u003eно не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра.\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cstrong\u003eИнженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей\u003c/strong\u003e, которые сталкиваются со с\u003cspan\u003eложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации\u003c/span\u003e\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cspan\u003e\u003cstrong\u003eРазработчики на C\u003c/strong\u003e, которым нужны улубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода.\u003c/span\u003e\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cspan\u003e\u003cstrong\u003eСистемные программисты\u003c/strong\u003e, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения\u003c/span\u003e\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cspan\u003e\u003cstrong\u003eРазработчики встраиваемых (embedded) систем\u003c/strong\u003e, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением\u003c/span\u003e\u003c/li\u003e\n\u003cli dir=\"ltr\" role=\"presentation\"\u003e\u003cspan\u003e\u003cstrong\u003eСистемные администраторы с навыками программирования на C\u003c/strong\u003e, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра\u003cbr\u003e\u003c/span\u003e\u003cspan\u003e\u003c/span\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cstrong id=\"docs-internal-guid-39945b5f-7fff-91bd-51e4-8a6606fa5672\"\u003e\u003cspan\u003eНеобходимые знания:\u003c/span\u003e\u003c/strong\u003e\u003c/h3\u003e\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003eУметь работать в ОС Linux\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eБазовое знание Bash\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eБазовое знание Python\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eУверенный уровень разработки на языках программирования C\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eУмение работать и подключаться к Виртуальной машине\u003c/span\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"25:Te31,"])</script><script>self.__next_f.push([1,"\u003ch1\u003eЧто даст вам этот курс\u003c/h1\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eОсновы разработки ядра:\u003c/strong\u003e Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eСоздание и отладка модулей: \u003c/strong\u003eНавыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eРабота со структурами данных и алгоритмами:\u003c/strong\u003e Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eУправление процессами и потоками: \u003c/strong\u003eПонимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eОбработка прерываний: \u003c/strong\u003eОсвоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eУправление памятью:\u003c/strong\u003e Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\u003c/div\u003e\n\u003ch2\u003e\u003cstrong id=\"docs-internal-guid-5308d5a2-7fff-32a2-8d01-b1df53aaed7d\"\u003e\u003cspan\u003eВы научитесь\u003c/span\u003e\u003c/strong\u003e:\u003c/h2\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003eРазрабатывать и интегрировать собственные модули ядра: \u003c/span\u003e\u003cspan\u003eНапишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eВладеть алгоритмами и структурами:\u0026nbsp;\u003c/span\u003e\u003cspan\u003eПрименят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eРеализовывать синхронизацию процессов и потоков:\u0026nbsp;\u003c/span\u003e\u003cspan\u003eИспользуют различные примитивы синхронизации в собственных разработках\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eАнализировать и обрабатывать прерывания:\u0026nbsp;\u003c/span\u003e\u003cspan\u003eПонимают, как работают обработчики прерываний и смогут их отлаживать\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eУправлять памятью в ядре:\u003c/span\u003e\u003cspan\u003e Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003e\u003cspan\u003eУчаствовать в проектах на основе Linux:\u0026nbsp;\u003c/span\u003e\u003cspan\u003eПодготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.\u003c/span\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e"])</script><script>self.__next_f.push([1,"26:T8c1,"])</script><script>self.__next_f.push([1,"**Пошаговая инструкция**\n\n1) Установить заголовочные файлы ядра.\n\n2) Написать `Kbuild` и `Makefile` для сборки вашего модуля, дополнительно сделать цели `format` и `check`:\n \n Цель format должна использовать clang-format на ваших *.c файлах.\n Цель check должна запускать скрипт check.sh или check.py для проверки корректности вашей ДЗ.\n\n3) Написать исходный код модуля, прогнать его через `make format`.\n\n4) Собрать модуль и сделать его `insmod`, проверить его корректность через `make check`.\n\n___\n\n\n\u003c/br\u003e**Примечание для студентов:**\n\n1) Модуль при `insmod` должен писать в dmesg сообщение \"\u003cmodule_name\u003e: init\", где module_name имя вашего модуля, для этого используете `pr_fmt`.\n\n2) Модуль при `rmmod` должен писать в dmesg сообщение \"\u003cmodule_name\u003e: exit\", где module_name имя вашего модуля.\n\n3) В `/sys/module/\u003cmodule_name\u003e/parameters` должны быть параметры: `idx`, `ch_val`, `my_str`.\n\n4) Параметр `my_str` должен быть `read-only`. Т.е. при команде `echo \"Hello, World!\" \u003e my_str` должна произойти ошибка.\n\n5) Правильно выбирайте типы для ваших переменных, `idx` - это индекс в массиве, `ch_val` - это ВИДИМЫЙ ASCII символ, `my_str`-строка.\n\n6) Скрипт `check.sh` / `check.py` должен воспроизвести логику, которая требуется в ДЗ. \n\n7) Использовать `kmalloc`, `vmalloc` и др. аллокаторы для этого модуля запрещенно.\n\n___\n\n\n\u003c/br\u003e**Формат сдачи**\n\u003c/br\u003eссылка на GitHub репозиторий с проектом HW_02_hello_world в проекте должен быть `Makefile`, `Kbuild` и исходный код модуля."])</script><script>self.__next_f.push([1,"27:T1bcc,"])</script><script>self.__next_f.push([1,"## Требования к реализации\n\u003cbr\u003e\n\n### 1. Структура данных стека\n\n\u003cbr\u003e\n\n#### 1.1 Основная структура стека\n\u003cbr\u003eНеобходимо создать структуру для представления стека:\n\n\u003cbr\u003e\n\n```c\nstruct stack {\n struct list_head elements; /* Голова связного списка */\n int size; /* Текущее количество элементов */\n};\n```\n\n\u003cbr\u003e\n\n#### 1.2 Структура элемента стека\n\u003cbr\u003eКаждый элемент стека должен содержать:\n\n\u003cbr\u003e\n\n```c\nstruct stack_entry {\n struct list_head list; /* Узел связного списка */\n int data; /* Данные (целое число) */\n};\n```\n\n\u003cbr\u003e\n\n### 2. Операции над стеком\n\n\u003cbr\u003eРеализовать следующие функции в файле `lib/stack_ops.c`:\n\n\u003cbr\u003e\n\n| Функция | Описание | Возвращаемое значение |\n|---------|---------|----------------------|\n| `stack_init()` | Инициализация стека | void |\n| `stack_push(int value)` | Добавить элемент на вершину стека | int (0 - успех, -1 - ошибка) |\n| `stack_pop()` | Удалить и вернуть элемент с вершины | int (значение или код ошибки) |\n| `stack_peek()` | Получить значение с вершины без удаления | int (значение или код ошибки) |\n| `stack_is_empty()` | Проверить пустоту стека | int (1 - пусто, 0 - не пусто) |\n| `stack_size()` | Получить размер стека | int (количество элементов) |\n| `stack_clear()` | Очистить стек | void |\n\n\u003cbr\u003e\n\n### 3. Интерфейс sysfs\n\n\u003cbr\u003eМодуль должен создать атрибуты sysfs в папке `/sys/kernel/kernel_stack/` с следующим функционалом:\n\n\u003cbr\u003e\n\n| Атрибут | Режим | Операция | Формат |\n|---------|-------|---------|--------|\n| `push` | write | Добавить элемент | Целое число (например: `echo 42 \u003e push`) |\n| `pop` | read | Получить и удалить элемент | Целое число из стека или сообщение об ошибке |\n| `peek` | read | Получить значение вершины | Целое число из стека или сообщение об ошибке |\n| `size` | read | Получить размер стека | Текущее количество элементов |\n| `is_empty` | read | Проверить пустоту | \"1\" (пусто) или \"0\" (не пусто) |\n| `clear` | write | Очистить стек | Любое значение для запуска очистки |\n\n\u003cbr\u003e\n\n#### Указания к реализации sysfs интерфейса\n\n\u003cbr\u003eИспользуйте макросы для создания атрибутов sysfs. Все реализации атрибутов должны находиться в файле `src/sysfs.c`.\n\n\u003cbr\u003eДоступные макросы:\n- [DEVICE_ATTR_RW](https://elixir.bootlin.com/linux/v6.1.130/C/ident/DEVICE_ATTR_RW) - атрибут для чтения и записи\n- [DEVICE_ATTR_RO](https://elixir.bootlin.com/linux/v6.1.130/C/ident/DEVICE_ATTR_RO) - атрибут только для чтения\n- [DEVICE_ATTR_WO](https://elixir.bootlin.com/linux/v6.1.130/C/ident/DEVICE_ATTR_WO) - атрибут только для записи\n\n\u003cbr\u003eПримеры использования этих макросов можно найти на [Elixir Bootlin](https://elixir.bootlin.com/linux/v6.1.130/C/ident/DEVICE_ATTR_RW).\n\n\u003cbr\u003e\n\n### 4. Требования к безопасности\n\n\u003cbr\u003e\n\n- Корректно обрабатывать ошибки выделения памяти (`kmalloc`)\n- Проверять граничные условия (операции над пустым стеком)\n- Освобождать память при удалении модуля\n\n\u003cbr\u003e\n\n### 5. Обработка ошибок\n\n\u003cbr\u003eОпределить и документировать коды возврата:\n\n\u003cbr\u003e\n\n```c\n#define STACK_OK 0 /* Операция успешна */\n#define STACK_EMPTY -1 /* Стек пуст */\n#define STACK_NOMEM -2 /* Нет памяти */\n#define STACK_INVALID -3 /* Неверный параметр */\n```\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Структура проекта\n\n\u003cbr\u003e\n\n```\nkernel_stack_module/\n├── Makefile # Главный файл сборки\n├── Kbuild # Конфигурация сборки модуля\n├── src/\n│ ├── main.c # Основной код модуля\n│ └── sysfs.c # Реализация sysfs интерфейса\n├── lib/\n│ ├── stack.c # Реализация структуры данных стека\n│ ├── stack_ops.c # Реализация операций со стеком\n│ └── inc/\n│ ├── stack.h # Заголовок для функций стека\n│ └── stack_ops.h # Заголовок для операций стека (опционально)\n└── inc/\n └── kernel_stack.h # Заголовок для модуля\n```\n\n\u003cbr\u003eМодуль должен иметь название `kernel_stack.ko` при сборке.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Пример использования после загрузки модуля\n\n\u003cbr\u003e\n\n```bash\n# Загрузить модуль\nsudo insmod kernel_stack.ko\n\n# Добавить элементы\necho 10 \u003e /sys/kernel/kernel_stack/push\necho 20 \u003e /sys/kernel/kernel_stack/push\necho 30 \u003e /sys/kernel/kernel_stack/push\n\n# Проверить размер\ncat /sys/kernel/kernel_stack/size\n# Вывод: 3\n\n# Получить вершину без удаления\ncat /sys/kernel/kernel_stack/peek\n# Вывод: 30\n\n# Удалить и получить элемент\ncat /sys/kernel/kernel_stack/pop\n# Вывод: 30\n\n# Проверить новый размер\ncat /sys/kernel/kernel_stack/size\n# Вывод: 2\n\n# Проверить пустоту\ncat /sys/kernel/kernel_stack/is_empty\n# Вывод: 0\n\n# Очистить стек\necho 1 \u003e /sys/kernel/kernel_stack/clear\n\n# Выгрузить модуль\nsudo rmmod kernel_stack\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Формат сдачи\n\n\u003cbr\u003eСдавайте архив со следующей структурой:\n\n\u003cbr\u003e\n\n```\nстудент_фамилия_kernel_stack.tar.gz\n├── Makefile\n├── Kbuild\n├── src/\n│ ├── main.c\n│ └── sysfs.c\n├── lib/\n│ ├── stack.c\n│ ├── stack_ops.c\n│ └── inc/\n│ ├── stack.h\n│ └── stack_ops.h\n└── inc/\n └── kernel_stack.h\n```"])</script><script>self.__next_f.push([1,"28:T1e75,"])</script><script>self.__next_f.push([1,"## Требования к реализации\n\n\u003cbr\u003e\n\n### 1. Структура данных FIFO\n\n\u003cbr\u003e\n\n#### 1.1 Основная структура FIFO\n\n\u003cbr\u003eНеобходимо создать структуру для представления FIFO:\n\n\u003cbr\u003e\n\n```c\nstruct fifo_device {\n struct kfifo queue; /* Встроенный буфер kfifo */\n int max_size; /* Максимальный размер очереди */\n};\n```\n\n\u003cbr\u003e\n\n#### 1.2 Элемент очереди\n\u003cbr\u003eКаждый элемент FIFO содержит целое число:\n\n\u003cbr\u003e\n\n```c\nstruct fifo_entry {\n int data; /* Данные (целое число) */\n};\n```\n\n\u003cbr\u003e\n\n### 2. Операции над FIFO\n\n\u003cbr\u003e\n\nРеализовать следующие функции:\n\n\u003cbr\u003e\n\n| Функция | Описание | Возвращаемое значение |\n|---------|---------|----------------------|\n| `fifo_init(int size)` | Инициализация FIFO с заданным размером | int (0 - успех, -1 - ошибка) |\n| `fifo_enqueue(int value)` | Добавить элемент в конец очереди | int (0 - успех, -1 - ошибка) |\n| `fifo_dequeue()` | Удалить и вернуть элемент из начала очереди | int (значение или код ошибки) |\n| `fifo_peek()` | Получить значение из начала очереди без удаления | int (значение или код ошибки) |\n| `fifo_is_empty()` | Проверить пустоту очереди | int (1 - пусто, 0 - не пусто) |\n| `fifo_is_full()` | Проверить переполненность очереди | int (1 - полна, 0 - не полна) |\n| `fifo_size()` | Получить текущее количество элементов | int (количество элементов) |\n| `fifo_available()` | Получить количество свободного места | int (количество свободных ячеек) |\n| `fifo_clear()` | Очистить очередь | void |\n\n\u003cbr\u003e\n\n### 3. Интерфейс модульных параметров\n\n\u003cbr\u003eМодуль должен поддерживать операции через модульные параметры с использованием `module_param_cb`:\n\n\u003cbr\u003e\n\n| Параметр | Операция | Формат |\n|----------|---------|--------|\n| `enqueue` | Добавить элемент в очередь | Целое число (например: `echo 42 \u003e /sys/module/kernel_fifo/parameters/enqueue`) |\n| `dequeue` | Получить и удалить элемент | Целое число из очереди или сообщение об ошибке |\n| `peek` | Получить значение начала очереди | Целое число из очереди или сообщение об ошибке |\n| `size` | Получить текущий размер очереди | Текущее количество элементов |\n| `available` | Получить свободное место | Количество свободных ячеек |\n| `is_empty` | Проверить пустоту | \"1\" (пусто) или \"0\" (не пусто) |\n| `is_full` | Проверить переполненность | \"1\" (полна) или \"0\" (не полна) |\n| `clear` | Очистить очередь | Любое значение для запуска очистки |\n\n\u003cbr\u003e\n\n#### Указания к реализации module_param_cb интерфейса\n\n\u003cbr\u003eИспользуйте макрос `module_param_cb()` для создания параметров с callback-функциями.\n\n\u003cbr\u003eСтруктура callback-функции:\n\n\u003cbr\u003e\n\n```c\nstatic int param_set_enqueue(const char *val, const struct kernel_param *kp)\n{\n int value;\n if (kstrtoint(val, 10, \u0026value) != 0)\n return -EINVAL;\n /* Логика добавления элемента */\n return 0;\n}\n\nstatic int param_get_dequeue(char *buf, const struct kernel_param *kp)\n{\n int value = fifo_dequeue();\n if (value \u003c 0)\n return snprintf(buf, PAGE_SIZE, \"error: %d\\n\", value);\n return snprintf(buf, PAGE_SIZE, \"%d\\n\", value);\n}\n\nmodule_param_cb(enqueue, \u0026param_ops_charp, NULL, S_IWUSR);\nmodule_param_cb(dequeue, \u0026param_ops_charp, NULL, S_IRUSR);\n```\n\n\u003cbr\u003e\n\n### 4. Требования к безопасности\n\n\u003cbr\u003e\n\n- Корректно обрабатывать ошибки выделения памяти (`kmalloc`)\n- Проверять граничные условия (операции над пустой/полной очередью)\n- Освобождать память при удалении модуля\n- Валидировать входные данные в callback-функциях\n\n\u003cbr\u003e\n\n### 5. Обработка ошибок\n\n\u003cbr\u003eОпределить и документировать коды возврата:\n\n\u003cbr\u003e\n\n```c\n#define FIFO_OK 0 /* Операция успешна */\n#define FIFO_EMPTY -1 /* Очередь пуста */\n#define FIFO_FULL -2 /* Очередь полна */\n#define FIFO_NOMEM -3 /* Нет памяти */\n#define FIFO_INVALID -4 /* Неверный параметр */\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Структура проекта\n\n\u003cbr\u003e\n\n```\nkernel_fifo_module/\n├── Makefile # Главный файл сборки\n├── Kbuild # Конфигурация сборки модуля\n└── src/\n ├── main.c # Основной код модуля\n ├── params.c # Реализация module_param_cb интерфейса\n └── fifo_ops.c # Реализация операций с FIFO\n```\n\n\u003cbr\u003eМодуль должен иметь название `kernel_fifo.ko` при сборке.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Пример использования после загрузки модуля\n\n\u003cbr\u003e\n\n```bash\n# Загрузить модуль\nsudo insmod kernel_fifo.ko\n\n# Добавить элементы в очередь через параметры\necho 10 \u003e /sys/module/kernel_fifo/parameters/enqueue\necho 20 \u003e /sys/module/kernel_fifo/parameters/enqueue\necho 30 \u003e /sys/module/kernel_fifo/parameters/enqueue\n\n# Проверить размер очереди\ncat /sys/module/kernel_fifo/parameters/size\n# Вывод: 3\n\n# Получить элемент начала очереди без удаления\ncat /sys/module/kernel_fifo/parameters/peek\n# Вывод: 10\n\n# Удалить и получить элемент из начала очереди\ncat /sys/module/kernel_fifo/parameters/dequeue\n# Вывод: 10\n\n# Проверить новый размер\ncat /sys/module/kernel_fifo/parameters/size\n# Вывод: 2\n\n# Проверить свободное место\ncat /sys/module/kernel_fifo/parameters/available\n# Вывод: 98 (если размер буфера был инициализирован как 100)\n\n# Проверить пустоту\ncat /sys/module/kernel_fifo/parameters/is_empty\n# Вывод: 0\n\n# Проверить переполненность\ncat /sys/module/kernel_fifo/parameters/is_full\n# Вывод: 0\n\n# Очистить очередь\necho 1 \u003e /sys/module/kernel_fifo/parameters/clear\n\n# Выгрузить модуль\nsudo rmmod kernel_fifo\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Формат сдачи\n\n\u003cbr\u003eСдавайте архив со следующей структурой:\n\n\u003cbr\u003e\n\n```\nстудент_фамилия_kernel_fifo.tar.gz\n├── Makefile\n├── Kbuild\n└── src/\n ├── main.c\n ├── params.c\n └── fifo_ops.c\n```\n"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"29:T250c,"])</script><script>self.__next_f.push([1,"## Требования к реализации\n\n\u003cbr\u003e\n\n### 1. Общие параметры аллокатора\n\n\u003cbr\u003e\n\n- **Общий размер памяти**: 10 MiB (10485760 байт)\n- **Размер одного блока**: 4 KiB (4096 байт)\n- **Количество блоков**: 2560 блоков\n- **Размер bitmap**: 2560 бит (320 байт)\n- **Алгоритм поиска**: first-fit (поиск первого свободного блока)\n\n\u003cbr\u003e\n\n#### 1.1 Основная структура аллокатора\n\u003cbr\u003eНеобходимо создать структуру для представления аллокатора:\n\n\u003cbr\u003e\n\n```c\nstruct memory_allocator {\n unsigned char *bitmap; /* Bitmap для отслеживания блоков (1 бит = 1 блок) */\n void *memory_pool; /* Пул памяти для выделения */\n size_t total_blocks; /* Общее количество блоков */\n size_t block_size; /* Размер одного блока в байтах */\n spinlock_t lock; /* Спинлок для синхронизации доступа */\n};\n```\n\n\u003cbr\u003e\n\n#### 1.2 Структура дескриптора выделенной памяти\n\u003cbr\u003eКаждое выделение памяти содержит информацию о количестве блоков:\n\n\u003cbr\u003e\n\n```c\nstruct allocation_info {\n size_t start_block; /* Индекс начального блока */\n size_t num_blocks; /* Количество выделенных блоков */\n};\n```\n\n\u003cbr\u003e\n\n### 2. Операции аллокатора\n\n\u003cbr\u003eРеализовать следующие функции:\n\n\u003cbr\u003e\n\n| Функция | Описание | Возвращаемое значение |\n|---------|---------|----------------------|\n| `allocator_init()` | Инициализация аллокатора и выделение памяти | int (0 - успех, -1 - ошибка) |\n| `allocator_alloc(size_t bytes)` | Выделить блок памяти заданного размера | void* (адрес памяти или NULL при ошибке) |\n| `allocator_free(void *ptr)` | Освободить блок памяти | int (0 - успех, -1 - ошибка) |\n| `allocator_get_stats()` | Получить статистику аллокатора | struct stats_info |\n| `allocator_cleanup()` | Очистить аллокатор и освободить память | void |\n\n\u003cbr\u003e\n\n### 3. Структура статистики\n\n\u003cbr\u003e\n\n```c\nstruct stats_info {\n size_t total_blocks; /* Общее количество блоков */\n size_t free_blocks; /* Количество свободных блоков */\n size_t allocated_blocks; /* Количество выделенных блоков */\n size_t total_memory; /* Общий объем памяти в байтах */\n size_t free_memory; /* Объем свободной памяти в байтах */\n size_t allocated_memory; /* Объем выделенной памяти в байтах */\n size_t fragmentation_percent; /* Процент фрагментации */\n};\n```\n\n\u003cbr\u003e\n\n### 4. Интерфейс модульных параметров\n\n\u003cbr\u003eМодуль должен поддерживать операции через модульные параметры с использованием `module_param_cb`:\n\n\u003cbr\u003e\n\n| Параметр | Операция | Формат |\n|----------|---------|--------|\n| `alloc` | Выделить память | Размер в байтах (например: `echo 8192 \u003e /sys/module/kernel_alloc/parameters/alloc`) |\n| `free` | Освободить память | Адрес выделенной памяти в виде числа (например: `echo 0xffffc9000c000000 \u003e /sys/module/kernel_alloc/parameters/free`) |\n| `stats` | Получить статистику | Вывести статистику аллокатора в формате строки |\n| `bitmap_info` | Посмотреть состояние bitmap | Вывести информацию о распределении памяти |\n\n\u003cbr\u003e\n\n#### Указания к реализации module_param_cb интерфейса\n\n\u003cbr\u003eИспользуйте макрос `module_param_cb()` для создания параметров с callback-функциями.\n\n\u003cbr\u003e\n\n### 5. Требования к безопасности\n\n\u003cbr\u003e\n\n- Корректно обрабатывать ошибки выделения памяти\n- Проверять граничные условия (выделение большего размера чем доступно)\n- Освобождать память при удалении модуля\n- Валидировать входные данные в callback-функциях\n- Отслеживать выделенные блоки и предотвращать двойное освобождение\n\n\u003cbr\u003e\n\n### 6. Обработка ошибок\n\n\u003cbr\u003eОпределить и документировать коды возврата:\n\n\u003cbr\u003e\n\n```c\n#define ALLOC_OK 0 /* Операция успешна */\n#define ALLOC_NOMEM -1 /* Недостаточно памяти */\n#define ALLOC_INVALID -2 /* Неверный параметр */\n#define ALLOC_NOT_FOUND -3 /* Блок не найден при освобождении */\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Детали реализации Bitmap\n\n\u003cbr\u003e\n\n### Структура bitmap\n\n\u003cbr\u003eBitmap хранится как массив `unsigned char` (байтов). Каждый байт содержит 8 бит, где каждый бит представляет состояние одного блока:\n- **0** = блок свободен\n- **1** = блок занят\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Структура проекта\n\n\u003cbr\u003e\n\n```\nkernel_alloc_module/\n├── Makefile # Главный файл сборки\n├── Kbuild # Конфигурация сборки модуля\n└── src/\n ├── main.c # Основной код модуля и инициализация\n ├── params.c # Реализация module_param_cb интерфейса\n ├── allocator.c # Реализация функций аллокатора\n └── bitmap.c # Вспомогательные функции работы с bitmap\n```\n\n\u003cbr\u003e\n\nМодуль должен иметь название `kernel_alloc.ko` при сборке.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Пример использования после загрузки модуля\n\n\u003cbr\u003e\n\n```bash\n# Загрузить модуль\nsudo insmod kernel_alloc.ko\n\n# Получить текущую статистику\ncat /sys/module/kernel_alloc/parameters/stats\n# Вывод: Total: 10240 KB | Free: 10240 KB | Allocated: 0 KB | Fragmentation: 0%\n\n# Выделить 8 KiB памяти\necho 8192 \u003e /sys/module/kernel_alloc/parameters/alloc\n# Вывод в dmesg: kernel_alloc: allocated 8192 bytes at 0xffffc9000c000000\n\n# Выделить ещё 16 KiB памяти\necho 16384 \u003e /sys/module/kernel_alloc/parameters/alloc\n# Вывод в dmesg: kernel_alloc: allocated 16384 bytes at 0xffffc9000c002000\n\n# Получить обновленную статистику\ncat /sys/module/kernel_alloc/parameters/stats\n# Вывод: Total: 10240 KB | Free: 10216 KB | Allocated: 24 KB | Fragmentation: 0%\n\n# Посмотреть информацию о bitmap\ncat /sys/module/kernel_alloc/parameters/bitmap_info\n# Вывод: [XX......XX..............................] (визуализация или список занятых блоков)\n\n# Освободить память по адресу\necho 0xffffc9000c000000 \u003e /sys/module/kernel_alloc/parameters/free\n# Вывод в dmesg: kernel_alloc: freed memory at 0xffffc9000c000000\n\n# Проверить статистику после освобождения\ncat /sys/module/kernel_alloc/parameters/stats\n# Вывод: Total: 10240 KB | Free: 10232 KB | Allocated: 8 KB | Fragmentation: 0%\n\n# Выгрузить модуль\nsudo rmmod kernel_alloc\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Формат сдачи\n\n\u003cbr\u003eСдавайте архив со следующей структурой:\n\n\u003cbr\u003e\n\n```\nстудент_фамилия_kernel_alloc.tar.gz\n├── Makefile\n├── Kbuild\n└── src/\n ├── main.c\n ├── params.c\n ├── allocator.c\n └── bitmap.c\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Дополнительные требования\n\n\u003cbr\u003e\n\n### Обработка граничных случаев\n\n\u003cbr\u003e\n\n- Выделение 0 байт\n- Выделение размера больше доступной памяти\n- Освобождение недопустимого адреса\n- Выделение после того как память почти полная\n\n\u003cbr\u003e\n\n### Тестирование\n\u003cbr\u003eНапишите простой тест-сценарий, который:\n1. Выделяет несколько блоков разных размеров\n2. Проверяет статистику\n3. Освобождает блоки в различном порядке\n4. Проверяет статистику после освобождения"])</script><script>self.__next_f.push([1,"2a:T3352,"])</script><script>self.__next_f.push([1,"## Требования к реализации\n\n\u003cbr\u003e\n\n### 1. Параметры модуля\n\n\u003cbr\u003e\n\nМодуль должен принимать параметры при загрузке:\n\n\u003cbr\u003e\n\n| Параметр | Тип | Значение по умолчанию | Описание |\n|----------|------|----------------------------|----------|\n| `array_size` | uint | 1024 | Количество элементов массива и верхняя граница значений (значения генерируются в `0..array_size-1`). |\n| `num_buckets_bits` | uint | 6 | Количество бит для хэш-таблицы (размер таблицы = 2^num_buckets_bits, например 6 → 64 корзины). |\n\n\u003cbr\u003e\n\nОграничения:\n- `array_size \u003e 0`, `num_buckets_bits \u003e 0` и `num_buckets_bits \u003c= 16` (максимум 65536 корзин).\n- Рекомендуется `num_buckets_bits` от 4 до 10 (16-1024 корзины).\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n### 2. Структуры данных\n\n\u003cbr\u003e\n\n#### 2.1 Элемент хэш-таблицы\n\n\u003cbr\u003e\n\nКаждый элемент массива хранится в структуре:\n\n\u003cbr\u003e\n\n```c\nstruct hash_entry {\n struct hlist_node node; /* узел для встраивания в хэш-таблицу */\n unsigned int value; /* значение элемента */\n};\n```\n\n\u003cbr\u003e\n\n#### 2.2 Контекст модуля\n\n\u003cbr\u003e\n\nМодуль хранит глобальный контекст:\n\n\u003cbr\u003e\n\n```c\nstruct bucket_search_ctx {\n unsigned int array_size;\n unsigned int num_buckets_bits;\n\n DECLARE_HASHTABLE(htable, num_buckets_bits); /* хэш-таблица */\n \n /* Для хранения результата последнего поиска */\n int last_found;\n unsigned int last_value;\n unsigned int last_bucket;\n \n /* Для bucket_dump */\n unsigned int current_bucket_id;\n};\n```\n\n\u003cbr\u003e\n\n**Примечание:** `DECLARE_HASHTABLE(htable, bits)` создаёт хэш-таблицу с `2^bits` корзинами.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n### 3. Генерация данных и построение хэш-таблицы\n\n\u003cbr\u003e\n\nПри инициализации модуля:\n\n1. Инициализировать хэш-таблицу: `hash_init(ctx-\u003ehtable);`\n2. Сгенерировать `array_size` случайных значений в диапазоне `0..array_size-1`.\n3. Для каждого значения `val`:\n - Выделить структуру `struct hash_entry`.\n - Установить `entry-\u003evalue = val`.\n - Добавить в хэш-таблицу: `hash_add(ctx-\u003ehtable, \u0026entry-\u003enode, val);`\n\n\u003cbr\u003e\n\n**Примечание:** `hash_add()` автоматически вычисляет хэш и добавляет элемент в соответствующую корзину.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n### 4. Поиск числа\n\n\u003cbr\u003e\n\nПоиск числа `x` **обязательно** выполняется через бинарный поиск `bsearch()`:\n\n1. Проверить валидность `x` (например, если `x \u003e= array_size`, можно сразу вернуть \"не найдено\").\n2. Вычислить индекс корзины: `bucket = hash_min(x, num_buckets_bits);`\n3. Собрать все `hash_entry` из корзины `bucket` в массив указателей:\n - Пройти по цепочке `hlist` в данной корзине.\n - Посчитать количество элементов.\n - Выделить массив указателей `struct hash_entry **` нужного размера.\n - Заполнить массив указателями на элементы.\n4. Отсортировать массив указателей по полю `value` с помощью `sort()` (функция сравнения сравнивает `entry-\u003evalue`).\n5. Выполнить бинарный поиск `bsearch()` по отсортированному массиву указателей.\n6. Освободить временный массив указателей.\n\n\u003cbr\u003eРезультат поиска должен сохраняться как «последний результат» в контексте (для последующего чтения через `result`).\n\n\u003cbr\u003e**Обязательное требование:** поиск внутри корзины должен использовать `bsearch()` по массиву указателей на `hash_entry`, отсортированному по полю `value`.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Интерфейс модульных параметров (module_param_cb)\n\n\u003cbr\u003e\n\nМодуль должен поддерживать взаимодействие через `module_param_cb`.\n\n\u003cbr\u003e\n\nТребуемые параметры:\n\n\u003cbr\u003e\n\n| Параметр | Доступ | Описание | Формат |\n|--------------|--------|----------|--------|\n| `search` | write | Запустить поиск числа в хэш-таблице | `echo 123 \u003e /sys/module/kernel_hashtable_search/parameters/search` |\n| `result` | read | Получить результат последнего поиска | `cat /sys/module/kernel_hashtable_search/parameters/result` |\n| `rebuild` | write | Пересоздать хэш-таблицу (перегенерация случайных данных) | `echo 1 \u003e /sys/module/kernel_hashtable_search/parameters/rebuild` |\n| `bucket_id` | write | Установить индекс корзины для просмотра содержимого | `echo 5 \u003e /sys/module/kernel_hashtable_search/parameters/bucket_id` |\n| `bucket_dump`| read | Вывести содержимое корзины с индексом `bucket_id` | `cat /sys/module/kernel_hashtable_search/parameters/bucket_dump` |\n\n\u003cbr\u003e\n\n### 5.1 `search`\n\n\u003cbr\u003e\n\n- При записи числа `x` в параметр `search` модуль должен:\n - разобрать значение (через `kstrtouint()`);\n - выполнить поиск `x` по алгоритму из раздела 4 (с обязательным использованием `bsearch()`);\n - сохранить результат (нашли/не нашли, значение, индекс корзины) во внутреннем состоянии;\n - опционально выводить диагностическое сообщение в `dmesg`.\n\n\u003cbr\u003e\n\n### 5.2 `result`\n\n\u003cbr\u003e\n\nПри чтении параметра `result` модуль должен вернуть строку в формате, например:\n- `found=1 value=42 bucket=10`.\n\n\u003cbr\u003e\n\nКонкретный формат можно выбрать, но он должен быть:\n- однострочным,\n- человекочитаемым,\n- неизменным между запусками (для удобства проверки).\n\n\u003cbr\u003e\n\n### 5.3 `rebuild`\n\n\u003cbr\u003e\n\nПри записи любого ненулевого значения в `rebuild` модуль должен:\n\n1. Удалить все элементы из хэш-таблицы и освободить память:\n ```c\n struct hash_entry *entry;\n struct hlist_node *tmp;\n int bkt;\n hash_for_each_safe(ctx-\u003ehtable, bkt, tmp, entry, node) {\n hash_del(\u0026entry-\u003enode);\n kfree(entry);\n }\n ```\n2. Заново сгенерировать элементы и добавить их в хэш-таблицу по алгоритму из раздела 3.\n\n\u003cbr\u003eНулевое значение можно игнорировать (не перестраивать данные).\n\n\u003cbr\u003e\n\n### 5.4 `bucket_id` и `bucket_dump`\n\n\u003cbr\u003e\n\n- Параметр `bucket_id` задаёт целочисленный индекс корзины (от `0` до `2^num_buckets_bits - 1`), содержимое которой будет выводиться через `bucket_dump`.\n- При чтении `bucket_dump` модуль должен:\n 1. Пройти по всем элементам в корзине `bucket_id` с помощью `hlist_for_each_entry()`.\n 2. Собрать указатели на `hash_entry` в массив.\n 3. Отсортировать массив указателей по полю `value` с помощью `sort()`.\n 4. Вывести значения `value` в формате, например:\n\n```text\nbucket=5 len=7: 1 5 9 13 17 21 25\n```\n\n\u003cbr\u003e\n\nТребования:\n- При некорректном `bucket_id` (\u003e= `2^num_buckets_bits`) возвращать сообщение об ошибке.\n- Содержимое корзины должно выводиться **в отсортированном порядке по полю `value`**.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Требования к безопасности и корректности\n\n\u003cbr\u003e\n\n- Корректно обрабатывать ошибки выделения памяти (`kmalloc`, `kzalloc`) и освобождать уже выделенные ресурсы при ошибках и при выгрузке модуля.\n- Валидировать входные данные в callback-функциях параметров:\n - обрабатывать неверный формат числа;\n - проверять диапазоны (`x \u003c array_size`, `bucket_id \u003c 2^num_buckets_bits`).\n- Освобождать всю выделенную память при выгрузке модуля.\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Рекомендуемые коды возврата\n\n\u003cbr\u003e\n\nОпределить и документировать коды возврата (пример):\n\n\u003cbr\u003e\n\n```c\n#define BS_OK 0 /* операция успешна */\n#define BS_INVALID -EINVAL /* неверный параметр */\n#define BS_NOMEM -ENOMEM /* недостаточно памяти */\n#define BS_NOT_FOUND -ENOENT /* число не найдено */\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Структура проекта\n\n\u003cbr\u003e\n\nРекомендуемая структура директории проекта:\n\n\u003cbr\u003e\n\n```\nkernel_hashtable_search_module/\n├── Makefile\n├── Kbuild\n└── src/\n ├── main.c # init/exit, создание/уничтожение контекста\n ├── params.c # реализация module_param_cb интерфейса\n ├── build.c # генерация данных и построение хэш-таблицы\n └── search.c # функции поиска (bsearch, comparator, сбор элементов корзины)\n```\n\n\u003cbr\u003eМодуль должен иметь название `kernel_hashtable_search.ko` при сборке.\n\n\u003cbr\u003e\n\n---\n\u003cbr\u003e\n\n## Пример использования после загрузки модуля\n\n\u003cbr\u003e\n\n```bash\n# Загрузка модуля с параметрами\nsudo insmod kernel_hashtable_search.ko array_size=1000 num_buckets_bits=6\n\n# Поиск числа 42\necho 42 \u003e /sys/module/kernel_hashtable_search/parameters/search\n\n# Читаем результат\ncat /sys/module/kernel_hashtable_search/parameters/result\n# Пример вывода:\n# found=1 value=42 bucket=10\n\n# Просмотр содержимого корзины 10\necho 10 \u003e /sys/module/kernel_hashtable_search/parameters/bucket_id\ncat /sys/module/kernel_hashtable_search/parameters/bucket_dump\n# Пример вывода:\n# bucket=10 len=15: 10 42 74 106 138 170 202 234 266 298 330 362 394 426 458\n\n# Перегенерация хэш-таблицы\necho 1 \u003e /sys/module/kernel_hashtable_search/parameters/rebuild\n\n# Выгрузка модуля\nsudo rmmod kernel_hashtable_search\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Формат сдачи\n\n\u003cbr\u003e\n\nСдавайте архив со следующей структурой:\n\n```text\nстудент_фамилия_kernel_hashtable_search.tar.gz\n├── Makefile\n├── Kbuild\n└── src/\n ├── main.c\n ├── params.c\n ├── build.c\n └── search.c\n```\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## Дополнительные указания\n\n\u003cbr\u003e\n\n### Работа с хэш-таблицей ядра\n\n\u003cbr\u003e\n\nОсновные макросы и функции:\n\n```c\n#include \u003clinux/hashtable.h\u003e\n\n// Объявление хэш-таблицы (в структуре или глобально)\nDECLARE_HASHTABLE(name, bits);\n\n// Инициализация\nhash_init(hashtable);\n\n// Добавление элемента\nhash_add(hashtable, \u0026entry-\u003enode, key);\n\n// Поиск по ключу (перебор элементов в корзине)\nhash_for_each_possible(hashtable, obj, member, key) { ... }\n\n// Удаление элемента\nhash_del(\u0026entry-\u003enode);\n\n// Обход всей таблицы\nhash_for_each(hashtable, bkt, obj, member) { ... }\n\n// Безопасный обход (можно удалять)\nhash_for_each_safe(hashtable, bkt, tmp, obj, member) { ... }\n\n// Вычисление хэша для конкретной корзины\nbucket = hash_min(value, bits);\n```"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"2b:T811,"])</script><script>self.__next_f.push([1,"**Пошаговая инструкция**\n- Написать Makefile с целями make, clean, load, unload, format и check.\n- Написать модули ядра.\n- Собрать модули ядра\n- Загрузить и проверить их работоспособность\n\n\u003c/br\u003e**Примечание для студентов:**\n1) Написать модули:\n\u003c/br\u003eex_kmalloc.ko\n\u003c/br\u003eex_vmalloc.ko\n\u003c/br\u003eex_kmem_cache.ko\n\u003c/br\u003eex_mempool.ko\n\u003c/br\u003eex_get_page.ko\n\n2) При работе с памятью в ядре linux, необходимо следить за тем чтобы не было утечек, поэтому вся выделенная память должна быть освобождена.\n3) Сравнить аллокаторы требуется по нескольким критериям:\n - Максимальное количество выделенной памяти за раз\n - Время аллокации\n - Тип возвращаемой памяти (физическая или виртуальная)\n4) Каждый модуль должен перед аллокацией выводить сообщение в dmesg в формате:\n\u003c/br\u003e\"kmalloc: %d byte\\n\",\n\u003c/br\u003e\"kmalloc: SUCCSESS\\n\" или \"kmalloc: FAIL , err_msg = %s\\n\"\n\u003c/br\u003eЕсли удалось выделить, то \n\u003c/br\u003e\"kmalloc: %d byte, %d ms, type: %s\\n\"\n5) На основе полученных результатов надо сравнить все аллокаторы между собой по переменым из 3 пункта. Результаты сравнения записать в файл diff_aloc.pdf, результаты аллокаций можно прикреплять картинками сообщений из dmesg.\n\n\n\u003c/br\u003e**Формат сдачи**\n\u003c/br\u003eссылка на GitHub репозиторий с проектом HW_10_mem в проекте должен быть Makefile,(один общий или несколько) и исходные коды модулей."])</script><script>self.__next_f.push([1,"2c:Tb53,"])</script><script>self.__next_f.push([1,"**Требования 1/5 | Функционал**\n\u003c/br\u003eОбраз из нашего репозитория\n\u003c/br\u003eЯдро из нашего репозитория собранно и оптимизированно согласно ДЗ №1\n.config файл включен в репозиторий\n\u003c/br\u003eДрайвер устройства должен:\n- реализовывать операции read, write, ioctl.\n- регистрироваться в файловых системах.\n\n\u003c/br\u003e**Требования 2/5 | Уровень сложности**\n\u003c/br\u003eВыберите один из вариантов:\n \u003c/br\u003e***Light:***\n Реализация символьного устройства с базовыми операциями.\n \u003c/br\u003e***Medium:***\n Драйвер символьного устройства с персональным буфером для каждого процесса.\n \u003c/br\u003e***Hard:***\n Драйвер блочного устройства с тремя разделами по 100 MiB каждый (например, /sda0, /sda1, /sda2).\n\n\u003c/br\u003e**Дополнительно:**\n\n\u003c/br\u003eДля уровня Hard обязательно:\n - Реализация разделов через add_disk и alloc_disk.\n - Обработка запросов к разным разделам в make_request_fn.\n\n\u003c/br\u003eДля всех уровней:\n - Обработка ошибок (проверка NULL, освобождение ресурсов в exit-функциях).\n\n\u003c/br\u003e**Требования 3/5 | Сборка и загрузка**\n\u003c/br\u003eМодуль ядра должен собираться через Makefile.\n\u003c/br\u003eВ Makefile есть цели для загрузки и выгрузки модуля.\n\u003c/br\u003eПосле загрузки устройство появляется в /dev, /proc, /sys.\n\n\u003c/br\u003e**Требования 4/5 | Документация**\n\u003c/br\u003eВ README.md описать:\n- Как собрать и загрузить модуль.\n- Примеры использования read, write, ioctl.\n- Описание интерфейсов в /proc, /sys.\n\n\u003c/br\u003e**Требования 5/5 | Тестирование**\n\u003c/br\u003eПроверка работы через пользовательские приложения:\n\u003c/br\u003eЧтение/запись данных в устройство.\n\u003c/br\u003eИспользование ioctl для управления параметрами.\n\u003c/br\u003eВизуализация данных в /proc/my_device и /sys/class/my_device.\n\n\u003c/br\u003e**Форма сдачи**\n- Отдельный, публично доступный репозиторий\n- Проект создан НЕ ОДНИМ коммитом и НЕ ОДНИМ днем\n- Результат проектной работы должен соответствовать требованиям "])</script><script>self.__next_f.push([1,"2d:T9f9,"])</script><script>self.__next_f.push([1,"На уроке рассмотрятся механизмы взаимодействия ядра Linux с периферией SoC: как ядро «видит» железо через файл дерева устройств (Device Tree), и путь от описания пинов в DTS до работы готового платформенного драйвера.\r\n\r\nЧто будет рассмотрено на открытом уроке:\r\n- Роль Device Tree в современных SoC: Почему на смену «платформенным данным» (platform_data) пришло дерево устройств и как оно описывает нестандартную периферию .\r\n- Как ядро анализирует бинарный blob (.dtb), преобразует его в дерево структур struct device_node и создает экземпляры platform_device .\r\n- Как осуществляется поиск правильного драйвера. Детальный разбор поля compatible в DTS и таблицы of_match_table в драйвере .\r\n- Практический пример: Написание каркаса собственного платформенного драйвера с нуля, включая обработку полученных из DTS ресурсов и взаимодействие с аппаратурой .\r\n\r\nКакие результаты на выходе:\r\n- Понимать, как ядро Linux абстрагирует аппаратные различия SoC с помощью Device Tree.\r\n- Уметь находить связь между узлом в файле .dts и конкретным драйвером в коде ядра.\r\n- Знать структуру платформенного драйвера (struct platform_driver) и порядок действий при его написании.\r\n\r\nКому будет полезно присутствовать\r\n- Начинающим embedded-разработчикам: которые хотят понять, с чего начинать написание драйверов для новой платы.\r\n- Системным программистам: желающим систематизировать знания о подсистеме platform driver и Device Tree.\r\n- Студентам и инженерам: работающим с одноплатными компьютерами (Raspberry Pi, BeagleBone и др.)"])</script><script>self.__next_f.push([1,"2e:T8e0,"])</script><script>self.__next_f.push([1,"Связанные списки — одна из базовых структур данных в ядре Linux и важный инструмент для разработки драйверов и модулей ядра.\r\nНа занятии разберём API связанных списков в ядре Linux, посмотрим реальные примеры из кода ядра и драйверов, а также закрепим материал на практике.\r\nПокажем, где и зачем используются связанные списки, как писать с ними корректный и безопасный код, и на какие типичные ошибки стоит обращать внимание при работе с динамическими структурами данных в ядре.\r\n\r\nЧто разберём:\r\n- API связанных списков и очередей в ядре Linux\r\n- Реальные кейсы использования связанных списков в драйверах\r\n- Примеры простых модулей ядра с использованием связанных списков\r\n- Типовые ошибки при работе с динамическими структурами данных и способы их избежать\r\n\r\nПосле занятия вы сможете:\r\n- Писать код в ядре Linux с использованием связанных списков;\r\n- Понимать, в каких сценариях связанные списки — оптимальный выбор;\r\n- Уверенно работать с API связных списков и очередей ядра;\r\n- Находить и исправлять ошибки при работе с динамическими структурами данных;\r\n- Разрабатывать и отлаживать модули ядра с поддержкой связанных списков.\r\n\r\nКому будет полезно\r\n- Разработчикам, изучающим внутреннее устройство ядра Linux;\r\n- Инженерам, работающим с драйверами и модулями ядра;"])</script><script>self.__next_f.push([1,"2f:T97e,"])</script><script>self.__next_f.push([1,"Последнее моё место работы - инженер-программист в концерне \"Телематика\". Имею достаточно широкий опыт в разработке ПО для программно-аппаратных устройств, а также участие в построении архитектуры разрабатываемых систем. В этом году я решил углубить свои познания в разработке драйверов устройств для ОС \"Linux\", собственно, ради этого я и выбрал этот курс. Скажу, что нисколько не жалел потраченного времени и денег, хочу выразить признательность преподавателям-авторам этого курса. Главное его преимущество - это возможность учиться у действующих практикующих разработчиков модулей ядра, это очень ценно. Понравилась в Отусе также и гибкость расписания, возможность просмотра записей лекций при отсутствии возможности очного присутствия. Касаемо собственно курса: мог бы посоветовать при его доработке для будущих потоков добавить больше иллюстративных материалов и поработать над доступностью изложения. Касаемо результатов обучения, я не питаю никаких иллюзий относительно трудоустройства и понимаю, что в случае смены своей специальности и при переквалификации в разработчики ядра мне только предстоит освоить огромный пласт информации, набраться опыта, и т.п. Никакой курс не сможет меня обучить на супер-пупер-разработчика, все нужно постигать своим умом и трудом. Но понять направление, куда двигаться, мне удалось."])</script><script>self.__next_f.push([1,"31:{\"start\":\"#59018E\",\"stop\":\"#360061\"}\n30:{\"gradient\":\"$31\",\"secondColor\":\"#740FB4\",\"textIsBlack\":false}\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"$L22\",null,{\"hideOverlayBanner\":true,\"withTopPadding\":false,\"theme\":{\"gradient\":{\"start\":\"#59018E\",\"stop\":\"#360061\"},\"secondColor\":\"#740FB4\",\"textIsBlack\":false},\"children\":[\"$\",\"$L23\",null,{\"initialData\":{\"course\":{\"id\":553,\"slug\":\"linux-kernel\",\"title\":\"Разработка ядра Linux\",\"isSpecialization\":false,\"difficultyLevel\":null,\"partnerLink\":null,\"partnerText\":\"\",\"partnerImageUrl\":null,\"partnerHeaderText\":null,\"partnerImageAlt\":\"логотип партнера\",\"category\":{\"title\":\"Программирование\",\"slug\":\"programming\"},\"scheduleGroup\":{\"id\":3872,\"title\":\"Linux-kernel-dev-2026-04\",\"startDate\":\"2026-04-30\",\"isShowFullDate\":true,\"isShowDays\":false,\"timeFullDays\":null,\"timeFullMonth\":4,\"weekdaysStr\":\"Вт/Чт 20:00 Мск\",\"finishDate\":\"2026-11-10\",\"priceFull\":{\"fullPrice\":70000,\"discount\":0,\"discountCapped\":false},\"priceFullB2b\":{\"fullPrice\":91000,\"discount\":0,\"discountCapped\":false},\"discountValidDate\":null,\"isAssessmentEnabled\":true,\"isEnableRequest\":false,\"status\":\"ready\"},\"headerIconUrl\":null,\"headerIconInvtUrl\":null,\"employers\":[],\"gaGoalDodWithoutAssessment\":\"linux_kernel_claim_event_ok\",\"yaGoalDodWithoutAssessment\":\"linux_kernel_claim_event_ok\",\"isForChildren\":false,\"linkTg\":null,\"linkVk\":null},\"blocks\":[{\"desc\":\"\u003cdiv\u003e\u003cspan\u003eПонимание ядра Linux: от архитектуры до разработки эффективных модулей\u003c/span\u003e\u003c/div\u003e\",\"isSpecialPriceShow\":false,\"isCourseUpdateShow\":false,\"specialPriceText\":\"Специальная цена\",\"specialPriceHelpText\":\"\",\"courseUpdateText\":\"Курс переработан\",\"courseUpdateHelpText\":\"\",\"id\":11616,\"type\":\"specialization_header\"},{\"desc\":\"$24\",\"visitCardLink\":null,\"visitCardPreviewUrl\":null,\"verticalBanner\":null,\"horizontalBanner\":null,\"id\":11617,\"type\":\"SPECIALIZATION_COURSE_PRESENTATION\"},{\"title\":null,\"text\":\"$25\",\"sideText\":null,\"id\":11618,\"type\":\"SPECIALIZATION_COURSE_GOAL\"},{\"iconUrl\":null,\"title\":\"Процесс обучения\",\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cp\u003e\u003cspan\u003eОбучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.\u003c/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eВебинары проводятся 2 раза в неделю по 2 ак. часа\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003c/strong\u003e\u003cspan\u003eи\u0026nbsp;\u003c/span\u003e\u003cstrong\u003eсохраняются в записи\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003c/strong\u003e\u003cspan\u003eв личном кабинете. Вы можете посмотреть их в любое удобное для вас время.\u003c/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eВ ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.\u003c/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eПосле выполнения всех домашних заданий вы получите готовый выпускной проект.\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\",\"id\":11619,\"type\":\"SPECIALIZATION_TEACHING_PROCESS\"},{\"columns\":[{\"imageUrl\":null,\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eОптимальная нагрузка\u003cbr\u003e\u003cbr\u003e\u003c/h3\u003e\\n\u003cp\u003e\u003cspan\u003eВозможность совмещать учебу с работой\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\"},{\"imageUrl\":null,\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eПортфолио\u003cbr\u003e\u003cbr\u003e\u003c/h3\u003e\\n\u003cp\u003e\u003cspan\u003eИндивидуальная разработка итоговой проектной работы\u0026nbsp;\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\"},{\"imageUrl\":null,\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eПерспективы\u003c/h3\u003e\\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\\n\u003cp\u003e\u003cspan\u003eПолучите знания, которые помогут повысить вашу востребованность и доход\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\"}],\"id\":11620,\"type\":\"textcolumns\"},{\"title\":\"Партнеры\",\"sliderTitle\":\"Работодатели курса\",\"desc\":\"\u003cp\u003eМногие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности. Мы оказываем помощь в вопросах карьеры на протяжении всего обучения и спустя полгода после его завершения.\u003c/p\u003e\",\"advantages\":\"\u003cul\u003e\u003cli\u003e\u003cb\u003eПолучите помощь с оформлением резюме\u003c/b\u003e, портфолио и сопроводительного письма\u003c/li\u003e\u003cli\u003e\u003cb\u003eРазместите свое резюме в базе OTUS\u003c/b\u003e и сможете получать приглашения на собеседования от партнеров\u003c/li\u003e\u003cli\u003e\u003cb\u003eПройдете карьерную консультацию\u003c/b\u003e с нашим HR-специалистом\u003c/li\u003e\u003cli\u003e\u003cb\u003eПолучите рекомендации, как искать работу\u003c/b\u003e, и советы по прохождению собеседования\u003c/li\u003e\u003c/ul\u003e\",\"vacancyDesc\":null,\"id\":11621,\"type\":\"SPECIALIZATION_EMPLOYMENT\"},{\"header\":\"\u003ch5\u003eФормат обучения\u003c/h5\u003e\",\"columns\":[{\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eИнтерактивные вебинары\u003c/h3\u003e\\n\u003cp\u003e\u003cbr\u003e\u003cspan\u003e2 занятия по 2 ак.часа в неделю.\u0026nbsp;\u003c/span\u003e\u003cspan\u003eДоступ к записям и материалам остается навсегда\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\",\"imageUrl\":null},{\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eОбратная связь\u003c/h3\u003e\\n\u003cp\u003e\u003cbr\u003e\u003cspan\u003eДомашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\",\"imageUrl\":null},{\"text\":\"\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003cdiv\u003e\\n\u003ch3\u003eАктивное сообщество\u003c/h3\u003e\\n\u003cp\u003e\u003cbr\u003e\u003cspan\u003eЧат в Telegram для общения преподавателей и студентов\u003c/span\u003e\u003c/p\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\\n\u003c/div\u003e\",\"imageUrl\":null}],\"id\":11622,\"type\":\"SPECIALIZATION_EDUCATION_FORMAT\"},{\"id\":11623,\"type\":\"program\",\"program\":{\"data\":{\"id\":3543,\"title\":\"Linux-kernel-dev-2026-04\",\"duration\":130,\"modules\":[{\"id\":21394,\"number\":1,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Введение в разработку ядра Linux\",\"description\":\"В этом модуле вы рассмотрите общие сведения о ядре Linux, его сборке и установке.\",\"type\":\"common\",\"lessons\":[{\"id\":124861,\"likeDown\":0,\"likeUp\":0,\"description\":\"иметь представление о ядре;\\nпонимать разницу между работой в пространстве ядра и пространством пользователя;\\nсформировать базовые представления об архитектурах ядер операционных систем.\",\"title\":\"Начальные сведения о ядре Linux\",\"summary\":\"отличие ядра от Userspace;\\nобзор ядра Linux и его архитектуры.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124862,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать как скомпилировать ядро несколькими способами (chroot, без chroot), какие опции ядра не являются необходимыми и ими можно пренебречь;\\nзнать как оптимизировать свое ядро под себя.\",\"title\":\"Компиляция и настройка ядра. Инструменты работы с ядром\",\"summary\":\"конфигурирование ядра;\\nкомпиляция ядра; \\nустановка и тестирование нового ядра;\\nподготовка окружения.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124863,\"likeDown\":0,\"likeUp\":0,\"description\":\"иметь общее представление о том, как функционирует ядро Linux и какую роль оно играет в обеспечении работы операционной системы.\",\"title\":\"Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра // ДЗ\",\"summary\":\"структура ядра;\\nархитектура ядра;\\nосновные функции ядра.\",\"likeUser\":null,\"homeworks\":[{\"id\":47537,\"title\":\"Скомпилируйте собственную оптимизированную версию ядра на виртуальной машине\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Скомпилировать и настроить оптимизированное ядро для дальнейшей работы \",\"likeUser\":null,\"description\":\"**Пошаговая инструкция**:\\n- Установить qemu-kvm, virt-manager\\n- Скачать debian 12 из нашего репозиторя [git](https://github.com/OTUS-Linux-kernel-dev/Linux-kernel-dev/tree/main).\\n- Установить debian12 на виртуальную машину qemu-kvm.\\n- Клонировать ядро из нашего репозитория git\\n- Изменить .config файл, убрав лишние опции и добавив нужные опции для отладки. Список опций для дз будет в git репозитории\\n- Собрать .deb пакет ядра\\n- Установить .deb пакет ядра и проверить что все работает\\n\\n\u003c/br\u003e**Примечание для студентов:**\\n\u003c/br\u003eДля единообразия debian 12 и исходники ядра нужно брать из нашего git репозитория.\\n\u003c/br\u003eВиртуальную машину необходимо установить qemu-kvm, потому что инструкция как подключить kgdb (в дальнейших ДЗ) будет для этой вм.\\n\\n\u003c/br\u003e**Формат сдачи:**\\n\u003c/br\u003eссылка на git репозиторий с проектом HW_01_build_kernel, в проекте должен быть .deb собраного ядра и .config файл.\\n\\n\u003c/br\u003eЕсли возникнут вопросы,обращайтесь к студентам, преподавателям и наставникам в чат группы в Telegram. \"}]},{\"id\":124864,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21395,\"number\":2,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Модули ядра Linux\",\"description\":\"В этом модуле вы рассмотрите что такое модуль ядра; научитесь собирать, загружать и выгружать модули ядра.\",\"type\":\"common\",\"lessons\":[{\"id\":124865,\"likeDown\":0,\"likeUp\":0,\"description\":\"научиться писать код к простейшим модулям ядра;\\nзнать что такое функции __init и __exit;\\nпонимать, как модули ядра загружаются и исполняются;\\nзнать как посмотреть что модуль работает и что такое буфер сообщений ядра (dmesg).\",\"title\":\"Модуль ядра Linux. Буффер сообщений ядра (dmesg)\",\"summary\":\"что такое модули ядра Linux, как их посмотреть (lsmod);\\nспособы загрузки модулей (modprobe/insmod), способы выгрузки модулей (rmmod/modprobe);\\nкакие проблемы могут возникать при загрузке и выгрузке модулей;\\nточка входа в модуле, точка выхода;\\nкак работают функции __init и __exit.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124867,\"likeDown\":0,\"likeUp\":0,\"description\":\"написать простой модуль ядра, который выводит сообщение;\\nкомпилировать и загружать модули ядра в операционной системе;\\nанализировать и проверять работу модуля через системный лог;\\nпонять структуру и основы взаимодействия модулей ядра с ОС.\",\"title\":\"Написание модуля ядра \\\"Hello, World!\\\" // ДЗ\",\"summary\":\"принципы создания модулей ядра, методы их компиляции и загрузки;\\nструктура простого модуля с функцией приветствия;\\nвзаимодействие с системным логом для проверки работы модуля.\",\"likeUser\":null,\"homeworks\":[{\"id\":47718,\"title\":\"Написать свой \\\"Hello, World!\\\" модуль ядра с использованием параметров и callback-функций.\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Логика работы:\\nВ этом домашнем задании вам нужно вывести фразу \\\"Hello, World!\\\" необычным способом.\\nВ параметр idx нужно передать индекс символа в массиве.\\nВ параметр ch_val нужно передать ASCII-код символа, который вы хотите записать.\\nВ параметре my_str будут отображаться символы, записанные таким образом.\\n\\nЧего нужно добиться ?\\nНужно записать строку \\\"Hello, World!\\\" таким образом, для проверки корректности сделайте check.sh или check.py скрипт.\\n\\nЗачем это нужно?\\nЭтот модуль показывает, как управлять параметрами с проверкой и ограничениями.\\nОн содержит три настраиваемых параметра, которые можно задавать при загрузке модуля или через интерфейс sysfs (в зависимости от прав доступа). Главная цель — обеспечить безопасное и контролируемое взаимодействие с модулем через внешние параметры.\",\"likeUser\":null,\"description\":\"$26\"}]},{\"id\":124866,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21464,\"number\":3,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Отладка модулей ядра\",\"description\":\"В этом модуле вы познакомитесь с инструментами отладки ядра и их основными возможностями.\",\"type\":\"common\",\"lessons\":[{\"id\":124892,\"likeDown\":0,\"likeUp\":0,\"description\":\"познакомиться с инструментом отладки kgdb.\",\"title\":\"Отладка с помощью kgdb\",\"summary\":\"KGDB.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":125252,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать инструменты отладки ядра и их основные возможности.\",\"title\":\"Другие инструменты отладки\",\"summary\":\"KASAN;\\nkmemleak;\\nKprobe;\\nFtrace;\\nbpftrace.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21396,\"number\":4,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Структуры данных и алгоритмы в ядре Linux\",\"description\":\"В этом модуле вы рассмотрите базовые структуры данных и алгоритмы в ядре Linux.\",\"type\":\"common\",\"lessons\":[{\"id\":124868,\"likeDown\":0,\"likeUp\":0,\"description\":\"писать код с использованием связаных списков в ядре Linux;\\nзнать где их использовать.\",\"title\":\"Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ\",\"summary\":\"API для связанных списков в ядре;\\nпримеры использования в драйверах;\\nнесколько простых модулей ядра с использованием связанных списков.\",\"likeUser\":null,\"homeworks\":[{\"id\":47539,\"title\":\"Модуль ядра Linux со стеком на основе связных списков\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Разработать модуль ядра Linux, который реализует структуру данных стек (Stack) с использованием встроенных механизмов связных списков ядра (list.h), взаимодействие с модулем должно осуществляться через интерфейс sysfs.\\n\\nЗадание развивает навыки работы с:\\n- структурами данных в ядре Linux\\n- встроенными макросами и функциями для работы со связными списками\\n- системой управления памятью в ядре\\n- интерфейсом sysfs для взаимодействия с модулем.\",\"likeUser\":null,\"description\":\"$27\"}]},{\"id\":124869,\"likeDown\":0,\"likeUp\":0,\"description\":\"писать код с использованием очередей в ядре Linux;\\nзнать где используются очереди в коде ядра Linux.\",\"title\":\"Очереди в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ\",\"summary\":\"API для очередей в ядре;\\nпримеры использования в драйверах;\\nнесколько простых модулей ядра с использованием очередей.\",\"likeUser\":null,\"homeworks\":[{\"id\":47540,\"title\":\"Модуль ядра Linux с FIFO на основе встроенного буфера kfifo\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"разработать модуль ядра Linux, который реализует структуру данных FIFO (First In, First Out) с использованием встроенного механизма кругового буфера ядра (kfifo), взаимодействие с модулем должно осуществляться через модульные параметры (module_param_cb).\\n\\nЗадание развивает навыки работы с:\\n- встроенными структурами данных в ядре Linux\\n- механизмом kfifo для эффективной работы с очередями\\n- системой управления памятью в ядре\\n- механизмом модульных параметров с callback-функциями для взаимодействия с модулем.\",\"likeUser\":null,\"description\":\"$28\"}]},{\"id\":124871,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать как писать код с использованием битовых карт в ядре Linux;\\nзнать где используются битовые карты в коде ядра Linux.\",\"title\":\"Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ\",\"summary\":\"API для битовых карт в ядре;\\nпримеры использования в драйверах;\\nнесколько простых модулей ядра с использованием битовых карт.\",\"likeUser\":null,\"homeworks\":[{\"id\":47541,\"title\":\"Модуль ядра Linux с аллокатором памяти на основе Bitmap\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"разработать модуль ядра Linux, который реализует аллокатор памяти с использованием bitmap для отслеживания занятых и свободных блоков памяти, взаимодействие с модулем должно осуществляться через модульные параметры (module_param_cb).\\n\\nЗадание развивает навыки работы с:\\n- управлением памятью в ядре Linux\\n- структурой данных bitmap для отслеживания состояния ресурсов\\n- алгоритмами поиска свободных блоков (first-fit)\\n- механизмом модульных параметров с callback-функциями для взаимодействия с модулем\\n- синхронизацией доступа к общей памяти (mutex/spinlock)\",\"likeUser\":null,\"description\":\"$29\"}]},{\"id\":124872,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать как использовать самые базовые алгоритмы в ядре;\\nзнать где используются эти алгоритмы в ядре Linux.\",\"title\":\"Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование // ДЗ\",\"summary\":\"API базовых алгоритмов в ядре;\\nпримеры использования в драйверах.\",\"likeUser\":null,\"homeworks\":[{\"id\":47542,\"title\":\"Модуль ядра Linux «Hashtable + Binary Search»\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Разработать модуль ядра Linux, который создаёт массив случайных `uint` длиной `array_size`, где все значения лежат в диапазоне `0..array_size-1`, затем строит **хэш-таблицу** с использованием встроенного API `DEFINE_HASHTABLE` по функции `hash = value % num_buckets`, сортирует элементы `hash_entry` внутри каждой корзины по полю `value` и выполняет поиск числа через **бинарный поиск** (`bsearch()`) с использованием `module_param_cb`.\\n\\nЗадание развивает навыки работы с:\\n- Встроенной хэш-таблицей ядра Linux (`linux/hashtable.h`)\\n- Сортировкой массивов в ядре с `sort()`\\n- Бинарным поиском в ядре с `bsearch()`\\n- Организацией данных через хэширование и поиском внутри корзин\",\"likeUser\":null,\"description\":\"$2a\"}]},{\"id\":124870,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать, как использовать сетевые модули ядра Linux.\",\"title\":\"Сетевой стек в ядре Linux\",\"summary\":\"TCP Echo Server;\\nTCP Echo Client.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124873,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21397,\"number\":5,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Управление процессами и потоками\",\"description\":\"В этом модуле вы рассмотрите процессы и потоки в ядре Linux; примитивы синхронизации и их реализацию.\",\"type\":\"common\",\"lessons\":[{\"id\":124874,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать что такое процесс в Linux, что такое поток;\\nзнать в чем отличие потоков из юзерспейса от потоков в ядре;\\nприменять API для работы с процессами и потоками.\",\"title\":\"Процесс в ядре Linux. Поток в ядре Linux. API для работы с процессами и потоками\",\"summary\":\"основные концепции процессов и потоков в Linux;\\nотличие библиотечных pthread от kthread;\\nАPI для работы с процессами и потоками в ядре;\\nкоманды для управления процессами в userspace (ps, kill, nice). \",\"likeUser\":null,\"homeworks\":[]},{\"id\":124875,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать зачем нужно синхронизировать процессы/потоки в ядре Linux;\\nрешить задачу о читателях-писателях;\\nполучить базовое представление о примитивах синхронизации.\",\"title\":\"Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации \",\"summary\":\"задача о читателях-писателях;\\nнеобходимость синхронизировать читателей и писателей;\\nобщие свединия о spinlock, mutex, семафорах, rcu, seqlock, rwlock.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124876,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать устройство spinlock, mutex, semaphores в ядре Linux;\\nосвоить примитивы синхронизации ядра Linux.\",\"title\":\"Работа Spinlock, Mutex, Semaphores. Архитектурный код ядра, где реализованы эти примитивы. RCU // ДЗ\",\"summary\":\"детальный разбор Spinlock, Mutex, Semaphores, как они устроены в коде ядра;\\nrcu;\\nпримеры из реальных драйверов *(примитивов синхронизации в ядре);\\nв какой задаче какие примитивы использовать.\",\"likeUser\":null,\"homeworks\":[{\"id\":47543,\"title\":\"Написать модули ядра использующие kthread. Написать такую же программу с использованием pthread. Сравнить скорость выполнения программы в ядре и us.\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Написать модуль ядра решающий задачу \\\"Читатель-Писатель\\\" с использованием kthread и программу в us с использованием pthread;\\nсравнить их производительность\",\"likeUser\":null,\"description\":\"**Пошаговая инструкция**\\n- Написать Makefile с целями make, app_us, clean, load, unload, format и check.\\n- Написать модуль ядра использующий kthread и примитивы синхронизации, для реализации программы \\\"Читатель-Писатель\\\" \\n- Написать такую же программу с использованием pthread в us.\\n- Сравнить скорость выполнения программы (в циклах процессора) в ядре (perf record) и us (perf).\\n\\n\u003c/br\u003e**Примечание для студентов:**\\n1) инструменты perf и perf record (для сравнения скорости работы программ) взять в нашем git репозитории.\\n\\n\u003c/br\u003e**Формат сдачи**\\n\u003c/br\u003eссылка на GitHub репозиторий с проектом HW_07_kthread в проекте должен быть Makefile, исходный код модуля и us программы.\"}]},{\"id\":124877,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21398,\"number\":6,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux\",\"description\":\"В этом модуле вы рассмотрите прерывания и их обработка в ядре Linux; разновидности прерываний, разбор PF-ов; механизмы отложенного выполнения в ядре Linux.\",\"type\":\"common\",\"lessons\":[{\"id\":124878,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать реализацию прерываний в ядре Linux, IDT и дескрипторов прерываний;\\nзнать что делают обработчики прерываний в ядре.\",\"title\":\"Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux\",\"summary\":\"прерывания в Linux;\\nтаблица прерываний и ее дескрипторы;\\nобработка прерываний в коде ядра;\\nреализация обработчика прерываний.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124879,\"likeDown\":0,\"likeUp\":0,\"description\":\"разбивать обработку прерываний на верхнюю и нижнюю половины;\\nзнать механизмы отложенного выполнения существуют для использования в нижней половине.\",\"title\":\"Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue\",\"summary\":\"разделение обработчиков прерываний на верхнюю и нижнюю половины;\\nиспользование отложенных действий для обработки.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124880,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать что такое PF, когда они возникают, какие бывают.\",\"title\":\"Page Fault. Виды PF в Linux // ДЗ\",\"summary\":\"Page Fault;\\nmajor и minor PF-ы, при каких ситуациях какой срабатывает.\",\"likeUser\":null,\"homeworks\":[{\"id\":47544,\"title\":\"Написать модули ядра использующие механизмы отложенного выполнения (Softirq, Tasklets, Workqueue)\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Написать примеры работы с механизмами отложенного выполнения в ядре Linux. \",\"likeUser\":null,\"description\":\"**Пошаговая инструкция**\\n- Написать Makefile с целями make, clean, format и check.\\n- Написать исходный код модулей.\\n- Собрать модули \\n- Загрузить и проверить их работоспособность\\n\\n\u003c/br\u003e**Примечание для студентов:**\\n1) Необходимо написать модули:\\n\u003c/br\u003eex_softirq.ko\\n\u003c/br\u003eex_tasklets.ko\\n\u003c/br\u003eex_workqueue.ko\\n\\n2) Код в модуле ядра должен демонстрировать работу с соответствующими механизмами, наиболее используемое API, возможно какие-то трюки.\\n\\n3) Каждое ключевое действие должно быть напечатано в dmesg, допустим инициализация workqueue, постановка work в очередь и др.\\n\\n\u003c/br\u003e**Формат сдачи**\\n\u003c/br\u003eссылка на GitHub репозиторий с проектом HW_08_deferred exec_mech в проекте должен быть Makefile (один общий или несколько) и исходные коды модулей.\"}]},{\"id\":124881,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21399,\"number\":7,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Время в ядре Linux. Таймеры. Preemption многозадачность.\",\"description\":\"В этом модуле вы рассмотрите таймеры в ядре Linux и виды многозадачности, в частности preemption многозадачность; обобщите знания о прерываниях, таймерах, процессах и многозадачности.\",\"type\":\"common\",\"lessons\":[{\"id\":124882,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать откуда приходят прерывания по таймеру и как они обрабатываются;\\nзнать как использовать API таймеров в ядре Linux, на основе примеров из драйверов.\",\"title\":\"Как протекает время в ядре Linux. API таймеров\",\"summary\":\"прерывания от timer-а;\\nнесколько примеров модулей ядра с использованием API для таймеров в ядре;\\nпримеры использования таймеров из кода ядра.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124883,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать что такое вытесняющая многозадачность(preemption);\\nзнать какие подводные камни есть в ядре Linux связанные c preemption;\\nпонимать связи процессов и прерываний.\",\"title\":\"Что такое Preemption. Обобщаем работу с процессами и прерываниями // ДЗ\",\"summary\":\"вытесняющая многозадачность;\\nкак прерывания таймера сменяют выполняющийся процесс;\\nчто обязан сохранить процесс, чтобы вернутся к дальнейшему выполнению.\",\"likeUser\":null,\"homeworks\":[{\"id\":47545,\"title\":\"Написать модули ядра использующие API таймеров в ядре Linux.\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Написать модуль ядра с использованием с использованием \\\"timer_list\\\". \",\"likeUser\":null,\"description\":\"Пошаговая инструкция\\n- Написать Makefile с целями make, clean, load, unload, format и check.\\n- Написать исходный код модуля.\\n- Собрать модуль.\\n- Загрузить и проверить его работоспособность \\n\\n\u003c/br\u003e*Примечание для студентов:*\\n1) Необходимо написать модуль ядра, с использованием API таймеров. Каждые 30 секунд должен вызваться callback таймера, который будет выводить сообщение \\\"min=%d: Hello, timer!\\\\n\\\". После 5 минуты ничего выводить не нужно. (Используйте полезные макросы из презентации по таймерам) 2. \\n\\n\u003c/br\u003e***Опциональный блок.***\\n\u003cbr\u003eВместо фиксированного интервала в 30 секунд попробуйте использовать динамическое изменение интервала таймера.\\n\u003cbr\u003eНовый интервал должен будет задаваться через sysfs.\\n\u003cbr\u003eПример реализации можете использовать от драйвера светодиода. [gpio-ledc](https://elixir.bootlin.com/linux/v6.16/source/drivers/leds/trigger/ledtrig-timer.c)\\n\\n\u003c/br\u003e*Формат сдачи* \\n\u003c/br\u003eссылка на GitHub репозиторий с проектом HW_09_timer в проекте должен быть Makefile и исходный код модуля.\"}]},{\"id\":124884,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21400,\"number\":8,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Управление RAM памятью\",\"description\":\"В этом модуле вы рассмотрите виртуальную и физическую память; аллокаторы SLAB и SLUB в ядре; способы эффективного выделения памяти под задачу.\",\"type\":\"common\",\"lessons\":[{\"id\":124885,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать как работает управление памятью в Linux, какой аллокатор является дефолтным в ядре и как он работает;\\nзнать какие плюсы и минусы есть у SLAB и SLUB аллокаторов;\\nзнать как применять API ядра для выделения физической или виртуальной памяти. \",\"title\":\"Управление памятью в Linux. SLAB-аллокатор, SLUB-аллокатор. API для выделения памяти в ядре\",\"summary\":\"работа SLAB-аллокатора и SLUB-аллокатора в ядре Linux;\\nплюсы и минусы этих аллокаторов;\\nAPI для выделения памяти в ядре;\\nкогда что использовать.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124886,\"likeDown\":0,\"likeUp\":0,\"description\":\"отличать физическую и виртуальную память;\\nзнать предельные количества физической и виртуальной памяти;\\nзнать что такое таблицы страниц и как они устроены в ядре;\\nзнать что такое pagging и его реализация в ядре.\",\"title\":\"Отличие физической памяти от виртуальной памяти. Page Table. Реализация pagging в ядре Linux\",\"summary\":\"отличия между физической и виртуальной памятью в ядре Linux;\\nчто такое Page Table, как разрешаются адреса (вирт-\u003eфиз);\\nреализация pagging в ядре Linux.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124887,\"likeDown\":0,\"likeUp\":0,\"description\":\"знать как использовать заранее заготовленные куски памяти, когда это необходимо;\\nзнать как использовать kmem_cache и mempool, знать и как они работают в ядре.\",\"title\":\"Выделение памяти для объектов одинакового размера заранее. Kmem_cache. Mempool // ДЗ\",\"summary\":\"ситуации, когда нужно выделить много объектов одинакового размера;\\nчто такое kmem_cache и его API;\\nчто такое mempool и его API;\\nпримеры кода из драйверов.\",\"likeUser\":null,\"homeworks\":[{\"id\":47546,\"title\":\"Написать модули ядра с использованием kmem_cache и mempool. Написать модули ядра с использованием различных malloc и показать их отличия\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Написать модули ядра, использующие механизмы управления памятью (kmem_cache, mempool, kmalloc/vmalloc);\\nНаписать демонстрационные модули, сравнивающий kmalloc, vmalloc и kmem_cache, mempool, get_page.\",\"likeUser\":null,\"description\":\"$2b\"}]},{\"id\":124888,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по ДЗ.\",\"title\":\"Q\u0026A занятие по ДЗ\",\"summary\":\"типичные ошибки при выполнении ДЗ;\\nнаставники ответят на ваши вопросы.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21401,\"number\":9,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Устройства в Linux\",\"description\":\"В этом модуле вы изучите символьные и блочные устройства, виртуальные файловые системы и интерфейсы.\",\"type\":\"common\",\"lessons\":[{\"id\":124889,\"likeDown\":0,\"likeUp\":0,\"description\":\"разрабатывать драйверы символьных устройств;\\nпонимать как us взаимодействует с устройствами;\\nзнать какие утилиты использовать, чтобы провести диагностику и отладку кода для драйвера символьного устройства.\",\"title\":\"Символьные устройства\",\"summary\":\"символьные устройства в Linux;\\nAPI для написания драйвера символьного устройства;\\nутилиты для работы и отладки символьных устройств.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124890,\"likeDown\":0,\"likeUp\":0,\"description\":\"разрабатывать драйверы блочных устройств;\\nзнать, какие утилиты использовать, чтобы провести диагностику и отладку кода для драйвера блочного устройства.\",\"title\":\"Блочные устройства\",\"summary\":\"блочные устройства в Linux;\\nAPI для написания драйвера блочного устройства;\\nутилиты для работы и отладки блочных устройств.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124891,\"likeDown\":0,\"likeUp\":0,\"description\":\"разрабатывать интерфейсы драйвера для общения us с устройством через ioctl, /proc, /sys, /dev, netlink.\",\"title\":\"Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink\",\"summary\":\"общение с устройством с помощью вызова ioctl;\\nвиртуальные файловые системы /proc, /sys, /dev и API для взаимодействия с ними;\\nобщение с драйвером через сокет netlink;\\nThe Best-практики.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21402,\"number\":10,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Проектная работа\",\"description\":\"Заключительный месяц курса посвящён проектной работе. Проект – это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.\",\"type\":\"project\",\"lessons\":[{\"id\":124893,\"likeDown\":0,\"likeUp\":0,\"description\":\"выбрать и обсудить тему проектной работы;\\nспланировать работу над проектом;\\nознакомиться с регламентом работы над проектом. \",\"title\":\"Выбор темы и организация проектной работы // Проект\",\"summary\":\"правила работы над проектом и специфика проведения итоговой защиты;\\nтребования к результату проекта и итоговой документации.\",\"likeUser\":null,\"homeworks\":[{\"id\":47547,\"title\":\"Разработка и регистрация драйвера устройства\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Цель:\\nЗакрепить и продемонстрировать полученные на курсе знания, умения и навыки.\\nПодготовить портфолио для работодателя.\",\"likeUser\":null,\"description\":\"$2c\"}]},{\"id\":124894,\"likeDown\":0,\"likeUp\":0,\"description\":\"получить ответы на вопросы по проекту, ДЗ и по курсу.\",\"title\":\"Консультация по проектам и домашним заданиям\",\"summary\":\"вопросы по улучшению и оптимизации работы над проектом;\\nзатруднения при выполнении ДЗ;\\nвопросы по программе.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124895,\"likeDown\":0,\"likeUp\":0,\"description\":\"защитить проект и получить рекомендации экспертов.\",\"title\":\"Защита проектных работ\",\"summary\":\"презентация проектов перед комиссией;\\nвопросы и комментарии по проектам.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124896,\"likeDown\":0,\"likeUp\":0,\"description\":\"узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.\",\"title\":\"Подведение итогов курса\",\"summary\":\"организационные вопросы;\\nрынок вакансий по направлению;\\nстатистика курса и вопросы по курсу.\",\"likeUser\":null,\"homeworks\":[]}]}]},\"error\":null}},{\"text\":\"\u003ch2\u003eВыпускной проект\u003c/h2\u003e\\n\u003cp\u003e\u003cbr\u003eКаждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!\u003cbr\u003e\u003cbr\u003eВы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.\u003c/p\u003e\",\"imageUrl\":null,\"id\":11625,\"type\":\"SPECIALIZATION_PROJECT_WORK\"},{\"id\":11626,\"type\":\"teachers\",\"teachers\":[{\"id\":11034,\"fullName\":\"Коробейников Глеб\",\"company\":\"Astra Linux\",\"companyRole\":\"Senior-разработчик ядра Linux\",\"photoUrl\":\"https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg\",\"description\":\"4 года опыта разработчиком в ядре Linux. Работал в таких фирмах как RAIDIX, YADRO, SBERTECH. Есть несколько багрепортов и коммитов в ядро Linux. Практический опыт базируется на знании языков C, bash и знании инструментов для отладки ядерного кода таких как kmemleak, KASAN, KGDB, ftrace, eBPF. Теоретический опыт базируется на знании архитектуры amd64, архитектуры современных операционых систем в том числе Linux.\\r\\n\\r\\nОкончил ИГУ по специальности чистая математика.\",\"years\":2,\"lessonsCount\":39,\"studentsCount\":98,\"courses\":[\"Разработка ядра Linux\"],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":\"superteacher\"},{\"id\":11820,\"fullName\":\"Вячеслав Степанов\",\"company\":\"НТЦ Модуль\",\"companyRole\":\"Начальник сектора разработки embedded Linux\",\"photoUrl\":\"https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg\",\"description\":\"Мой профессиональный путь начался с должности инженера-программиста в этой же компании. На собственном опыте прошел все ступени развития: начинал с написания низкоуровневых библиотек для микроконтроллеров, а затем перешел к созданию сложных систем на Embedded Linux.\\r\\n\\r\\nИмел опыт работы с отечественными процессорами «Эльбрус», где занимался адаптацией драйверов и прикладных программ. Моим ключевым проектом стала разработка программного обеспечения для встраиваемого бортового вычислителя «NM Pilot», который сегодня используется в реальных промышленных задачах, например, в самоходных буровых установках горнорудной промышленности.\\r\\n\\r\\nМагистр МАИ по специальности \\\"Конструирование и технология электронных средств\\\".\",\"years\":1,\"lessonsCount\":14,\"studentsCount\":164,\"courses\":[\"Программист С\",\"Разработка ядра Linux\"],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":\"teacher\"}]},{\"desc\":\"\u003cp\u003eОткрытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.\u003c/p\u003e\",\"header\":\"\u003ch2\u003eБлижайшие мероприятия\u003c/h2\u003e\",\"id\":11628,\"type\":\"SPECIALIZATION_FUTURE_WEBINARS\",\"events\":[{\"date\":\"2026-04-09T17:00:00+00:00\",\"eventCourseId\":553,\"eventDesc\":\"$2d\",\"eventId\":6960,\"eventSlug\":\"linux_kernel-lesson-09-04-2026\",\"eventTitle\":\"Платформенные драйвера. Как управлять периферией систем на кристалле (SoC)\",\"eventType\":\"open_lesson\",\"id\":7036,\"isRequireAssessment\":false,\"registrationEnded\":false,\"teacher\":{\"fullName\":\"Вячеслав Степанов\",\"id\":11820,\"photoUrl\":\"https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg\",\"work\":null}},{\"date\":\"2026-04-21T17:00:00+00:00\",\"eventCourseId\":553,\"eventDesc\":\"$2e\",\"eventId\":6961,\"eventSlug\":\"linux_kernel-lesson-21-04-2026\",\"eventTitle\":\"Связанные списки в ядре Linux: от API до реального кода\",\"eventType\":\"open_lesson\",\"id\":7037,\"isRequireAssessment\":false,\"registrationEnded\":false,\"teacher\":{\"fullName\":\"Коробейников Глеб\",\"id\":11034,\"photoUrl\":\"https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg\",\"work\":null}}]},{\"desc\":null,\"header\":\"\u003ch2\u003eПрошедшие мероприятия\u003c/h2\u003e\",\"id\":11629,\"type\":\"SPECIALIZATION_PAST_WEBINARS\",\"events\":[{\"id\":6439,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-51.userapi.com/impg/OAHp3leD75B-JtmtyCHjWCiwjNw_X-urfYNfUA/CmjLYEFtfHA.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=b3e6c6e5fe52a14c7205deaef90d022a\u0026c_uniq_tag=HnB9gpGenkl1IrnCaqWkzH6-v0c3-RqI5ZzXzwL-TRc\u0026type=video_thumb\",\"eventTitle\":\"Вход в ядро: системные вызовы и граница между user space и kernel space\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456249937\",\"teacher\":{\"fullName\":\"Коробейников Глеб\",\"photoUrl\":\"https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg\"}},{\"id\":6435,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-48.userapi.com/impg/7RZVWfcc9PHBxA2jRUMhFDoS0RMwx_QacwGvZQ/FY_PD4nJ2Ps.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=68f67c5f7f03be92de5111840cd76d66\u0026c_uniq_tag=Li4DdUSb9jcxiyXIPQxji6N2QpzwOtvSWJxODWtnkzk\u0026type=video_thumb\",\"eventTitle\":\"Как ядро Linux взаимодействует с устройствами: драйверы, шины и модель устройств\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456249746\",\"teacher\":{\"fullName\":\"Вячеслав Степанов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/60/c6/60c6727c6756452bb2c3ff43faa6849d.jpg\"}},{\"id\":5516,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-31.userapi.com/impg/_bB_9mCylMePnWkK8TEmFDo_kAxH7qO8PX5tCw/i7mzFYInmzw.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=246fd8f9149d95a1c3639aad94848c10\u0026c_uniq_tag=WLyVTtQGVqU79bInsJYxhfYrUV0LlCAidX170F47J5c\u0026type=video_thumb\",\"eventTitle\":\"Что такое модуль ядра. Как его написать, собрать, запустить\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248265\",\"teacher\":{\"fullName\":\"Алексей Иванов\",\"photoUrl\":null}},{\"id\":5515,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-49.userapi.com/impg/Z8d7c6I6yWsmkz8GymAxroanthpGUDY2aBHrgA/Kj3SUwSSufA.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=5c691406834b7c8cc77db568ee3a751d\u0026c_uniq_tag=xSLyOQrvEaH73QO3shs4do4dK2bGjrgD9u7WTGSmgXw\u0026type=video_thumb\",\"eventTitle\":\"Краткое описание структуры task_struct: Погружение в ядро Linux\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248175\",\"teacher\":{\"fullName\":\"Коробейников Глеб\",\"photoUrl\":\"https://cdn.otus.ru/media/public/47/97/47979194cc7e491c8f7255af445d6d52.jpeg\"}}]},{\"id\":11630,\"type\":\"EMPLOYEE_REQUEST\"},{\"title\":\"Отзывы\",\"id\":11631,\"type\":\"SPECIALIZATION_REVIEW\",\"reviews\":[{\"id\":3455,\"dateCreated\":\"2025-11-20T13:44:42+00:00\",\"text\":\"$2f\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Алексей Гришин\",\"socials\":[]},\"name\":\"Алексей Гришин\"},{\"id\":3402,\"dateCreated\":\"2025-10-15T13:55:28+00:00\",\"text\":\"Я занимался разработкой программ на языке Си (userspace), работаю над балансировщиком трафика. Я выбрал этот курс, так как хотел расширить свои знания в области kernelspace. Курс мне в целом понравился. Обучение мне дало систематизацию знаний в области ядра linux.\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Андрей \",\"socials\":[]},\"name\":\"Андрей\"},{\"id\":3398,\"dateCreated\":\"2025-10-14T17:34:09+00:00\",\"text\":\"Курс мне понравился. Денег своих точно стоит. Уложил в моей голове базовые концепции кода ядра (контейнеры, kthread, память, ну и вообще про драйвера).\\r\\nВероятно совсем новеньким в Linux будет тяжело, т.к. если каждую тему до конца разжёвывать, то надо курс в разы по времени увеличивать (возможно стоит разбить курс на несколько).\\r\\nОтдельное спасибо за лекцию с отладкой ядра!\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/c3/79/avatar-631638-c37927.png\",\"fullName\":\"Ринат Гадельшин\",\"socials\":[]},\"name\":\"Ринат Гадельшин\"}]},{\"header\":\"\u003ch2\u003eДиплом о профессиональной переподготовке\u003c/h2\u003e\",\"desc\":\"\u003cp\u003eOTUS осуществляет лицензированную образовательную деятельность. \u003cbr /\u003eВ конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности\u003c/p\u003e\",\"sideDesc\":\"\u003ch2\u003eПосле обучения вы:\u003c/h2\u003e\\n\u003cul\u003e\\n\u003cli\u003eПолучите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)\u003c/li\u003e\\n\u003cli\u003e\u003cspan\u003eСоздадите свой проект, который поможет при прохождении собеседований\u003c/span\u003e\u003c/li\u003e\\n\u003cli\u003eПовысите свою ценность и конкурентоспособность как IT-специалист\u003c/li\u003e\\n\u003cli\u003eПолучите сертификат об окончании курса\u003c/li\u003e\\n\u003c/ul\u003e\",\"id\":11673,\"type\":\"SPECIALIZATION_CERTIFICATE\"},{\"id\":14025,\"type\":\"PRICE_INFORMATION\",\"isEnableInstallmentPercentageFeature\":true,\"installmentInfo\":{\"full\":5833.33,\"discount\":0,\"isMaxDiscount\":false,\"discountPercent\":0}},{\"id\":11675,\"type\":\"SPECIALIZATION_FAQ\",\"items\":[{\"name\":0,\"title\":\"Что, если в середине курса я не смогу продолжать обучение?\",\"description\":\"У вас есть право одного бесплатного трансфера в другую группу\"},{\"name\":1,\"title\":\"Обязательно ли защищать выпускной проект?\",\"description\":\"Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.\"},{\"name\":2,\"title\":\"Я могу вернуть деньги?\",\"description\":\"Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.\"}]}],\"theme\":\"$30\",\"button\":{\"nextAttempt\":null,\"assessmentId\":null,\"state\":\"course_assessment_required\",\"userCourseId\":null,\"courseTitle\":\"Разработка ядра Linux\",\"courseSlug\":\"linux-kernel\",\"groupId\":null,\"showFastbuyButton\":false},\"structuredData\":{\"@context\":\"http://schema.org\",\"@type\":\"Course\",\"name\":\"Разработка ядра Linux\",\"url\":\"https://otus.ru\",\"logo\":\"https://otus.ru/__new_static__/img/meta-image.png\",\"sameAs\":[\"https://vk.com/otusru\",\"https://t.me/Otusjava\"],\"description\":\"Разработка ядра Linux\",\"provider\":{\"@type\":\"Organization\",\"name\":\"OTUS\",\"sameAs\":\"https://otus.ru\"},\"image\":\"https://otus.ru/__new_static__/img/meta-image.png\",\"aggregateRating\":{\"@type\":\"AggregateRating\",\"ratingValue\":\"4.7\",\"ratingCount\":\"150\"},\"offers\":{\"@type\":\"Offer\",\"priceCurrency\":\"RUB\",\"price\":70000,\"availability\":\"https://schema.org/InStock\",\"url\":\"https://otus.ru/lessons/linux-kernel\"},\"hasCourseInstance\":{\"@type\":\"CourseInstance\",\"name\":\"Разработка ядра Linux (Онлайн)\",\"courseMode\":\"Online\",\"startDate\":\"2026-04-30\",\"endDate\":\"2026-11-10\",\"duration\":\"P6M\"}}}}]}]\n"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"5:[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\n \\\"@context\\\": \\\"http://schema.org\\\",\\n \\\"@type\\\": \\\"Course\\\",\\n \\\"name\\\": \\\"Разработка ядра Linux\\\",\\n \\\"url\\\": \\\"https://otus.ru\\\",\\n \\\"logo\\\": \\\"https://otus.ru/__new_static__/img/meta-image.png\\\",\\n \\\"sameAs\\\": [\\n \\\"https://vk.com/otusru\\\",\\n \\\"https://t.me/Otusjava\\\"\\n ],\\n \\\"description\\\": \\\"Разработка ядра Linux\\\",\\n \\\"provider\\\": {\\n \\\"@type\\\": \\\"Organization\\\",\\n \\\"name\\\": \\\"OTUS\\\",\\n \\\"sameAs\\\": \\\"https://otus.ru\\\"\\n },\\n \\\"image\\\": \\\"https://otus.ru/__new_static__/img/meta-image.png\\\",\\n \\\"aggregateRating\\\": {\\n \\\"@type\\\": \\\"AggregateRating\\\",\\n \\\"ratingValue\\\": \\\"4.7\\\",\\n \\\"ratingCount\\\": \\\"150\\\"\\n },\\n \\\"offers\\\": {\\n \\\"@type\\\": \\\"Offer\\\",\\n \\\"priceCurrency\\\": \\\"RUB\\\",\\n \\\"price\\\": 70000,\\n \\\"availability\\\": \\\"https://schema.org/InStock\\\",\\n \\\"url\\\": \\\"https://otus.ru/lessons/linux-kernel\\\"\\n },\\n \\\"hasCourseInstance\\\": {\\n \\\"@type\\\": \\\"CourseInstance\\\",\\n \\\"name\\\": \\\"Разработка ядра Linux (Онлайн)\\\",\\n \\\"courseMode\\\": \\\"Online\\\",\\n \\\"startDate\\\": \\\"2026-04-30\\\",\\n \\\"endDate\\\": \\\"2026-11-10\\\",\\n \\\"duration\\\": \\\"P6M\\\"\\n }\\n}\"}}]\n"])</script></body></html><style data-styled="" data-styled-version="5.3.10"></style>