Preview

Труды Института системного программирования РАН

Расширенный поиск

Анализ типовых ошибок в драйверах операционной системы Linux

Аннотация

Быстрый темп развития ядра и драйверов операционной системы Linux, разрабатываемых большим распределенным сообществом программистов, привел к тому, что на сегодняшний день не существует единой базы правил, которые полностью описывают корректное взаимодействие драйверов и ядра. Это является препятствием, с одной стороны, для тех программистов, которые не обладают экспертными знаниями во всех особенностях данного взаимодействия; с другой стороны, для разработки и применения инструментов, которые могли бы находить соответствующие типовые ошибки автоматизированным образом. В данной статье предлагается методика выявления и классификации типовых ошибок и соответствующих им правил на основе изменений, вносимых в драйверы операционной системы Linux. В статье приводятся результаты применения данной методики, обсуждаются полученная классификация и распределение типовых ошибок по классам.

Об авторах

В. С. Мутилин
ИСП РАН
Россия


Е. М. Новиков
ИСП РАН
Россия


А. В. Хорошилов
ИСП РАН
Россия


Список литературы

1. J. Corbet, G. Kroah-Hartman, A. McPherson. Linux kernel development. How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It. http://go.linuxfoundation.org/who-writes-linux-2012, 2012.

2. T. Leemhuis. What's new in Linux 3.3. http://www.h-online.com/open/features/What-s-new-in-Linux-3-3-1466872.html, 2012.

3. Сайт оригинального ядра ОС Linux. http://www.kernel.org.

4. J. Corbet. How to Participate in the Linux Community. A Guide To The Kernel Development Process. http://www.linuxfoundation.org/sites/main/files/How-Participate-Linux-Community_0.pdf, 2008.

5. S. M. Kerner. The Red Hat Enterprise Linux 6 Kernel: What Is It? http://www.serverwatch.com/news/article.php/3880131/The-Red-Hat-Enterprise-Linux-6-Kernel-What-Is-It.htm, 2010.

6. Ядро дистрибутива openSUSE. http://en.opensuse.org/Kernel.

7. Ядро дистрибутива Debian. http://wiki.debian.org/DebianKernel.

8. ОС Linux реального времени. https://www.osadl.org/Realtime-Linux.projects-realtime-linux.0.html.

9. ОС Android. http://developer.android.com/guide/basics/what-is-android.html.

10. A. Chou, J. Yang, B. Chelf, S. Hallem, and DR Engler. An Empirical Study of Operating System Errors. Proc. 18th ACM Symp. Operating System Principles, 2001.

11. M. Swift, B. Bershad, H. Levy. Improving the reliability of commodity operating systems. In: SOSP ’03: Proceedings of the nineteenth ACM symposium on Operating systems principles, 2003.

12. A. Ganapathi, V. Ganapathi, D. Patterson. Windows XP kernel crash analysis. Proceedings of the 2006 Large Installation System Administration Conference, 2006.

13. N. Palix, G. Thomas, S. Saha, C. Calves, J. Lawall, and Gilles Muller. Faults in linux: ten years later. Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems (ASPLOS '11), USA, 2011.

14. S. Butt, V. Ganapathy, M.M. Swift, C.-C. Chang. Protecting Commodity Operating System Kernels from Vulnerable Device Drivers. Computer Security Applications Conference (ACSAC '09), 2009.

15. D. Tian, X. Xiong, C. Hu, P. Liu. Policy-centric protection of OS kernel from vulnerable loadable kernel modules. Proceedings of the 7th international conference on Information security practice and experience, 2011.

16. E.S. Raymond. The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O’Reilly, Sebastopol, CA, USA, 2001.

17. R.L. Glass. Facts and Fallacies of Software Engineering. AddisonWesley, Professional, Sebastopol, CA, USA, 2003.

18. ISO/IEC TR 24772. Information Technology — Programming Languages — Guidance to Avoiding Vulnerabilities in Programming Languages through Language Selection and Use, 2010.

19. G. Kroah-Hartman. The Linux kernel driver interface. http://www.kernel.org/doc/Documentation/stable_api_nonsense.txt.

20. Документация ядра ОС Linux. http://kernel.org/doc/Documentation.

21. A. Rubini. Linux Device Drivers (Nutshell Handbooks). O'Reilly Media, 1st edition, February 24, 1998.

22. M. Beck, H. Bohme, M. Dziadzka, U. Kunitz, R. Magnus, D. Verworner. Linux Kernel Internals. Addison-Wesley Professional, 2 edition, December 16, 1997.

23. Список рассылки ядра ОС Linux. https://lkml.org.

24. Проиндексированный исходный код ядра ОС Linux различных версий. http://lxr.linux.no.

25. R. Russell. Unreliable Guide To Hacking The Linux Kernel. http://www.kernel.org/doc/htmldocs/kernel-hacking.html, 2005.

26. Репозиторий стабильных версий ядра ОС Linux. http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary.

27. M. K. Saad. Browsing Linux Kernel. Linux Day, May 6, 2007.

28. G. Kroah-Hartman. Kernel development statistics for 2.6.35. http://lwn.net/Articles/395961, 2010.

29. Результаты анализа изменений в драйверах ОС Linux. http://linuxtesting.org/downloads/ldv-commits-analysis-2012.zip.

30. D. Engler, D. Y. Chen, S. Hallem, A. Chou, and B. Chelf. Bugs as deviant behavior: a general approach to inferring errors in systems code. ACM SIGOPS Operating Systems Review, v.35 n.5, December, 2001.

31. Z. Li and Y. Zhou. PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code. ACM SIGSOFT Software Engineering Notes, v.30 n.5, September, 2005.


Рецензия

Для цитирования:


Мутилин В.С., Новиков Е.М., Хорошилов А.В. Анализ типовых ошибок в драйверах операционной системы Linux. Труды Института системного программирования РАН. 2012;22.

For citation:


Mutilin V.S., Novikov E.M., Khoroshilov A.V. Analysis of typical faults in Linux operating system drivers. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2012;22. (In Russ.)



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)