Загрузил Анастасия Шмелёва

ОС ЛК №1 Операционные системы

реклама
Использование командной строки является важным компонентом работы в
операционной системе Linux. Некоторые задачи невозможно выполнить с помощью
графического интерфейса, в то время как работа через командную строку предоставляет
полный контроль над системой.
Ознакомление с командами linux становится крайне важным в повседневной
работе, поскольку многие задачи эффективнее и быстрее выполнять через команды в
терминале. Например, поиск файлов по содержимому, изменение файлов, их
копирование и перемещение и т.д.
В условиях отсутствия графического интерфейса, терминал становится ключевым
инструментом для управления сервером. Это особенно актуально в случае удаленных
серверов, где графический интерфейс не устанавливается.
Цель - ближе познакомить пользователей с основными командами, которые
разработчики используют в повседневной работе.
Использование команд в терминале – неотъемлемая часть повседневной работы
разработчика, предоставляющая мощный и эффективный инструментарий для
управления файлами, процессами и системой в целом.
Многие задачи можно выполнять значительно быстрее и проще через терминал,
особенно когда речь идет о работе с файлами, поиском, обновлением и управлением
пакетами, работе с процессами и мониторингом.
Изучение команд терминала – это важный этап профессионального роста для
разработчика, поскольку они предоставляют возможность оптимизировать рутинные
операции, легко управлять процессами, мониторить ресурсы, а также иметь полный
контроль над файловой системой.
Также полезно ознакомиться с важными концепциями, которые помогают
эффективно и быстро работать в терминале. Среди них права доступа к файлам и
директориям, использование конвейеров, управление потоками и перенаправление
ввода-вывода, а также освоение функционала элиасов.
Мало того, что все больше и больше производителей начинают понимать, что эта
операционная система с открытым исходным кодом является жизнеспособной (и более
надежной) альтернативой Windows для настольных ПК, она также поддерживает почти
все службы, которые вы используете. Facebook, Twitter, Google, Netflix, Hulu, Amazon.
Все они используют Linux. Он стабильный, надежный, безопасный и гибкий.
Потому что, Linux поддерживает практически все - от популярных веб-сайтов,
облаков, контейнеров, Интернет-магазинов, бытовой техники, автомобилей, телефонов
и многих других типов электроники. Любой инженер-программист, работающий с
компаниями корпоративного уровня, работал с Linux.
Подобно Windows, macOS и Chrome OS, Linux - это операционная система. Есть
много различий (а также сходства), но основное различие между ними состоит в том,
что Linux является открытым исходным кодом. Это означает, что любой может
загрузить исходный код операционной системы (будь то ядро, одно из множества
окружений рабочего стола или все, что между ними), изменить его и распространить
новую версию.
Linux всегда был идеальной платформой для мастеров. Из-за его природы с
открытым исходным кодом пользователи могут копать настолько глубоко, насколько
захотят, чтобы внести изменения. Это означает, что пользователи гораздо лучше
знакомы с тем, как работают системы и программное обеспечение.
Учитывая, что многие среды разработки требуют использования командной
строки, уже наличие этого набора навыков дает пользователю Linux преимущество над
большей частью конкурентов. Конечно, и Windows, и macOS также предлагают
интерфейс командной строки. Но пользователи Linux просто более склонны
использовать этот инструмент.
Пользователи Linux лучше понимают управление пакетами и зависимости
Каждый разработчик должен знать о программных зависимостях. Попробуйте
установить любое приложение из исходного кода, и вы можете оказаться в так
называемом «аду зависимостей». Другими словами, вам, возможно, придется
столкнуться с, казалось бы, бесконечной рекурсией зависимостей, прежде чем вы
сможете установить это программное обеспечение.
К счастью, эта проблема была заменена использованием менеджеров пакетов
(таких как apt, dnf и zypper), но бывают случаи (даже с этими системами), когда вам
придется иметь дело с проблемами зависимостей.
Ну и раз мы заговорили про программирование: навыки администрирования Linux
вам пригодятся, если вы, как разработчик доберетесь до удаленного сервера, который
расположен, например на AWS – там вы сможете работать только из консоли, на которой
работают команды из Linux. Почему бы тогда не получить навыки Linux, чтобы потом
не путаться в незнакомом терминале, когда настанет момент разворачивания?
Автоматизация настройки рабочего окружения
Кому не подойдёт linux?
Что такое дистрибутивы?
Дистрибутивы это полноценные оболочки или другими словами операционные
системы, что были созданы на основе ядра Линукс. Поскольку Линукс предоставляет
возможность создания своей ОС, то многие из разработчиков воспользовались этим.
Лекция №1. ОРГАНИЗАЦИЯ ОПЕРАЦИОННЫХ СИСТЕМ
1.1 Общие понятия
ПО современных компьютеров включает множество разнообразных программ,
которое можно условно разделить на три группы
1. Системное программное обеспечение (системные программы);
2. Прикладное программное обеспечение (прикладные программы);
3.
Инструментальное
обеспечение
(инструментальные
системы).
иногда
трансляторы
Системное программное обеспечение (СПО) – это программы, управляющие
работой компьютера и выполняющие различные вспомогательные функции, например,
управление
ресурсами
компьютера,
создание
копий
информации,
проверка
работоспособности устройств компьютера, выдача справочной информации о
компьютере и др. Они предназначены для всех категорий пользователей, используются
для эффективной работы компьютера и пользователя, а также эффективного
выполнения прикладных программ.
Центральное место среди системных программ занимают операционные системы
(англ. operating systems). Операционная система (ОС) – это система управляющих
программ, предназначенная для обеспечения эффективного управления и использования
ресурсов вычислительной системы за счет автоматизированного управления их работой
и представления пользователем удобных командных средств доступа к ресурсам
вычислительной системы.
Если каждому программисту, создающему прикладную программу, нужно будет
разбираться во всех тонкостях работы всех этих устройств, то он не напишет ни строчки
кода. Более того, управление всеми этими компонентами и их оптимальное
использование представляет собой очень непростую задачу. По этой причине
компьютеры оснащены специальным уровнем программного обеспечения, который
называется
операционной
системой,
в
чью
задачу
входит
управление
пользовательскими программами, а также всеми ранее упомянутыми ресурсами.
Главные функция ос:
- Управление ресурсами и процессами
- Абстракция. Скрыть аппаратное обеспечение и существующие программы (и их
разработчиков) под создаваемыми взамен них и приспособленными для нормальной
работы красивыми, элегантными, неизменными абстракциями.
- Инкапсуляция (изоляция)..
Операционная среда — это набор функций и сервисов операционной системы и
правила обращения к ним. Она представляет собой набор интерфейсов, необходимых
программам и пользователям для обращения к операционной системе с целью получить
определённые сервисы.
Операционная система в общем случае может содержать несколько операционных
сред. Операционная среда может включать несколько интерфейсов: пользовательские и
программные.
Организация взаимодействия в среде ОС между пользователем и ЭВМ строится на
базе двух концепций: графической и командной.
Графический интерфейс пользователя – GUI (Graphical User Interface).имеет
графические окона и «инструментов» – иконки для быстрого доступа к функциям
программ. GUI — находятся на самом низком уровне программного обеспечения,
работающего в режиме пользователя.
Терминал – специальная программа запуска и выполнения
команд для
управления работой ОС (командная строка, консоль) Такой режим работы также
называют текстовым.
Операционная среда — это набор функций и сервисов операционной системы и
правила обращения к ним. Она представляет собой набор интерфейсов, необходимых
программам и пользователям для обращения к операционной системе с целью получить
определённые сервисы.
Операционная система в общем случае может содержать несколько операционных
сред. Операционная среда может включать несколько интерфейсов: пользовательские и
программные.
Местонахождение операционной системы показано на рис. 1.1. Она работает
непосредственно с аппаратным обеспечением и является основой остального
программного обеспечения.
В нижней части рисунка показано аппаратное обеспечение. Оно состоит из
микросхем, плат, дисков, клавиатуры, монитора и других физических объектов. Над
аппаратным
обеспечением
находится
программное
обеспечение.
Большинство
компьютеров имеют два режима работы: режим ядра и режим пользователя.
Операционная система — наиболее фундаментальная часть программного
обеспечения, имеет полный доступ ко всему аппаратному обеспечению и может
задействовать любую инструкцию, которую машина в состоянии выполнить
Важное отличие операционной системы от обычного (работающего в режиме
пользователя) программного обеспечения состоит в следующем: если пользователь
недоволен конкретной программой чтения электронной почты, то он может выбрать
другую программу или, если захочет, написать собственную программу, но не может
написать собственный обработчик прерываний системных часов, являющийся частью
операционной системы и защищенный на аппаратном уровне от любых попыток
внесения изменений со стороны пользователя.
1.2. ОБЗОР АППАРАТНОГО ОБЕСПЕЧЕНИЯ КОМПЬЮТЕРА
Операционная система тесно связана с аппаратным обеспечением компьютера, на
котором она работает. Она расширяет набор команд компьютера и управляет его
ресурсами.
Концептуально простой персональный компьютер можно представить в виде
модели, аналогичной изображенной на рис. 1.6. Центральный процессор, память и
устройства ввода-вывода соединены системной шиной, по которой они обмениваются
информацией друг с другом.
1.2.1 Процессор
Центра́льный проце́ссор (ЦПУ; англ. central processing unit, CPU, дословно —
центральное обрабатывающее устройство, часто просто процессор) — электронный
блок либо интегральная схема, исполняющая машинные инструкции (код программ),
главная
часть
аппаратного
обеспечения
компьютера
или
программируемого
логического контроллера.
В следующих разделах будет дан краткий обзор отдельных компонентов и
рассмотрены некоторые аспекты аппаратного обеспечения, представляющие интерес
для разработчиков операционных систем.
Для каждого типа центрального процессора существует определенный набор
команд, которые он может выполнять.
Для каждого типа центрального процессора существует определенный набор
команд, которые он может выполнять.
Регистр процессора — сверхбыстрая оперативная память (СОЗУ) внутри
процессора, предназначенная для хранения адресов и промежуточных результатов
вычислений или данных, необходимых для работы самого процессора.
Также у многих процессоров есть ряд специальных регистров, доступных
программисту. Один из этих регистров, называемый счетчиком команд, содержит адрес
ячейки памяти со следующей выбираемой командой.
Другой специальный регистр, называемый указателем стека, ссылается на
вершину текущего стека в памяти. Стек содержит по одному фрейму (области данных)
для каждой процедуры, в которую уже вошла, но из которой еще не вышла программа
Большинство центральных процессоров, используемых во встраиваемых системах,
имеют два режима работы:
- привилегированный, режим ядра (kernel mode) или
- режим супервизора (supervisor mode) и пользовательский режим (режим
пользователя (user mode))
Ядро́ (англ. kernel) — центральная часть операционной системы (ОС),
обеспечивающая приложениям координированный доступ к ресурсам компьютера,
таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее
устройство ввода и вывода информации.Также обычно ядро предоставляет сервисы
файловой системы и сетевых протоколов.
На рис. 1.1 показана принципиальная схема организации ОС. В составе ОС
выделяют ядро и утилиты.
Утилита - вспомогательная сервисная программа для выполнения типовых задач
связанных с работой оборудования и/или ос, предназначены для настройки или
оптимизации.
У утилит есть опции/ключи/параметры/флаги.
Вот основные компоненты, из которых состоит ядро ОС:
1. Менеджер памяти.
2. Планировщик задач.
3. ДрАйверы
-
обеспечением устройств.
это
ПО
для
взаимодействия
ОС
с
аппаратном
4. Системные вызовы - (system call) запрос на обслуживание к операционной
системе от пользовательского процесса. Подробности механизма системного вызова
будут рассмотрены в этой главе чуть позже, как и другие системные прерывания.
5. Модуль безопасности. Обеспечивает контроль доступа пользователей к
ресурсам компьютера и защищает от вредоносных программ.
6. Управление процессами и потоками. Позволяет выполняться параллельно и
обеспечивая координацию и синхронизацию.
7. Управление файловой системой.
В составе ОС можно выделить ряд слоев по функциональному признаку.
1. Средства аппаратной поддержки ОС:
- средства поддержки привилегированного режима;
- система прерываний;
- средства переключения контекстов процессов;
- средства защиты областей памяти.
2. Машинно-зависимые компоненты ОС. Этот слой образуют программные
модули, в которых отражается специфика аппаратной платформы компьютера. На этом
уровне находится транслятор.
Транслятор (англ. translator – переводчик) – это программа-переводчик, которая
преобразует программу с языка высокого уровня в программу, состоящую из
машинных
команд.
Трансляторы
реализуются
в
виде
компиляторов
или
интерпретаторов, которые существенно различаются по принципам работы.
Компилятор (англ. compiler – составитель, собиратель) читает всю программу
целиком, делает ее перевод и создает законченный вариант программы на машинном
языке, который затем и выполняется. После компилирования получается
исполняемая программа, при выполнении которой не нужна ни исходная программа,
ни компилятор.
Интерпретатор (англ. interpreter – истолкователь, устный переводчик) переводит и
выполняет
программу
строка
за
строкой.
Программа,
обрабатываемая
интерпретатором, должна заново переводиться на машинный язык при каждом
очередном ее запуске.
Откомпилированные программы работают быстрее, но интерпретируемые проще
исправлять и изменять.
3. Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции
ядра:
- программное переключение контекстов процессов;
- диспетчеризацию прерываний;
- перемещение страниц из памяти на диск и обратно.
4. Менеджеры ресурсов. Этот слой состоит из функциональных модулей,
реализующих
стратегические
задачи
по
управлению
основными
ресурсами
вычислительной системы.
5. Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра
и
взаимодействует
непосредственно
с
приложениями,
образуя
прикладной
программный интерфейс операционной системы API (Application Programming
Interface).
В целом, ядро операционной системы является важнейшей частью программного
обеспечения компьютера, которая обеспечивает работоспособность ОС и контролирует
доступ пользователя к ресурсам компьютера.
При работе в режиме ядра процессор может выполнять любые команды из своего
набора и использовать любые возможности аппаратуры. На серверных машинах
операционная система обычно работает в режиме ядра, что дает ей доступ ко всему
оборудованию. На большинстве встроенных систем в режиме ядра работает только
небольшая часть операционной системы, а вся остальная ее часть — в режиме
пользователя. Пользовательские программы всегда работают в режиме пользователя,
который допускает выполнение только подмножества команд и дает доступ к
определенному
подмножеству
возможностей
аппаратуры.
Как
правило,
в
пользовательском режиме запрещены все команды, касающиеся операций ввода-вывода
и защиты памяти.
Для получения услуг от операционной системы пользовательская программа
должна осуществить системный вызов, который перехватывается внутри ядра и
вызывает операционную систему.
1.2.2. Память
Второй основной составляющей любого компьютера является память. В идеале
память должна быть максимально быстрой (работать быстрее, чем производится
выполнение одной инструкции, чтобы работа центрального процессора не замедлялась
обращениями к памяти), довольно большой и чрезвычайно дешевой. Никакая
современная технология не в состоянии удовлетворить все эти требования, поэтому
используется другой подход. Система памяти создается в виде иерархии уровней (рис.
1.9). Верхние уровни обладают более высоким быстродействием, меньшим объемом и
более высокой удельной стоимостью хранения одного бита информации, чем нижние
уровни, иногда в миллиарды и более раз.
Кэш-память - промежуточный буфер с быстрым доступом к нему, содержащий
информацию, которая может быть запрошена с наибольшей вероятностью.
Операти́вная па́мять (Random Access Memory, RAM (ОЗУ)— память с
произвольным доступом) — часть системы компьютерной памяти, в которой во время
работы компьютера хранится выполняемый машинный код (программы), а также
входные, выходные и промежуточные данные, обрабатываемые процессором. Это
главная рабочая область системы памяти машины.
Жёсткий диск (накопитель на жёстких магнитных ди́сках, hard disk drive,
HDD) (ПЗУ) или (Read Only Memory (ROM)), память, предназначенная только для
чтения
1.2.3. Устройства ввода-вывода
устройствами ввода/вывода, являются: мышь, клавиатуру, тачпад, дисковые
накопители, адаптеры дисплея, USB-устройства, экран с поточечной адресацией,
светодиоды, переключатель включения/выключения, аудио-входы/выходы, МФУ и т. д.
Система ввода/вывода должна принимать запрос приложения на ввод/вывод и
посылать его физическому устройству, затем принимать ответ от устройства и посылать
его приложению. Устройства ввода/вывода можно разделить на две категории:
 Блочные устройства. Блочное устройство — это устройство, с которым драйвер
