<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">trudyniisi</journal-id><journal-title-group><journal-title xml:lang="ru">Труды НИИСИ</journal-title><trans-title-group xml:lang="en"><trans-title>SRISA Proceedings</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">2225-7349</issn><issn pub-type="epub">3033-6422</issn><publisher><publisher-name>НИЦ «КУРЧАТОВСКИЙ ИНСТИТУТ» - НИИСИ</publisher-name></publisher></journal-meta><article-meta><article-id custom-type="elpub" pub-id-type="custom">trudyniisi-20</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>ВОПРОСЫ ПРОГРАММИРОВАНИЯ</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>PROGRAMMING ISSUES</subject></subj-group></article-categories><title-group><article-title>Логические ошибки в подсистемах ввода-вывода современных операционных систем</article-title><trans-title-group xml:lang="en"><trans-title>Logical errors in the input/output subsystems of modern operating systems</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Бетелин</surname><given-names>А. Б.</given-names></name><name name-style="western" xml:lang="en"><surname>Betelin</surname><given-names>A. B.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Москва</p></bio><email xlink:type="simple">ab@niisi.msk.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Прилипко</surname><given-names>А. А.</given-names></name><name name-style="western" xml:lang="en"><surname>Prilipko</surname><given-names>A. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Москва</p></bio><email xlink:type="simple">aaprilipko@niisi.msk.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Прилипко</surname><given-names>Г. А.</given-names></name><name name-style="western" xml:lang="en"><surname>Prilipko</surname><given-names>G. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Москва</p></bio><email xlink:type="simple">prilipko@niisi.msk.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Романюк</surname><given-names>С. Г.</given-names></name><name name-style="western" xml:lang="en"><surname>Romanyuk</surname><given-names>S. G.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Москва</p></bio><email xlink:type="simple">sgrom@niisi.ras.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Самборский</surname><given-names>Д. В.</given-names></name><name name-style="western" xml:lang="en"><surname>Samborskiy</surname><given-names>D. V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Москва</p></bio><email xlink:type="simple">samborsky_d@fastmail.com</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru">ФГУ ФНЦ НИИСИ РАН<country>Россия</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2022</year></pub-date><pub-date pub-type="epub"><day>15</day><month>10</month><year>2025</year></pub-date><volume>12</volume><issue>4</issue><fpage>50</fpage><lpage>55</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Бетелин А.Б., Прилипко А.А., Прилипко Г.А., Романюк С.Г., Самборский Д.В., 2025</copyright-statement><copyright-year>2025</copyright-year><copyright-holder xml:lang="ru">Бетелин А.Б., Прилипко А.А., Прилипко Г.А., Романюк С.Г., Самборский Д.В.</copyright-holder><copyright-holder xml:lang="en">Betelin A.B., Prilipko A.A., Prilipko G.A., Romanyuk S.G., Samborskiy D.V.</copyright-holder><license license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.t-niisi.ru/jour/article/view/20">https://www.t-niisi.ru/jour/article/view/20</self-uri><abstract><p>Современные операционные системы используют уровни абстракции для описания интерфейса ввода-вывода данных. Построенные по этим принципам операционные системы обычно соответствуют стандарту POSIX, описывающему синтаксис и семантику системных вызовов. Тем не менее, применение стандартов не гарантирует согласованности программных компонент и корректности использованных алгоритмов. В данной работе описано несколько логических ошибок, типичных для сложных систем, разные части которых разрабатывались независимо. Анализ описанных ошибок дает основания утверждать, что детальное описание программных моделей систем ввода-вывода для их формальной верификации и тестирования создаваемого кода могут значительно увеличить надежность операционных систем и прикладных программ.</p></abstract><trans-abstract xml:lang="en"><p>Modern operating systems use abstraction layers to describe data input/output interfaces. Operating systems based on these principles conform to the POSIX standard, which describes syntax and semantics of system calls. However, use of standards alone does not guarantee the consistency of used software components and correctness of designed algorithms. This article describes several logical errors which are typical for complex systems, different parts of which were developed independently of each other. An analysis of the described errors allows us to state that definition of the detailed models for software components and their subsequent formal verification and application for code testing can significantly improve robustness of the created operating systems and applications.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>файловая система</kwd><kwd>RAID-массив</kwd><kwd>логическая ошибка</kwd><kwd>формальная верификация</kwd><kwd>тестирование</kwd></kwd-group><kwd-group xml:lang="en"><kwd>file system</kwd><kwd>RAID array</kwd><kwd>logical error</kwd><kwd>formal verification</kwd><kwd>testing</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Стандарт POSIX.1-2017. The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017.</mixed-citation><mixed-citation xml:lang="en">Стандарт POSIX.1-2017. The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Gregg, Brendan. Linux Systems Performance. Portland, OR: USENIX Association, 2019.</mixed-citation><mixed-citation xml:lang="en">Gregg, Brendan. Linux Systems Performance. Portland, OR: USENIX Association, 2019.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "A journal for MD/RAID5", https://lwn.net/Articles/665299</mixed-citation><mixed-citation xml:lang="en">Сайт "A journal for MD/RAID5", https://lwn.net/Articles/665299</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "Partial Parity Log for MD RAID 5", https://lwn.net/Articles/715280</mixed-citation><mixed-citation xml:lang="en">Сайт "Partial Parity Log for MD RAID 5", https://lwn.net/Articles/715280</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">J. Gray, et al. The transaction concept: Virtues and limitations, VLDB. – 1981. – Т. 81. – С. 144-154.</mixed-citation><mixed-citation xml:lang="en">J. Gray, et al. The transaction concept: Virtues and limitations, VLDB. – 1981. – Т. 81. – С. 144-154.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "Add 'failfast' support for raid1/raid10", https://lwn.net/Articles/706865</mixed-citation><mixed-citation xml:lang="en">Сайт "Add 'failfast' support for raid1/raid10", https://lwn.net/Articles/706865</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "Timeout Mismatch", https://raid.wiki.kernel.org/index.php/Timeout_Mismatch</mixed-citation><mixed-citation xml:lang="en">Сайт "Timeout Mismatch", https://raid.wiki.kernel.org/index.php/Timeout_Mismatch</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "Many (long) HDD default timeouts cause data loss or corruption (silent controller resets)", https://www.smartmontools.org/ticket/658</mixed-citation><mixed-citation xml:lang="en">Сайт "Many (long) HDD default timeouts cause data loss or corruption (silent controller resets)", https://www.smartmontools.org/ticket/658</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт "PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS", https://lwn.net/Articles/752093</mixed-citation><mixed-citation xml:lang="en">Сайт "PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS", https://lwn.net/Articles/752093</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Сайт «Руководство PostgreSQL. Часть III. Администрирование сервера. Глава 29. Надёжность и журнал предзаписи», https://postgrespro.ru/docs/postgresql/13/wal-reliability</mixed-citation><mixed-citation xml:lang="en">Сайт «Руководство PostgreSQL. Часть III. Администрирование сервера. Глава 29. Надёжность и журнал предзаписи», https://postgrespro.ru/docs/postgresql/13/wal-reliability</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Klein, Gerwin, June Andronick, Kevin Elphinstone, Toby Murray, Thomas Sewell, Rafal Kolanski, and Gernot Heiser. Comprehensive formal verification of an OS microkernel. ACM Transactions on Computer Systems (TOCS) 32, no. 1 (2014): 1-70.</mixed-citation><mixed-citation xml:lang="en">Klein, Gerwin, June Andronick, Kevin Elphinstone, Toby Murray, Thomas Sewell, Rafal Kolanski, and Gernot Heiser. Comprehensive formal verification of an OS microkernel. ACM Transactions on Computer Systems (TOCS) 32, no. 1 (2014): 1-70.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
