Учебная дисциплина
Литература
Краткая история ОС Unix
Краткая история ОС Unix
Стандарты ANSI и POSIX
О свободном программном обеспечении и GPL
Проект GNU
Появление ОС Linux
Дистрибутивы Linux
Linux и стандарты
Генеалогическое дерево UNIX
Причины широкого распространения ОС Unix
Основные понятия операционных систем
Пользователи и группы
Процессы
Двухуровневая архитектура ОС Unix
Обобщенная архитектура ядра ОС Unix
Модель процесс/ядро
Архитектура ОС Linux
Архитектура ОС Linux
Архитектура ядра ОС Linux
840.00K
Categories: programmingprogramming softwaresoftware

Системное программирование в ОС Linux

1. Учебная дисциплина

Системное программирование в
ОС Linux

2. Литература

1) Родригес К. З., Фишер Г., Смолски С. Linux. Азбука ядра. М.: КУДИЦПресс, 2007. 584 с.
2) Бовет М., Чезати М. Ядро Linux, 3-е изд. Пер с англ. СПб.
БХВ-Петербург, 2007. 1104 с.: ил.
3) Лав Р. Linux. Системное программирование. СПб: Питер, 2008. 416 с.
4) Рочкинд М. Программирование для UNIX. 2-е изд. Перераб и доп. –
Пер. с англ. М.: Издательско-торговый дом «Русская редакция», 2005.
704 с.: ил.
5) Робачевский А.М. Операционная система Unix. СПб.: БХВ-Петербург,
2002. 528 с.: ил.
6) Митчел М., Оулдем Д., Самьюел А. Программирование для Linux.
Профессиональный подход : Пер. с англ. М.: Издательский дом «Вильямс»,
2003. 288 с.: ил.
7) Чан Т. Системное программирование на С++ для Unix: Пер с анг. К.:
Издательская группа BHV, 1997 . 592 c.

3. Краткая история ОС Unix

1965 Bell Telephone Laboratories (подразделение AT&T) совместно с General
Electric Company и Массачусетсским технологическим институтом
(MIT) начали разрабатывать новую ОС MULTICS (MULTiplexed
Information and Computing Service)
1969 Кен Томпсон (Ken Tompson), Деннис Ритчи (Dennis Ritchie) и Брайан
Керниган (Brian Kernighan), используя идеи и разработки MULTICS,
создали небольшую ОС, включавшую файловую систему, подсистему
управления процессами и небольшой набор утилит. Система
получила название UNIX (UNIplexed Information and Computing
System), была написана на ассемблере и применялась на компьютере
DEC PDP-7. Системное время все реализации UNIX отсчитывают
с 1 января 1970 года
1973 Создание Керниганом и Ритчи языка C, выход редакции UNIX,
полностью переписанной на C
1974 Распространение UNIX среди университетов
1975 Университет Беркли (Berkley) начинает разработку BSD Unix, в это
же время AT&T обозначает новые версии UNIX как System I, System
II, System III, System IV

4. Краткая история ОС Unix

1980 Начало процесса стандартизации UNIX
1983 Внедрение в UNIX сетевых технологий, раскол в UNIX, разработка
AT&T System V Release 1 и BSD Unix 4.2 (4BSD)
1985 Создан стандарт POSIX (Portable Operating System Interface for
Computing Environment)
1988 Выход AT&T System V Release 4 или SVR4, некоторое преодоление
раскола, выход POSIX 1003.1-1988, который определил программный
интерфейс приложений (Application Programming Interface, API),
начало «войн UNIX»
1989 Американским национальным институтом стандартов (American
National Standards Institute, ANSI) был утвержден стандарт языка
программирования С (ANSI C).
1990 Несколько основных производителей Unix объединились вокруг
промышленного консорциума Open Group
1991 Создание Linux
1994 Open Group выпустила единую спецификацию Unix — Single UNIX
Specification (SUS)
2001 Фактическое слияние POSIX и SUS

5. Стандарты ANSI и POSIX

6. О свободном программном обеспечении и GPL

В 1983 г. Ричард Столлман (Richard Stallman) из MIT
основал Фонд свободного программного обеспечения (Free
Software Foundation — FSF). Целью FSF стало поощрение
разработки и использования ПО без ограничений на
свободное распространение.
В 1989 г. с целью продвижения своей идеи Ричард
Столлман создал т.н. общедоступную лицензию (General
Public License — GPL):
1. Каждый получатель ПО, подпадающего под условия GPL, имеет
право получить исходный код этого ПО без дополнительной платы
(исключая плату за доставку).
2. Любое ПО, производное от ПО, подпадающего под условия GPL,
должно сохранить GPL в качестве лицензии для свободного
распространения.
3. Любой владелец ПО, подпадающего под условия GPL, имеет право
распространения этого ПО на условиях, не конфликтующих с GPL.

7. Проект GNU