взаимодействует путем отправки целых блоков данных. Например, жесткие диски, USBкамеры, флешки и т.д.
 Символьные устройства. Символьное устройство — это устройство, с которым
драйвер взаимодействует путем отправки и получения отдельных символов (байтов,
октетов). Например, последовательные порты, параллельные порты, звуковые карты и
т.д.
Устройства ввода-вывода обычно состоят из двух компонентов: самого устройства
и его контроллера. Контроллер работает как интерфейс между устройством и драйвером.
1.2.4. Шины
Компьютерная ши́на (англ. computer bus) в архитектуре компьютера —
соединение, служащее для передачи данных между функциональными блоками
компьютера.
Но по мере увеличения скорости работы процессоров и памяти возможности единой
шины по обеспечению всех процессов обмена данными достигли своего предела.
Поэтому у системы имеется несколько шин:
- шины данных, по которой осуществляется обмен информацией между блоками
ЭВМ;
- шины адреса, используемой для передачи адресов (номеров ячеек памяти или
портов ввода-вывода, к которым производится обращение);
- шины управления для передачи управляющих сигналов.
Совокупность
этих
трех
шин
называют
магистралью или системным интерфейсом.
системной
шиной,
системной
Таненбаум
стр.
59
1.4.
Зоопарк
операционных
систем
ресурсы + прерывания + жц.
Таненбаум 63 стр. 1.5. Понятия операционной системы - процессы
Операционные системы можно разделить на несколько основных типов:
1 Десктопные операционные системы:
◦ Примеры: Microsoft Windows, macOS (ранее Mac OS X), Linux (различные
дистрибутивы).
◦ Рассчитаны на персональные компьютеры и ноутбуки.
◦ Предназначены для использования конечными пользователями и обеспечивают
интерфейс для запуска прикладных программ.
2 Мобильные операционные системы:
◦ Примеры: Android, iOS (Apple), HarmonyOS (Huawei), KaiOS и др.
◦ Разработаны специально для мобильных устройств, таких как смартфоны и
планшеты.
◦ Обладают оптимизированным пользовательским интерфейсом и функциями,
связанными с мобильными приложениями.
3 Серверные операционные системы:
◦ Примеры: Windows Server, Ubuntu Server, CentOS, Red Hat Enterprise Linux.
◦ Предназначены для установки на серверах и обеспечивают функциональность,
необходимую для управления сетевыми ресурсами, хранения данных, обеспечения
безопасности и управления сетевой инфраструктурой.
Скачать