Upload
gainesd
View
206
Download
0
Embed Size (px)
Citation preview
ITDays.1.0Днепропетровск, март 2010
Операционная система как «душа» компьютера
Разновидности ОСЯдро ОСДрайвера и прикладные
программыИнтерфейс пользователя
ОС позволяет абстрагироваться от деталей реализации аппаратного обеспечения, предоставляя разработчикам программного обеспечения минимально необходимый набор функций.
Интерфейсы ОС
Загрузка программ в память и их выполнение
Предоставление и управление доступом к памяти, дискам и периферийным устройствам
Обеспечение человеческого интерфейса
Взаимодействие компьютеров по сети
Бытовые и промышленные приборы
АвтомобилиМобильные средства связиИгровые приставки
1970 - год начала компьютерной эры Кен Томпсон и Брайан Ричи
формируют основные требования и концепции ОС
Они создают UNIX В конце 70х университет Berkeley
добавляет сетевую подсистему и выпускает BSD
В начале 80х Билл Гейтс основывает Microsoft и выпускает PC DOS
В середине 80х Ричард Столмен организует фонд свободного ПО и проект GNU по разработке бесплатной и открытой ОС
Стив Джобс и Стив Возняк, основатели Apple, выпускают дистрибутив Macintosh
В начале 90х Линус Торвальдс начинает разработку ядра Linux по подобию Unix
Microsoft выпускает Windows 3.11, 95, 98, ME
Параллельно развивает линию NT и выпускает Windows 2000 (NT 4), XP, 2003, Vista, 2008 и 7.0
В начале 2000х Apple выпускает Mac OS X
В середине 2000х появляется дистрибутив Gnu\Linux Ubuntu
62% (XP), 17% (Vista), 7% (Win7)
9% (Mac OS X), 1% (iPhone OS)
3% (GNU\Linux)
Плюсы: Легко использовать Обновления и поддержка
Минусы: Дорогая Нестабильная и незащищенная
Плюсы: Легко использовать Защищенная и стабильная Красивый дизайн
Минусы: Дорогая
Плюсы: Бесплатная с открытым кодом Защищенная и стабильная Скромные требования к оборудованию Легко программировать
Минусы: Трудна для освоения Нет официальной поддержки
Программы, управляющие другими программами (микроядро)
Программы, управляющие оборудованием (макроядро)
Планировщик – занимается распределением процессорного времени между программами
Менеджер памяти – регулирует использование памяти программами и ОС
Межпроцессный обмен – позволяет программам взаимодействовать друг с другом
Файловая система – обеспечивает долговременное хранилище данных
Драйвер – это программное расширение для ядра ОС
Файловых систем (FAT, NTFS, EXT, HFS)
Периферийных устройствСетевые драйверыЛюбая программа, работающая в
режиме ядра
Компоненты микроядра и драйверы устройств объединены монолитно
Утилиты для конфигурирования ОС
Компиляторы, компоновщики, загрузчики, стандартные библиотеки, виртуальные машины
Оболочки (пользовательские интерфейсы): текстовые и графические
Совокупность ядра ОС и системных программ
Программа – набор инструкций Процесс – выполняющаяся программа Процесс – контейнер ресурсов ОС для
некоторой программы: память для инструкций, несколько нитей выполнения, описатели файлов и сокетов
Для процесса отводится 4 Гб (32-битная ОС) или 16 Тб (64-битная ОС) памяти
Первые 3 Гб отводятся для кода программы
Последние 4Гб – для кода ОСИ так для каждого процессаСейчас редко на компьютере есть
хотя бы 4 Гб оперативной памяти, а раньше было еще меньше
ОС для процесса создает иллюзию наличия нужного объема памяти
Физически в оперативной памяти размещаются только те части инструкций программы, которые обрабатываются непосредственно сейчас
Остальные инструкции и данные во время простоя записываются в раздел подкачки на жесткий диск
Таким образом, если процессу не хватает памяти, ОС начинает использовать дисковое пространство
Для Windows – pagefile.sys в корне системного раздела
Для Mac и Linux – отдельный раздел диска или несколько файлов
Если какая-то инструкция обратится к чужой памяти, то ОС удалит весь процесс
Память процесса разделена на две части
Первая – для инструкций обычной программы
Вторая – для инструкций ОС Только инструкции из второй области
памяти могут напрямую обращаться к аппаратуре компьютера
Они называются инструкциями, выполняемыми в режиме ядра
Инструкции из первой области работают в режиме пользователя
Это обычные прикладные программы
Системный вызов – обращение пользовательского кода к функциям ОС
Нить – последовательность инструкция
Каждый процесс имеет, как минимум, одну нить выполнения - главную
Планировщик по таймеру переключает нити внутри процессов, а не процессы
Создается иллюзия параллельного выполнения программ
Каждая нить может быть в двух основных состояниях: сон и выполнение
Выполнение может быть в режиме пользователя или режиме ядра
Переключение между режимами происходит по программному или аппаратному прерыванию процессора
Файл – это некогда именованная область памяти
Файловая система (абстрактно) – дерево файлов, не обязательно физически существующих
Файловая система (физически) – набор записей на диске определенного формата
Каталог (директория, папка) – специальный файл с информацией о других файлах
Ссылка (ярлык) – специальный файл, указывающий на другой конкретный файл
Популярные файловые системы: FAT32 (флешки, дискеты), NTFS (Windows), HFS+ (Mac OS X), Ext (Linux)
Сокет (гнездо) – абстракция ОС на подобии файла для работы с сетью
Выполняя системные вызовы, программа может создавать\удалять, читать\записывать файлы и сокеты.
Программа, выводящая слово «Hello» на языке программирования С (файл hello.c):
int main(){ puts("Hello"); return 0;}
Препроцессор
Компилятор
Ассемблер
Редактор
Откомпилированные файлы
hello.c
Программист
Статические
библиотеки
hello.i hello.s
hello.o
Динамические
библиотеки
hello.exe
.lib, .a.dll, .so, .dylib
.o, .obj
Программа
Компоновщик
Загрузчик
Алгоритм - набор инструкций, описывающих порядок действий для достижения некоторого результата за конечное время
Следование, ветвление и цикл
Зацикливаются (при этом «висит» всё)
Некоторые нити засыпают в ожидании системного вызова
Различают командный и графический интерфейсы пользователя (оболочка)
ITDays.1.0Днепропетровск, март 2010