Разбираемся, как работают операционные системы
Linux, Windows, Mac OS? Зачем они нужны? Понимание того, как работают операционные системы, поможет создавать качественные приложения.
Есть несколько причин, почему программистам стоит знать, как работают операционные системы. Одна из них – чтобы понимать, как работают программы. Представьте: вы пишете код, который кажется рабочим, но программа тормозит. Что делать? Можно попробовать разобраться с ограничениями операционной системы, но вы ведь не умеете!
Если стремитесь построить карьеру программиста, стоит понять, как работают операционные системы. Например, можно изучить курс «Введение в операционные системы» от Georgia Tech. В нем рассказывается, как работают ОС: механизмы работы, параллельное программирование (потоки и синхронизация), взаимодействие между процессами, распределённые ОС.
Осветим 10 наиболее важных принципов, о которых говорилось в курсе Udacity, и разберемся, как же работают операционные системы.
Разбираемся
Загрузка ЦП в компьютере — означает загрузка центрального процессора в компьютере, простыми словами — нагрузка процессора. Ее можно посмотреть в диспетчере задач, также можно увидеть какой процесс насколько грузит процессор. В этом плане диспетчер полностью предоставляет всю нужную информацию.
Сперва давайте я покажу как запустить диспетчер задач — есть простой способ, который должен вам подойти. Нужно нажать правой кнопкой по панели задач и там в меню выбрать нужный пункт:
Способ универсальный, работает как в старенькой Windows XP, так и в новенькой Windows 10))
Для продвинутых юзеров существует другой способ — зажимаете кнопки Win + R, появится окошко Выполнить, туда вставляете команду taskmgr и нажимаете ОК.
UID и GID
С процессом связано понятие «владельца» и «группы», определяющие права доступа процесса к другим процессам и файлам в файловой системе. «Владелец» и «группа», это числовые идентификатор UID и GID, являющийся атрибутами процесса. В отличие от файла, процесс может принадлежать нескольким группам одновременно. Пользователь в диалоговом сеансе имеет право на доступ к своим файлам поскольку диалоговая программа (shell), которую он использует, выполняется в процессе с тем же UIDом, что и UID, указанный в атрибутах файлов.
Процесс может поменять своего владельца и группу в двух случаях:
- текущий UID равен 0 (соответствует пользователю root) и процесс обратился к системному вызову setuid(newuid) . В этом случае процесс полностью меняет владельца.
- процесс обратился к вызову exec(file) загрузив в свою память программу из файла в атрибутах которого выставлен флаг suid или sgid. В этом случае владелец процесса сохраняется, но права доступа будут вычисляться на основе UID и GID файла.
Прикрепленный файл | Размер |
---|---|
fork-exex-wait.png | 25.8 КБ |
Сохранение приоритета с помощью настроек реестра
После перезагрузки компьютера (или при перезапуске программы) — установленный вами приоритет сбрасывается (т.е. Windows снова задает его автоматически). И это не очень удобно.
Но с помощью настроек реестра можно «сохранить» указанный вами приоритет (т.е. Windows будет «знать», что эту программу нужно запустить с таким-то приоритетом).
Как это сделать:
-
сначала необходимо открыть редактор реестра (нажмите Win+R , и введите команду regedit , нажмите OK);
regedit — открыть редактор реестра
Какую ветку в реестре нужно открыть
Узнаем название исполняемого файла игры / Кликабельно
Создание раздела / Реестр
Создать параметр DWORD32
Что получилось в итоге!
Кстати!
Для Windows 7 есть спец. программа Prio, позволяющая задавать (и сохранять) приоритеты для практически любых программ и процессов. Правда, в Windows 10/11 она не работает (поэтому выше я и привел универсальный рабочий способ для всех современных ОС Windows).
Как операционная система загружается в компьютер?¶
Процесс загрузки операционной системы и вообще компьютера имеет несколько этапов, основные из которых:
- Запуск компьютера – на процессор подаётся напряжение и его элекрические компоненты начинают работу.
- Процессор начинает исполнять инструкции с фиксированного, аппаратно зашитого в него адреса.
- По этому адресу находится специальная программа POST – Power On Self Test. Которая проверяет работоспособность основных компонентов вычислительной системы.
- Далее, управление передаётся BIOS’y — Basic Input Output System (Базовая система ввода-вывода), которая инициализирует основные устройства ввода-вывода: загрузочные устройства (раличные хранители информации: HDD, SSD, Flash и так далее), клавиатура, монитор и прочее. обращается к загрузочному устройству и читает первый блок данных, на котором должен находиться загрузчик. Загружает его в память и передаёт ему управление.
- Загрузчик загружает в память и инициализирует основные компоненты операционной системы и передаёт ей управление.
- Операционная система запускает таймер, который будет возвращать управление операционной системе каждый, заранее установленный разработчиками ОС, квант времени. Это делается для реализация Scheduler’a — планировщика, чтобы ОС могла управлять и контролировать процессы.
- Операционная система создаёт первый процесс-пользователя и дальше от него начинают множится другие процессы.
Подробнее о Task Manager
- На вкладке «Приложения» находится список запущенных в данный момент утилит. Их можно закрыть. Там не отображаются программы, которые функционируют в фоновом режиме (например, антивирусы, свёрнутые в трей мессенджеры или закачка обновлений).
- Внизу указаны ресурсы и производительность. Физическая память, загруженность процессора. Если диск используется на 100%, лучше что-нибудь отключить.
- В следующем разделе диспетчера задач перечислены фоновые и системные процессы. Там есть имя образа, описание (либо издатель, либо полное название программы), сколько памяти ему выделено, и какие пользователи его запустили.
- На вкладке «Службы» предоставлен список служб и утилит, которые работают в ОС.
- Категория «Быстродействие» показывает, насколько загружен компьютер, память и диск. Если используется 100% ресурсов, надо срочно закрыть ненужные приложения и сервисы. Или перезапустить ПК.
Быстродействие в диспетчере задач
- Вкладка «Сеть» предназначена для оценки функционирования сетевых и локальных соединений.
- В подразделе «Пользователи» показан список активных юзеров.
Список запущенных процессов из командной строки
В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:
После этого на Рабочем столе появится текстовый файл:
в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:
Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:
Для удалённого компьютера команда примет вид:
На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…
Список запущенных процессов из командной строки
В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:
После этого на Рабочем столе появится текстовый файл:
в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:
Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:
Для удалённого компьютера команда примет вид:
На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…
Вопросы и задания
1. Расскажите о смене элементной базы компьютеров, происходившей при переходе от одного поколения к другому. Как при этом менялись основные характеристики ЭВМ?
2. В чем состоял отход от архитектуры фон Неймана на ЭВМ второго и третьего поколений?
3. Что позволило реализовать мультипрограммный режим работы на ЭВМ третьего поколения?
4. Чем принципиально отличается архитектура ПК от классической архитектуры компьютеров первых поколений?
5. Какие функции выполняют контроллеры внешних устройств на ПК?
6. В чем состоит принцип открытости архитектуры ПК?
7. Какие функции выполняли первые операционные системы?
8. Для каких классов задач нужны сверхпроизводительные вычислительные системы?
9. Что такое параллельные вычисления?
10. Для примера со сложением чисел 25 учениками попробуйте проанализировать следующие ситуации: в классе всего 1 кусочек мела; в классе 5 кусочков мела; в классе 25 кусочков мела. Оцените, как от этого зависит время решения задачи (учтите еще ширину доски и время перемещения учеников по классу). Попробуйте построить модель такого процесса. Переведите эту ситуацию на язык компьютерной терминологии для многопроцессорных систем.
11. Чем отличаются мультикомпьютерные системы от мультипроцессорных? По какому принципу работают суперкомпьютеры?