Основным проектом участников FSF является проект GNU's Not Unix
(GNU), цель которого — создание свободно распространяемой Unixподобной операционной системы.
Результатом проекта GNU стало несколько основных пакетов и
множество второстепенных. Основные пакеты включают редактор Emacs,
библиотеку GNU С, коллекцию компиляторов GNU (gcc, как изначально
назывался компилятор GNU С перед добавлением C++), оболочку bash и
gawk (GNU's awk). Второстепенные пакеты включают высококачественные
утилиты оболочек и программы обработки текста, которые обычно
присутствуют в системе Unix.

8. Появление ОС Linux

В 1991 году студент Хельсинкского университета
Линус Торвальдс (Linus Torvalds) начал проект
собственной ОС, совместимой с UNIX. Реализовав первую
версию ядра Linux в Internet под довольно
ограничивающей лицензией, вскоре он, однако, сменил эту
лицензию на GPL.
Сочетание GPL и первоначального набора функций ядра Linux убедило
других разработчиков предложить свою помощь при разработке ядра.
Реализация библиотеки С, производная от проекта библиотеки GNU С,
позволила разработчикам создавать "родные" пользовательские приложения.
Проект Linux с самого начала был тесно связан с проектом GNU.
Исходная база проекта GNU стала очень важным ресурсом сообщества Linux
для создания завершенной системы.
По мере развития Linux некоторые лица, а позже и компании,
сосредоточились на облегчении инсталляции и практичности систем Linux для
новых пользователей, создав пакеты ядра Linux, называемые
дистрибутивами, а также логически полный набор утилит. Все это
образовало завершенную операционную систему.

9. Дистрибутивы Linux

Кроме ядра Linux, дистрибутив Linux содержит:
- библиотеки разработки, компиляторы, интерпретаторы;
- командные оболочки;
- пакеты приложений, утилиты;
- графические операционные среды;
- конфигурационные инструменты.
Большинство дистрибутивов также содержат пользовательские
компоненты, облегчающие инсталляцию и эксплуатацию системы Linux.
Все дистрибутивы Linux используют один и тот же код для системных
служб, двоичный и исходный код во всех дистрибутивах совместимы.
Наиболее известные дистрибутивы Linux:
- RedHat (Fedora Core);
- Ubuntu;
- Debian;
- SuSe;
- CentOS;
- Mandriva.

10. Linux и стандарты

Изначально Linux разрабатывался в соответствии с POSIX; там, где не
было POSIX, Linux следовала практике System V, за исключением
организации сетей, где и системные вызовы, и организация сетей
придерживались намного более популярной модели BSD.
В настоящее время, когда существует объединенный стандарт
SUS/POSIX, дальнейшее развитие обычно совместимо с более новым
стандартом POSIX, а прошлые отклонения от него по возможности
откорректированы (начиная с ядра 2.6).
Текущая версия ядра Linux – 3.17 (5 октября 2014 г.)

11. Генеалогическое дерево UNIX

12. Причины широкого распространения ОС Unix

1. Ясность и переносимость, поскольку код системы написан на языке С
2. Модифицируемость, т.к. код изначально распространялся в исходных
текстах
3. Модульность.
4. Многозадачность. UNIX — многозадачная многопользовательская
система с широким спектром услуг
5. Стандартизация. Основой всего семейства являются принципиально
одинаковая архитектура и ряд стандартных интерфейсов.
6. Универсальность. Очень большое количество приложений, в том числе
свободно распространяемых, начиная от простейших текстовых редакторов и
заканчивая мощными системами управления базами данных.

13. Основные понятия операционных систем

Операционная система должна решать две основные задачи:
1. Взаимодействовать с аппаратными компонентами, обслуживая
низкоуровневые программируемые элементы платформы;
2. Предоставлять среду выполнения приложениям, работающим на
компьютере (так называемым пользовательским программам).
Многопользовательские операционные системы должны обладать
следующими функциональными особенностями:
1. Механизмом авторизации для проверки личности пользователя;
2. Механизмом защиты от пользовательских программ с ошибками,
которые могут мешать работе других программ в системе (изоляция
программ друг от друга);
3. Механизмом защиты от злонамеренных пользовательских программ,
которые могут вмешаться в действия других пользователей;
4. Механизмом ограничения объема ресурсов, выделяемых каждому
пользователю.

14. Пользователи и группы

Каждый пользователь д.б. авторизован в системе, т.е.:
- идентифицирован, в Unix пользователь идентифицируется уникальным
числом, которое называется идентификатором пользователя, или UID (User
ID);
- пройти аутентификацию;
- пройти авторизацию, т.е. должны быть установлены права доступа к
ресурсам системы и ограничения объемов выделяемых ресурсов.
Чтобы выборочно владеть ресурсами совместно с другими пользователями,
каждый пользователь присоединяется к одной или нескольким группам
пользователей, которые идентифицируются числами, называемыми
идентификаторами групп пользователей.
В любой Unix-подобной операционной системе есть особый пользователь,
называемый root, или суперпользователь. Его UID всегда равен 0.
Системный администратор должен войти в систему как суперпользователь,
чтобы иметь возможность работать с учетными записями пользователей,
выполнять задачи по обслуживанию системы (например, создание резервных
копий и обновление программ) и т.д.
Суперпользователь может делать почти все, потому что операционная
система не применяет к нему обычные механизмы защиты.

15. Процессы

Процесс можно определить как «экземпляр выполняемой программы» или
как «контекст выполнения» работающей программы. Процесс выполняет одну
или несколько последовательностей инструкций (машинных команд) в
отдельном адресном пространстве, представляющем собой множество
адресов памяти, к которым процессу разрешено обращаться. Каждая
последовательность инструкций в рамках одного процесса называется потоком
(нитью, тредом).
В многопользовательских системах могут быть активными одновременно
несколько процессов, конкурирующих за системные ресурсы. Системы,
допускающие наличие параллельных активных процессов, называются
многопрограммными или многозадачными.
Количество процессоров в системе всегда ограничено, и лишь несколько
процессов могут работать одновременно (не более одного на каждый
процессор). Какой процесс будет выполняться, определяется планировщиком
операционной системы. В многопользовательской системе процессы являются
вытесняемыми, т.е. могут сниматься с выполнения и выгружаться из
оперативной памяти.
Linux является многозадачной операционной системой с вытесняемыми
процессами.

16. Двухуровневая архитектура ОС Unix

17. Обобщенная архитектура ядра ОС Unix

18. Модель процесс/ядро

19. Архитектура ОС Linux

20. Архитектура ОС Linux

21. Архитектура ядра ОС Linux

English     Русский Rules