Как работает программа windows
Операционная система Windows - принцип работы
В связи с открытием рубрики — Компьютерные уроки, следует дать вступление по операционной системе Windows. Эта рубрика предназначена как для начинающих, так и для «бывалых» пользователей компьютеров и ноутбуков. Итак, приступим:
Принцип работы Windows
В основе операционной системы Windows и всех ее приложений лежит так называемый событийный механизм.
Приложениями операционной системы называются программы, написанные для работы под ее управлением.
Обычно программа — более широкое понятие, чем приложение, но если статья посвящена системе Windows, то можете считать, что это почти одно и то же...
Основная особенность приложений Windows состоит в том, что им запрещено полностью захватывать процессор. Если программа для Windows написана корректно, она обязана время от времени приостанавливать свою работу и отдавать процессор самой операционной системе.
Сколько бы приложений ни работало одновременно, операционная система периодически отбирает у них процессор и передает его другим программам (в том числе и собственным), а потом опять возвращает.
Благодаря этому операционная система постоянно находится в курсе дел всех своих приложений. Происходит это настолько быстро, что мы просто не замечаем, что множество программ работает по очереди, — нам кажется, что они работают одновременно. Этим обеспечивается многозадачный режим работы.
Если на компьютере запустить приложение другой операционной системы, например программу, написанную для MS-DOS, то далеко не всегда Windows будет в курсе ее дел, проще говоря программа не будет работать.
Операционная система Windows работает не только как диспетчер, открывающий программам доступ к процессору, но и как контролер. Внутри нее есть средства, проверяющие работу приложений, и если в каком-то приложении произошло некое событие, об этом становится известно операционной системе, и та в свою очередь может принять соответствующие меры.
В идеале так и должно быть, если приложение не имеет внутренних ошибок. На практике ошибки встречаются, в результате чего мы иногда сталкиваемся с «зависанием» компьютера. «Зависание» — это тот случай, когда операционная система не может восстановить контроль над тем, что делают программы, и компьютер перестает реагировать на наши команды.
Для примера посмотрим, как компьютер работает с мышью. В недрах операционной системы работает программа, отвечающая за взаимодействие с нею, — драйвер мыши.
Драйверами называются программы, отвечающие за взаимодействие операционной системы с устройствами.
Если драйвер мыши сообщает о том, что мышь переместилась или была нажата какая-то ее кнопка, то для операционной системы это событие ;). Система проверяет, где находился указатель в момент наступления события, определяет, какое приложение отвечает за работу окна, над которым в этот момент находился указатель, и сообщает ему о зафиксированном событии. Приложение, в свою очередь, принимает меры в соответствии с тем, что задумал создавший его программист.
Так получается, что и сама операционная система Windows, и все ее приложения находятся в постоянной готовности к внешним событиям.
Кстати, событиями являются не только манипуляции с мышью, но и сигналы, поступающие от клавиатуры, принтера, модема, внутренних часов и многих других устройств и программ.
История Windows | Программное обеспечение | Блог
Раньше, чтобы добиться ответа от будущего поработителя человечества, приходилось вручную вводить данные в командную строку. Это неудобно и долго. Привычный «оконный интерфейс» появился в середине 80-х годов и необходимость заучивать словарик терминов отпала, команда стала передаваться парой кликов. Визуализация действий позволила параллельно выполнять несколько задач, переносить информацию из одной программы в другую, получать быстрый доступ к файлам с помощью иконок.
Первая графическая операционная система была воспринята специалистами в штыки из-за высоких требований к «железу». Для работы требовался экзотический зверь – мышь. В то время хвостатый грызун не был распространен, и на вопрос: «Мыши есть?», можно было получить искренний ответ продавца-консультанта: «Травим».
Начало начал
Графический интерфейс придумал Даг Энгельбарт в 60-х годах. В 1973 команда Xerox создала корпоративный инструмент WIMP – окна, иконки, меню, указатели для компьютеров собственной разработки PERQ и STAR.
Вычислительные машины долгое время считались специализированным инструментом военных, ученых, инженеров. Для элементарных математических расчетов требовалось выучить компьютерную грамоту. Рядовые пользователи не могли представить, зачем им этот дорогой аппарат. С появлением графического интерфейса все изменилось. Звуки, картинки и главное – игры, превратили ЭВМ в мультимедийный развлекательный центр.
Почему окна?
Мы живем в физическом объемном мире, нам нравится все, что можно потрогать, рассмотреть с разных сторон. Окно умеет менять свою форму, расширяется и сужается, отбрасывает тень, создает иллюзию выпуклости. Негатив, злость и раздражение приходят в тот момент, когда динамичное изменение пространства рабочего стола вдруг замораживается, а меняющиеся надписи, иконки, размеры шрифтов, цвета регулярно раздражают мозг, вызывая позитивную реакцию.
Повелители окон
История оконной гегемонии началась в 1975, когда Билл Гейтс и Пол Аллен основали корпорацию Microsoft.
Выпуская софт для быстро растущего рынка персональных компьютеров, Гейтс не мог упустить возможность скопировать новый продукт – графический интерфейс Apple.
В довесок к окнам яблочники давали увесистую Lisa, массой в 9 «тонн» американских денег. Большинство пользователей предпочитали машины попроще. В начале 80-х в гонку вычислений вступает Белоснежка – IBM и 7 компаний-гномов: RCA, CDC, Univac, Burroughs, Honeywell, NCR, GE. Стоимость персонального компьютера падает до 500-1000$. Lisa, стоившая в 9-18 раз дороже, чуть не погубила Apple, снизив ценность акций на 30%, Джобс покинул здание.
Трудолюбивые гномы наштамповали массу компьютеров и настала пора клепать новый интерфейс – так решили в Microsoft. У компании уже был опыт разработки OS для IBM. MS-DOS – получает графическую надстройку Windows 1.
Все украдено до нас
Увидев знакомые окна в 1984 году, Джобс отправился в суд. Тяжба длилась до 1993 года, и закончилась в пользу Билла. По одной из версий, Гейтс позаимствовал интерфейс во время разработки софта для Macintosh, по другой – это самостоятельная разработка, которую вели с 1982 года.
Сам Стив Джобс обзавелся окошками во время визита в исследовательский центр Xerox в Пало-Альто. Стащив дискету со стола инженера, он убегал, сверкая пятками (но это не точно). Компания Apple щедро отсыпала своих акций Xerox, чтобы предотвратить судебные тяжбы.
Факт: первое название Windows – Interface Manager. «Окна» появились благодаря маркетинговому отделу компании.
Причина популярности окошек – отсутствие альтернативы в принципе. Продукт, разработанный Xerox, доведенный до ума Apple и MicroSoft, завоевывал доверие, постепенно приручая восприятие людей к оконному мышлению. Microsoft обязан своей популярности двум провальным проектам Стива Джобса и высокому спросу на персональные компьютеры.
Оконная история
Первенец, родившийся 10 ноября 1983 года, был наречен Windows 1. За цветастым кафтаном графического интерфейса, спряталась морально устаревшая MS-DOS. Черный экран, отражающий лысину программиста, уступил место окнам. Стоимость – 100$, продано 500 000 копий, основной конкурент – Apple Lisa 1983 года рождения.
Старший брат – Windows 2, явился на свет 9 декабря 1987 года, будучи по-прежнему всего лишь шкуркой, он лишился недостатков первой версии. Окна свободно перемещались, появилось ведро для отбросов. Обновился интерфейс: кнопки минимизации и максимизации окон, поддержка горячих клавиш, встроенная программа Dynamic Data Exchange для обмена сообщениями. Цена не изменилась, продажи увеличились в 2 раз.
Появившийся 22 мая 1990 года Windows 3 – стал окном в Интернет. С версии 3.1 используется протокол TCP IP. Малыш получился довольно цветастым, – к тому же со славянской примесью. Пока американских ученых и студентов радовали 256 оттенков, граждане СССР рассматривали зарубежные витражи с кириллическими буковками – добавилась поддержка русского языка.
Дедушка MS-DOS сделал свое дело, родив 3-х сыновей, больше его услуги не требовались. 27 июля 1993 года свершилось долгожданное событие, на свет явилась Windows NT – операционная система нового поколения, мать-прародительница всех последующих OS, которая изначально разрабатывалась для серверов.
На дворе 24 августа 1995 года. Windows 95 – первая полноценная OS для домашнего использования. Лихой хакер играет в косынку, слушает wav-мелодию и пялится 15 минут на медленно прорисовывающуюся картинку в браузере Internet Explorer.
Многозадачность пошла в массы. Интерфейс стал удобным и симпатичным. Появилась кнопка «Start», 65 000 цветов. Продано 40 миллионов копий по 210$, совет директоров Apple льет крокодильи слезы.
Windows 98 – 21 июня 1998 выходит естественное продолжение Windows 95 c улучшенным USB, поддержкой HDD большого объема, предустановленным ПО: обновленный Explorer и Outlook Express. За 7 дней реализовано полмиллиона дисков ценой в 110$.
17 февраля 2000 года появился Millennium, получивший народное прозвище «Линолеум». Выкидыш стимулировал народное творчество, старина Билли узнал о себе много нового. Gif-ки с изображающим головы главы корпорации демонстрировали широту фантазии оконных адептов. Windows ME по сути был Windows 98 с новой красивой шкуркой, аудио-видеоплеером и огромным количеством багов.
«Чупакабру» не смог спасти даже мизерный ценник в 60$. Забив на провальный проект, Microsoft выпускает новую OS – легендарную Windows XP. Система по сей день пользуется популярностью за стабильность, не требовательность к ресурсам, лаконичный графический интерфейс. С 15 августа 2019 года она считается совершеннолетней. По информации от NetmarketshareXP установлена на 12% всех ноутбуков на планете. Ценник – 85$.
30 ноября 2006 года выходит Windows Vista – сестра Линолеума по несчастью. Красивая и яркая особа оказалась слишком требовательна к кормовой базе. Почувствовав неладное, пользователи спешно мигрировали обратно на XP. Из новинок: защита от вирусов, идентифицирующая пользователей, как врагов. Красивая Aero, превращающая Pentium IV в дрова. Ценник 200-400$.
Счастливая 7-ка вышла 22 октября 2009 года, и стала самой популярной операционной системой в первом десятилетии 21 века, установлена на 55,7% ПК по данным Netmarketshare. Быстрая, производительная, с симпатичным интерфейсом, она сочетала в себе брутальный характер XP и красоту Висты. Стоимость на момент релиза 160-320$.
В октябре 2012 года появилсяWindows 8, подтвердив теорию – корпорация выпускает нормальный продукт через один. Многим не понравился плиточный интерфейс, к тому же OS бесконечно быстро пожирала оперативную память. С другой стороны, система работала стабильно и быстро загружалась. Попытка создать универсальный продукт для планшетов, компьютеров и телефонов вышла третьим по счету комочком.
29 июля в 2015 году появляется Windows 10, работающая на всех платформах. Возвращена привычная кнопка пуска. В меню добавляется Microsoft Edge, Streaming Xbox One, Microsoft Store. Цена - 199$.
Apple был первым, но не смог. Семейство Windows за 30 лет захватило дисковое пространство 90% ПК и 30% серверов, установив свою гегемонию. Агенты: Paint, Word, Блокнот, Сапер, Косынка и Пасьянс – поработили разум и души миллиардов пользователей, став легендарными.
Повышение быстродействия Windows 10 | Программное обеспечение | Блог
Со временем новая «машина» начинает работать медленно, чаще «фризит», ведь она обрастает всевозможными приложениями и файлами. Помочь компьютеру работать быстрее можно без особых трат и дополнительных покупок «железа».
Рассмотрим два способа увеличения мощности:
- «Кардинальный» метод.
- Максимальная производительность.
«Кардинальный» метод заключается в установке чистого образа Windows 10.
Microsoft в 2016 году выпустила редакции Windows 10: LTSB и LTSC.
В данных версиях отсутствуют: браузер Edge, Microsoft Store, игровой режим, OneDrive, плиточные приложения и виджеты, привычный калькулятор, а также другие привычные компоненты. Система активирована лицензией Evalution на 90 дней.
Как один из вариантов для слабых машин.
Вторым вариантом данного метода является установка Windows 10 Lite созданной на базе официальной русской версии Windows 10 x64 скачанной с официального сайта Microsoft с изъятыми компонентами и отключенными службами. Данная сборка лучше подходит для слабых «машин», чем Windows 10 LTSB/LTSC.
Вот небольшой список изъятых приложений: Подсистема для Linux, Windows Hello, Cortana, MS Edge, FileExplorer, StorageService, Virtualization RemoteFX и другие (полный список можно посмотреть по ссылке: перечень изъятых приложений.
Сборка является неофициальным продуктом компании Microsoft. В статье приведена информация для ознакомления.
Максимальная производительность
При запуске устройства свою работу начинают установленные программы. Зачастую программы оказываются совсем ненужными и приносят только вред вашей ОС. Программы работают в фоновом режиме и сильно замедляют ПК, даже если вы этого и не подозреваете. Для того чтобы улучшить производительность на этапе старта, следует отключить некоторые программы в меню автозагрузки.
Автозагрузка компьютера
Для начала кликаем на «Пуск» / панель рабочего стола правой кнопкой мыши, и в списке ищем «Диспетчер задач» или же нажимаем Ctrl+Alt+Del.
Кликаем по «Диспетчер устройств», ждем запуска. После этого всплывёт диалоговое окно, где мы можно увидеть загруженность компьютера различными процессами, его быстродействие и т.д. Нам нужно перейти в меню автозагрузки.
Внимательно изучаем, какие программы действительно нужны. Убираем их из автозагрузки, посредством нажатия правой кнопки мыши по приложению и выбора пункта «Отключить».
Очистка папки Tem
В ОС Windows 10 имеется папка с временными файлами под названием Temp, файлы которой замедляют систему.
Очищаем папку и перезагружаем компьютер.
Очистка диска
Необходимо зайти в «Этот компьютер», кликнуть второй кнопкой мыши на значок системного/локального диска (обычно диск С), из списка выбрать пункт «Свойства», затем «Очистка диска».
В открывшимся окошке стоит выбрать те пункты, которые подлежат очистку (например, корзина, временные файлы интернета, загруженные файлы программ и очистка обновлений Windows).
Выбрав нужные пункты нажимаем «Очистить системные файлы».
Отключение ненужных служб
Для вызова «Выполнить»: кликаем на «Пуск» правой кнопкой мыши или вызываем сочетание клавиш Win+R, и в списке ищем «Выполнить».
При появлении диалогового окна «Выполнить» вписываем в строку ввода: services.msc
Потом жмем «Ок».
Откроется окно «Службы». Стоит остаться в режиме «Расширенный», чтобы располагать большей информацией.
Ищем ненужную службу и кликаем на нее правой кнопкой мыши, далее кликаем на «свойства» и нажимаем на кнопку «Остановить» (ниже будет приведен список служб, которые можно отключить).
Список служб, которые можно отключить можно найти по ссылке.
Если некоторые службы из списка отсутствуют, значит они отсутствуют в вашей сборке.
Настройка схем электропитания
Правой кнопкой мыши нажимаем на значок «Пуск» и жмем «Параметры».
Заходим в «Система», жмем пункт «Питание и спящий режим», далее «Дополнительные параметры питания».
В открывшимся окошке электропитания выбираем «Высокая производительность», в случае мощного железа «Максимальная производительность».
Существует также второй способ входа в пункт «Электропитания», через значок батареи, если у вас ноутбук.
Несколько простых советов:
- Проверка компьютера на вирусы с помощью встроенного или стороннего антивируса. Для этого хорошо подойдет AdwCleaner, установили почистили и удалили, если не хотите захламлять ОС.
Существует множество вирусов, влияющих на быстродействие системы, особенно различные крипто майнеры.
- Очистка комплектующих ПК/ноутбука. Следует аккуратно очистить компьютер от пыли, не задевая мелких деталей. Также на производительность компьютера хорошо скажется замена термоинтерфейса.
Если у вас недостаточно навыков для этого, доверьтесь специалистам.
- Использование стороннего софта для очистки ненужного кэша, временных файлов и прочего мусора. Главное условие — это скачивание с проверенных источников, а лучше с официального сайта. Например, Ccleaner.
- Обновление драйверов. Можно осуществить как через «Центр обновлений», так и через сторонний софт, например, DriverPack Solution.
При установке всегда проверяйте «галочки», где вам предлагают скачать доп. софт.
Настройка визуальных эффектов рабочего стола
Заходим в «Пуск», папка Служебные-Windows, далее нажимаем на «Панель управления».
Далее «Система и безопасность», «Система».
В «Системе» нажимаем на «Дополнительные параметры».
В открывшимся окне «Свойства системы», в листе «Дополнительные» кликаем на «параметры быстродействия».
Кликаем на «Обеспечить наилучшее быстродействие», тут же все галочки спадают.
Есть одно «НО», если вы работаете с картинками или фотографиями «Вывод эскизов вместо значков» вам пригодится, поэтому его стоит оставить. Также стоит оставить такой параметр, как «Сглаживание неровностей экранных шрифтов», поскольку без них текст будет «резать» глаза.
Способов повышения быстродействия ПК/ноутбука достаточно много. Зачастую методы, достаточно, простые и их можно спокойно применять обычному «Юзеру». При хорошем быстродействии ОС пользование ПК приносит удовольствие и не вызывает раздражения. Самое главное не стоит использовать сомнительные способы, при котором состояние компьютера ухудшится.
Разбираемся, как работают операционные системы
Linux, Windows, Mac OS? Зачем они нужны? Понимание того, как работают операционные системы, поможет создавать качественные приложения.
Есть несколько причин, почему программистам стоит знать, как работают операционные системы. Одна из них – чтобы понимать, как работают программы. Представьте: вы пишете код, который кажется рабочим, но программа тормозит. Что делать? Можно попробовать разобраться с ограничениями операционной системы, но вы ведь не умеете!
Если стремитесь построить карьеру программиста, стоит понять, как работают операционные системы. Например, можно изучить курс «Введение в операционные системы» от Georgia Tech. В нем рассказывается, как работают ОС: механизмы работы, параллельное программирование (потоки и синхронизация), взаимодействие между процессами, распределённые ОС.
Осветим 10 наиболее важных принципов, о которых говорилось в курсе Udacity, и разберемся, как же работают операционные системы.
Это первое, о чем нужно задуматься, если вы решили разобраться, как работают операционные системы. ОС представляют собой набор программного обеспечения. Это ПО управляет компьютерным оборудованием и предоставляет техническую базу для программ. А ещё они управляют вычислительными ресурсами и обеспечивают защиту. Главное, что у них есть, – это доступ к управлению компонентами компьютера.
Файловая система, планировщик и драйверы – всё это основные инструменты работы ОС.
Существует три ключевых элемента операционной системы:
- Абстракции (процессы, потоки, файлы, сокеты, память).
- Механизмы (создание, управление, открытие, запись, распределение).
- Реализации (алгоритмы LRU, EDF).
Кроме того, есть два основных принципа проектирования операционных систем:
- Максимальная гибкость: отделение механизмов от конкретных реализаций.
- Ориентация на пользователей: на каких устройствах будет работать ОС, что нужно пользователю, каковы требования к производительности.
Теперь подробнее разберём глобальные концепции, которые помогут сформировать понимание того, как работают операционные системы.
Процесс – не что иное, как исполнение программы. Так как программа записана в виде последовательности действий в текстовый файл, процессом она становится только при запуске.
Загруженная в память программа может быть условно разделена на четыре части: стек, кучу, контекст и данные.
- Stack: стек процесса содержит временные данные, такие как параметры метода, адрес возврата и локальные переменные.
- Heap: это динамически распределяемая память процесса времени его выполнения.
- Text: хранит состояние регистров, состояние программного счетчика, режим работы процессора, незавершенные операции ввода-вывода, информацию о выполненных системных вызовах.
- Data: раздел содержит глобальные и статические переменные.
Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут различаться в разных операционных системах.
Общая картина выглядит так:
- Start: начальное состояние при создании процесса.
- Ready: процесс ожидает исполнения на процессоре. В течение работы процессор может переключаться между процессами, переводя одни в режим готовности, другие – в режим исполнения.
- Running: выполнение инструкций.
- Wait: процесс переходит в состояние ожидания. Например, ждёт ввода данных или получения доступа к файлу.
- Terminated: как только процесс завершится, он перейдёт в это состояние и будет ожидать удаления.
Немного терпения: мы уже близки к пониманию того, как работают операционные системы ;)
Блок управления процессов (Process Control Block) – это структура данных, поддерживаемая операционной системой для каждого процесса. PCB имеет идентификатор PID. Именно PCB хранит всю информацию, необходимую для отслеживания процесса.
- Process ID: идентификатор каждого из процессов в ОС.
- State: текущее состояние процесса.
- Privileges: разрешения доступа к системным ресурсам.
- Pointer: указатель на родительский процесс.
- Priority: приоритет процесса и другая информация, которая требуется для планирования процесса.
- Program Counter: указатель на адрес следующей команды, которая должна быть выполнена.
- CPU registers: регистры процессора, необходимые для состояния исполнения.
- Accounting Information: уровень нагрузки на процессор, статистика и другие данные.
- I/O Information: список ресурсов, использующих чтение и запись.
Поток (нить, thread) – это ход исполнения программы. Он также имеет свой program counter, переменные, стек.
Потоки одной программы могут работать с одними данными, а взаимодействовать между собой через код.
Поток – это легковесный процесс. Вместе они обеспечивают производительность приложений и ОС за счет параллелизма на уровне программы.
Каждый поток относится к какому-то процессу и не может существовать без него. Сегодня потоки широко применяются в работе серверов и многопроцессорных устройств с общей памятью.
Чем хороши потоки:
- Они минимизируют время переключения контекста (процессора).
- Их использование обеспечивает параллелизм процесса.
- Они эффективно общаются между собой.
- Потоки позволяют использовать многопроцессорные архитектуры в большем масштабе.
Потоки имеют два уровня реализации:
- Пользовательский уровень, то есть потоки, управляемые приложениями;
- Уровень ядра, то есть потоки, управляемые ядром операционной системы.
В первом случае ядро ​​управления потоками ничего не знает о существовании потоков вообще. А библиотека потоков просто содержит код для создания и уничтожения потоков, а также передачи сообщений и данных между ними для планирования выполнения потоков и сохранения (восстановления) контекстов потоков.
Во втором случае ядро выполняет создание потоков, а ещё планирование и управление в пространстве ядра. Заметим, что потоки ядра обычно медленнее, чем потоки пользователей.
Планировщик – это часть менеджера процессов, которая ответственна за переключение между процессами и выбор очереди по какой-либо стратегии.
ОС поддерживает все блоки управления процессом (PCB) в очередях планирования процесса:
- Очередь задач (job queue) поддерживает все процессы в системе.
- Очередь ожидания (ready queue) хранит информацию обо всех процессах, находящихся в основной памяти в состоянии ожидания. В эту очередь попадают и новые процессы.
- Очереди из устройств (device queue) – это процессы, заблокированные из-за недоступности устройств ввода-вывода.
ОС может использовать разные методы реализации для управления очередями (FIFO, Round Robin, Priority). Планировщик ОС определяет, когда и как перемещать процессы между готовыми и запущенными очередями (могут иметь только одну запись на ядро ​​процессора в системе). На приведенной выше диаграмме он был объединен с процессором.
Модели состояния делятся на активные и неактивные:
- Активные: при создании нового процесса он переходит в класс активных.
- Неактивные: процессы, которые не выполняются, а ждут завершения других процессов. Каждая запись в очереди является указателем на конкретный процесс. Очередь реализуется с использованием связанного списка. Использование диспетчера заключается в следующем: когда процесс прерывается, то переносится в очередь ожидания. Если процесс завершен или отменен – он отменяется вовсе.
Переключение контекста – это механизм сохранения (в PCB) и восстановления контекста процессора с ранее запущенного промежутка времени. При использовании этого метода, коммутатор контекста позволяет использовать один процессор для нескольких действий одновременно. Кстати, контекстное переключение является неотъемлемой частью многозадачной операционной системы.
Когда планировщик переключает процессор с одного процесса на другой, состояние из текущего запущенного процесса сохраняется в блоке управления. Затем состояние для следующего процесса загружается из своего PCB в регистры процессора. Только потом второй процесс может быть запущен.
При переключении следующая информация сохраняется для последующего использования: счетчик программы, информация планировщика, значение регистра базы и лимита, используемый в настоящее время регистр, измененное состояние, информация о состоянии ввода и вывода, учетная информация.
Ещё одна важная часть – та, что отвечает за все операции по управлению первичной памятью. Существует менеджер памяти, который обрабатывает все запросы на получение памяти и высвобождение. Он же следит за каждым участком памяти, независимо от того, занят он или свободен. И он же решает, какой процесс и когда получит этот ресурс.
Адресное пространство процесса – набор логических адресов, к которым программа обращается в коде. Например, если используется 32-битная адресация, то допустимые значения варьируются от 0 до 0x7fffffff, то есть 2 Гб виртуальной памяти.
Операционная система заботится о том, чтобы сопоставить логические адреса с физическими во время выделения памяти программе. Нужно также знать, что существует три типа адресов, используемых в программе до и после выделения памяти:
- Символьные адреса: или по-другому адреса, используемые в исходном коде. Имена переменных, константы и метки инструкций являются основными элементами символического адресного пространства.
- Относительные адреса: компилятор преобразует символические адреса в относительные адреса.
- Физические адреса: загрузчик генерирует эти адреса в момент загрузки программы в основную память.
Виртуальные и физические адреса одинаковы как в процессе загрузки, так и во время компиляции. Но они начинают различаться во время исполнения.
Набор всех логических адресов, которые создала программа, называется логическим адресным пространством. Набор всех физических адресов, соответствующих этим логическим адресам, называется физическим адресным пространством.
Хотите разобраться подробнее в том, как работают операционные системы? Посмотрите соответствующие книги в нашем Телеграм-канале.
Существует два типа процессов: независимые и взаимодействующие. На независимые не оказывается влияние процессов сторонних, в отличие от взаимодействующих.
Можно подумать, что процессы, которые работают независимо, выполняются эффективнее, но зачастую это не так. Использование кооперации может повысить скорость вычислений, удобство и модульность программ.
Межпроцессная коммуникация (IPC) – это механизм, который позволяет процессам взаимодействовать друг с другом и синхронизировать действия. Связь между этими процессами может рассматриваться как сотрудничество.
Процессы могут взаимодействовать двумя способами: через общую память или через передачу сообщений.
Метод использования общей памяти
Допустим, есть два процесса: исполнитель (производитель) и потребитель. Один производит некоторый товар, а второй его потребляет. Эти два процесса имеют общее пространство или ячейку памяти, известную как «буфер». Там хранится элемент, созданный исполнителем, оттуда же потребитель получает этот элемент.
Однако у этих версий есть как минимум две значимые проблемы: первая известна как проблема безграничного буфера: исполнитель может продолжать создавать элементы без ограничений на размер буфера. Вторая заключается в том, что исполнитель, заполнив буфер, переходит в режим ожидания.
В задаче с ограниченным буфером у исполнителя и потребителя будет общая память. Если общее количество произведенных товаров равно размеру буфера, то исполнитель будет ждать их потребления.
Аналогично потребитель сначала проверит наличие товара, и если ни один элемент не будет доступен, придётся ждать его освобождения.
Метод анализа сообщений
С помощью этого метода процессы взаимодействуют друг с другом без использования общей памяти. Допустим, есть два процесса, p1 и p2, которые хотят взаимодействовать друг с другом. Они работают следующим образом:
- Устанавливается связь (если её ещё не существует).
- Начинается обмен сообщениями с помощью базовых примитивов. Нам нужно как минимум два примитива – отправить (сообщение, пункт назначения) или получить (сообщение).
Размер сообщения может быть фиксированным или переменным. Проектировщикам ОС проще работать с сообщениями фиксированного размера, а программистам – переменного. Стандартное сообщение состоит из двух частей – заголовка и тела.
Одной из важнейших задач операционной системы является управление различными устройствами ввода и вывода вроде мыши, клавиатуры, дисководов, etc.
Система ввода и вывода принимает запрос приложения на ввод или вывод данных, а затем отправляет его на соответствующее физическое устройство. После возвращает приложению полученный ответ. Устройства ввода и вывода можно разделить на две категории:
- Блочные: то есть устройства, с которыми драйверы связываются, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key.
- Символьные: те устройства, с которыми драйвер связывается, отправляя и получая одиночные символы (байты или октеты). Например, последовательные порты, параллельные порты, звуковые карты и так далее.
ЦПУ должен иметь способ передачи информации на устройство ввода-вывода и обратно. И есть три способа сделать это:
- Специальные инструкции
Особые, неуниверсальные инструкции процессора, внедренные специально для контроля устройств ввода-вывода. Они позволяют отправлять данные на устройство и считывать их оттуда.
- Входы и выходы с отображением памяти
Когда используется ввод-вывод с отображением памяти, одно и то же адресное пространство разделяется памятью и устройствами ввода-вывода. Устройство подключается непосредственно к ячейкам памяти так, чтобы можно было передавать блок данных без применения ЦПУ.
- Прямой доступ к памяти (DMA)
Медленные устройства, такие как клавиатуры, генерируют прерывания ЦПУ после передачи каждого байта. Если бы быстрые устройства работали похожим образом, то ОС бы тратила большую часть времени впустую, на обработку этих прерываний. Поэтому для снижения нагрузки обычно используется прямой доступ к памяти (DMA).
Это означает, что ЦПУ предоставляет модулю ввода и вывода полномочия для чтения или записи в память. Сам модуль управляет обменом данными между основной памятью и устройством ввода-вывода. ЦПУ участвует в начале и конце передачи, а прерывается только после полной передачи блока.
Организация прямого доступа к памяти требует специального оборудования, называемого контроллером DMA (DMAC). Он управляет передачей данных и доступом к системной шине. Контроллеры запрограммированы с указателями источника и места назначения, счетчиками для отслеживания количества переданных байтов и прочими настройками.
Технология, которая позволяет создавать несколько сред или выделенных ресурсов из единой физической аппаратной системы называется виртуализация
Программное обеспечение, гипервизор, напрямую подключается к этой аппаратной системе и позволяет разбить ее на отдельные, безопасные среды – виртуальные машины. По идее, гипервизор должен аппаратные ресурсы между виртуальными машинами так, чтобы процессы выполнялись быстрее.
Физическая машина с гипервизором называется хостом, а виртуальные машины, которые используют ресурсы данного хоста – гостями. Для них ангаром ресурсов являются процессор, память, хранилище. Для получения доступа к этим ресурсам операторы управляют виртуальными экземплярами.
В идеале, все связанные виртуальные машины управляются с помощью единой веб-консоли управления виртуализацией. Она нужна, чтобы ускорять работу. Виртуализация позволяет определить, сколько вычислительной мощности и памяти выделять виртуальным машинам. Кроме того, так как виртуальные машины технически не связаны между собой, это повышает безопасность сред.
Проще говоря, виртуализация создает дополнительные мощности для выполнения процессов.
Типы виртуализации
- Данные: позволяет компаниям обеспечивать вычислительные мощности для объединения данных из нескольких источников, размещения новых источников и преобразования данных в соответствии с потребностями пользователя.
- Рабочий стол: легко спутать с виртуализацией операционной системы. Виртуализация рабочего стола позволяет центральному администратору одновременно развёртывать смоделированные среды на сотнях физических машин. Виртуальные системы позволяют администраторам выполнять массовые конфигурации, обновления и проверки безопасности на всех устройствах сразу.
- Серверы: программная имитация с помощью специального ПО аппаратного обеспечения компьютера: процессор, память, жесткий диск, и т. д. На такой виртуальный компьютер можно установить операционную систему, и она будет на нем работать точно так же, как и на простом, «железном» компьютере. Самое интересное достоинство этой технологии – это возможность запуска нескольких виртуальных компьютеров внутри одного физического. При этом, все виртуальные компьютеры могут работать независимо друг от друга.
Сервер – компьютер, спроектированный под выполнение большого объема специфических задач. Виртуализация сервера позволит ему выполнять больше этих специальных задач, а также разделить функционал на разные компоненты. - ОС: это способ одновременного запуска Linux и Windows-сред. Преимущество в том, что это уменьшает затраты на оборудование, повышает безопасность и экономит время на обслуживании.
- Сетевые функции: разделяет ключевые функции сети (например, службы каталогов, общий доступ к файлам и IP-конфигурацию) для распределения между средами. Виртуальные сети сокращают количество физических компонентов: коммутаторов, маршрутизаторов, серверов, кабелей.
Распределенная файловая система – это клиентское или клиент-серверное приложение, которое позволяет получать и обрабатывать данные. Они хранятся на сервере, как если бы они находились на персональном компьютере. Когда пользователь запрашивает файл, сервер отправляет ему копию запрашиваемого файла, который кэшируется на компьютере пользователя во время обработки данных, а затем возвращается на сервер.
Бывает так, что за одними и теми же данными одновременно обращаются сразу несколько пользователей. Для этих целей сервер должен иметь механизм организации обновлений, чтобы клиент всегда получал самую актуальную версию данных. Распределенные файловые системы обычно используют репликацию файлов или баз данных для защиты от сбоев.
Сетевая файловая система Sun Microsystems (NFS), Novell NetWare, распределенная файловая система Microsoft и DFS от IBM являются примерами распределенных файловых систем.
Распределенная общая память (DSM) – это компонент управления ресурсами распределенной операционной системы. В DSM доступ к данным осуществляется из общего пространства, аналогично способу доступа к виртуальной памяти. Данные перемещаются между дополнительной и основной памятью, а также между разными узлами. Изменения прав собственности происходят, когда данные перемещаются с одного узла на другой.
Преимущества распределенной общей памяти:
- Программистам можно не беспокоиться о передаче памяти между машинами, потому что перемещение данных можно скрыть;
- Можно передавать сложные структуры по ссылке, упрощая разработку алгоритмов для распределенных приложений;
- Это дешевле, чем многопроцессорные системы и может быть реализовано с использованием обычного оборудования;
- Можно использовать неограниченное количество узлов;
- Программы, написанные для мультипроцессоров с общей памятью, могут быть запущены в системах DSM.
Всё больше процессов переходит в облако. По сути, облачные вычисления – это своего рода аутсорсинг компьютерных программ. Используя облачные вычисления, пользователи могут получать доступ к программному обеспечению и приложениям из любого места. Это означает, что им не нужно беспокоиться о таких вещах, как хранение данных и питание компьютера.
Традиционные бизнес-приложения всегда были очень сложными, дорогими в обслуживании – нужна команда экспертов для установки, настройки, тестирования, запуска, защиты и обновления. Это одна из причин, почему стартапы проигрывают корпорациям.
Используя облачные вычисления, вы передаёте ответственность за аппаратное и программное обеспечение опытным специалистам, таким как Salesforce и AWS. Вы платите только за то, что вам нужно, апгрейд платежного плана производится автоматически по мере ваших потребностей, а масштабирование системы протекает без особых сложностей.
Приложения на базе облачных вычислений могут работать эффективнее, дольше и стоить дешевле. Уже сейчас компании используют облачные приложения для множества приложений, таких как управление отношениями с клиентами (CRM), HR, учет и так далее.
В заключение хочется ещё раз вернуться к тому, зачем вообще разбираться в том как работают операционные системы. Операционная система – это «мозг», который управляет входными, обрабатываемыми и выходными данными. Все остальные компоненты также взаимодействуют с операционной системой. Понимание того, как работают операционные системы, прояснит некоторые детали и в других компьютерных науках, ведь взаимодействие с ними организуется именно средствами ОС.
Источник: Как работают операционные системы: 10 концептов, которые нужно знать разработчикам on Medium.
О работе ПК на примере Windows 10 и клавиатуры ч. 1 / Хабр
Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Насколько глубоко мы погрузимся в тему?
Давайте для начала в общих чертах поговорим об уровнях на которых можно рассматривать компьютер. Каждый уровень основывается на предыдущем. Начнём с самого верха.
Уровень прикладных программ. Здесь находятся все пользовательские приложения, это браузер, Microsoft Office, блокнот, а также веб-сервер IIS, SQL Server, различное middleware вроде Java и .Net и все скриптовые языки, будь то Ruby, PHP или Bat-файлы.
Уровень операционной системы. ОС можно рассматривать как:
- Менеджер ресурсов — память, жёсткие диски, принтеры, экран, клавиатура ограниченные ресурсы которые совместно используются запущенными на компьютере программами.
- Виртуальная машина — файл это наглядный пример виртуального объекта. Он представляет абстракцию данных на диске, API для работы с ним и так же добавляет концепцию прав доступа. Вместо файла могла быть концепция контейнера данных и совершенно другого API. Таких виртуальных объектов в ОС много.
- Платформа — ОС предоставляет программные модели и примитивы для построения программ. К примеру Windows Drivers Framework позволяет быстро разрабатывать драйвера, окна в Windows используются для построения сложных пользовательских интерфейсов. Dll — предоставляет модель расширения функционала программы через плагины, а так же механизм для реализации читалки экрана через ловушки клавиатуры (см. LowLevelKeyboard hook).
Уровень архитектуры компьютера. Он представлен материнской платой, которая имеет определённый форм-фактор, встроенные функции закодированные в микросхемах называемых чип-сетом и порты, через которые можно расширять функционал компьютера подключив графическую карту, сетевую карту, дополнительную оперативную память (RAM), жёсткие диски, клавиатуру и пр. Порты влияют на скорость работы и возможности компьютера, что и будет определять его назначение будь то сервер для обработки тысяч запросов в секунду, планшет для пользования Интернетом или игровой ПК с несколькими видеокартами. ОС абстрагирует особенности материнской платы.
Микросхемы выглядят как на картинке ниже и представляют собой мини-компьютер выполняющий простые программы для низкоуровневых задач, к примеру прочитать данные от клавиатуры и передать их дальше чтобы они достигли в конечном счёте процессора. Как правило реализованы в виде аналоговой непрограммируемой микросхемы или микроконтроллера, программируемого на языке С.
Материнскую плату можно рассматривать как колонию микросхем которые общаются между собой через шины и через них циркулируют данные от подключенных устройств к процессору и обратно. Чип-сет — это своего рода нервная система компьютера. Все чипы на материнской плате были изначально созданы чтобы работать друг с другом. Некоторые из них могут иметь особые функции, к примеру таймер или хранение настроек BIOS. Пожалуй самый важный из них тот что имеет встроенную программу (прошивку, BIOS, UEFI) которая начинает выполняться как только появляется электричество. Она находит жёсткий диск с загрузчиком Windows и передаёт тому управление который в свою очередь запускает исполняемый файл ОС, который можно назвать Windows10.exe, на самом деле NtOsKrnl.exe. BIOS знает что искать благодаря соглашению между производителями железа и операционных систем.
Вокруг материнской платы можно собрать мобильный телефон, игровую приставку, серверную станцию или умное устройство. На картинке ниже распространённые форм-факторы материнских плат.
Уровень микроархитектуры представлен процессором (CPU), это сердце материнки и весь чип-сет нужен для обслуживания CPU. Процессор это компьютер в компьютере, более мощный и продвинутый микроконтроллер которому не нужна прошивка, потому как поток команд подаётся на лету, когда планировщик потоков поменял контекст процессора. Функционал процессора делится на подсистемы, к примеру компонент занимающийся математическими и логическими операциями, математический сопроцессор, кэш. Какие-то из них раньше были отдельным чипом на материнской плате, но сейчас их сделали частью ЦПУ, например контроллер прерывания и микросхема под названием “Северный мост” что увеличило скорость работы.
Микроархитектура это не то же самое что архитектура. Весь функционал CPU разделён на компоненты, которые работают сообща. Эти компоненты и их взаимодействие и есть микроархитектура. На блок-схеме ниже они представлены цветными прямоугольниками и квадратиками.
Архитектура процессора это по сути документ который описывает какой функциональностью он должен обладать для того чтобы соответствовать к примеру архитектуре x86, x64 или ARM применяемой на мобильных устройствах. В этом документе описано какие должны поддерживаться команды, назначения регистров и логика работы. Создатели процессоров Intel, AMD, Эльбрус могут реализовывать эту функциональность как угодно и добавлять к ней новые возможности в виде команд, регистров, флагов, прерываний и если ОС знает о них то может использовать. В терминах ООП архитектура ЦПУ — это интерфейс, а микроархитектура — его реализация.
Логические схемы. Цветные прямоугольники с блок-схемы CPU состоят из логических схем, которые производят свои операции на последовательностях нулей и единиц. Процессор видит все данные и команды в виде битов (0 и 1), по формуле любое десятичное число можно представить в виде последовательности 0 и 1, а вот что значит конкретное число зависит от контекста. Это может быть код, цифра, буква. Арифметическое и логическое устройство (ALU) умеет производить сложение двух чисел через побитовые операции. Побитовые алгоритмы сложения, вычитания, умножения и деления давно известны, разработчикам логической схемы их только надо эффективно реализовать.
Цифровые схемы работают с данными на уровне нулей и единиц, а аналоговые полагаются на эксплуатирование законов физики. Они выполняют простейшие манипуляции над битами, такие как сдвиги, AND, OR, XOR. Через эти примитивы реализуются более сложные операции. На картинке ниже представлен аналоговый оператор AND реализованный через транзисторы. На выходе схемы ненулевое напряжение будет только если оно есть на обоих входных контактах (Вх1 и Вх2), иначе ноль вольт. Точно так же работает оператор && в C#. Цифровые схемы в конечном счёте основаны на аналоговых. Физически логические элементы в логических схемах могут быть реализованы не только электронными но и механическими, гидравлическими, оптическими и другими способами.
Уровень радиоэлементов. Физически аналоговые схемы полагаются на радиоэлементы, которые собственно и эксплуатируют законы физики. Преимущественно это полупроводники, т.е. в определённых условиях они могут проводить электричество, а могут и нет. Диод проводит ток только в одном направлении, если его выпаять, развернуть на 180 и впаять обратно, то ток через него проходить не будет. Транзистор пропускает ток только если есть напряжение на управляющей ножке. Человечество научилось делать транзисторы микроскопическими и потому их можно размещать на маленькой плате миллионами. На картинках ниже полупроводниковые радиоэлементы и обычный транзистор рядом с нано транзистором под электронным микроскопом.
Уровень законов физики. И наконец самый нижний уровень — это уровень законов физики которые заключены в полупроводниковые радиоэлементы.
Мы будем много говорить про уровень ОС и чуть меньше про архитектуру компьютера, микроархитектуру, аналоговые схемы и радиоэлементы. К последней части у вас должно быть понимание как это всё работает вместе.
Основы Операционной Системы
Когда мы проходили в универе программирование на ассемблере у многих студентов был ступор от таких умных слов как “режимы ядра и пользователя”, под которыми на самом деле скрывается хорошо всем известная ролевая система аутентификации, на всех сайтах есть как минимум “Админ” имеющий доступ ко всем страницам и “Пользователь” имеющий ограниченный доступ. Точно так же роль “Ядро” имеет доступ ко всем возможностям CPU, а роль “Пользователь” может вызывать не все команды процессора и не со всеми аргументами. Поверх этой ролевой модели по принципу клиент-серверной архитектуры построена операционная система, где сервер это ядро, которое и реализовывает функционал ОС, а клиент — это пользовательские программы. В мире Web клиент и сервер разделены физически — это два разных компьютера общающихся по сети. В ОС клиент и сервер живут на одной машине и на одном железе. У сервера есть некий API который позволяет клиентам изменять его состояние, к примеру Twitter API позволяет создавать посты, логиниться и загружать ленту твитов в мобильный клиент. У Windows есть Win API, только более громоздкий в виду более широкого круга задач, на сегодняшний день у винды примерно 330 000 API плюс API для UWP apps. Если концепции Твитера более менее всем понятны — пост, пользователь, фид — то концепции ОС могут потребовать некоторого углубления в её внутренности. Поэтому API Windows могут быть трудно понятными без понимания внутреннего устройства ОС.
На самом деле под ядром понимают три разные вещи. Ядро как весь код ОС. Ядро как подсистема которая отвечает за механизмы ОС, такие как планировщик потоков, переключение контекста, обработка прерываний, свап виртуальный памяти на физическую (Kernel) и ядро подсистемы для поддержки других ОС — CSRSS.exe (Windows), PSXSS.exe (POSIX), OS2SS.exe (OS/2) или WSL (Windows SubSystem for Linux). В данном контексте понимается первый смысл — весь код ОС.
Когда на экране появляется окно, то в серверной части ОС (режим ядра) появляется структура данных которая описывает это окно — его положение на экране, размеры, текст заголовка, оконная функция через которую ОС даёт приложению среагировать на события. Поскольку подсистем в ОС много, то и структур данных описывающих один объект может быть несколько, к примеру информация о пользовательском процессе есть в компонентах:
- Executive — здесь логика работы ОС. В этом слое проверяется что могут и не могут делать процессы. Здесь хранится инфа о родительском процессе, параметры старта процесса (Process Environment Block), привязанный аккаунт пользователя, имя exe файла процесса.
- Kernel — здесь реализованы механизмы ОС, такие как планировщик потоков. Здесь хранится сколько времени процесс проводит в режиме пользователя и ядра, к каким процессорам привязаны его потоки, базовый приоритет потоков процесса.
- Windowing subsystem — инфа о GDI объектах которые используются для рисования в окне. Это такие примитивы как кисти, pen и пр.
- DirectX — всё что имеет отношение к DirectX: шейдеры, поверхности, DX-объекты, счётчики производительности GPU, настройки памяти графической памяти.
- Подсистема Windows которая представлена процессом CSRSS.exe (Client Server Runtime SubSystem). Windows ранее поддерживал ОС POSIX (процесс PSXSS.exe) и OS/2 (OS2SS.exe). В те времена возникла идея сделать и Windows такой же подсистемой, но эта было медленно и поэтому скоро часть CSRSS.exe перенесли в win32k.sys, который сейчас разбит на несколько файлов — win32k.sys, win32kbase.sys и win32kfull.sys. Здесь хранится информация о Process Group Data, Shutdown level, Session Data и пр.
Поддержка POSIX и OS/2 скорее была формальной, потому как для переноса программы с этих ОС нужно было найти исходный код и перекомпилировать его специальным образом чтобы получился exe-файл в котором все вызовы к API ОС перенаправлялись в PSXdll.dll (NETAPI.DLL и DOSCALLS.DLL для OS/2 и User32.dll для Windows приложений), которая была тонкой обёрткой над API Windows. Состояние некоторых API хранилось в процессе подсистемы PSXSS.exe (OS2SS.exe). Поскольку не все API можно сопоставить 1 к 1, то работала такая программа нестабильно. В Windows 10 была добавлена поддержка Linux и она работает совсем по-другому. Подсистема Linux хостится в режиме ядра и разница между Windows Subsystem for Linux и Linux примерно как между разными билдами. Специально для WSL был введён новый тип процессов — PICO-process.
Что такое компонент? Это логически сгруппированный функционал. Компонентом можно назвать ООП-класс, dll, папку, набор функций с общим префиксом, пространство имён, слой в архитектуре.
Более подробно о разделении на клиент-сервер
Разделение на клиент и сервер реализовано при помощи встроенной функциональности CPU, разделения памяти и программных проверок.
Производители оборудования сотрудничают с разработчиками ОС, поэтому в процессоре есть механизмы созданные с учётом потребностей создателей операционных систем. Во всех современных процессорах реализован механизм ролей пользователя, где под пользователем понимается исполняемый в данный момент код. В веб приложениях роль залогиненого пользователя хранится в какой-то переменной и помимо понятного названия Admin или User имеет Id этой роли который чаще и используется при авторизации, потому как сравнивать числа быстрее и проще чем строки. В процессоре роль текущего пользователя хранится в поле которое называется “кольцо безопасности” (Security Ring), а не “CurrentUser.Role.Id”. В большинстве процессоров это поле принимает четыре значения от 0 до 3. Windows использует 0 для роли которая называется “Режим Ядра”, потому как это самый привилегированный режим и самое большое значение для роли “Режим Пользователя”, потому как это самая ограниченная роль. Остальные роли не используются потому как различие между 0 и 1, 2 и 3 незначительное. Эти роли ограничивают страницы памяти которые могут быть адресованы, нельзя вызывать некоторые инструкции или же нельзя их вызывать с определёнными аргументами. Так же есть ограничения на использование технологии I/O Ports для обмена данными с устройствами такими как клавиатура, но она уже лет 10 не используется. Переключение в режим ядра происходит через команду syscall, которая по индексу находит в массиве указателей на APIs Windows функцию которую надо вызвать. Указатель на этот массив сохраняется в специальном регистре процессора во время загрузки ОС.
Я специально назвал регистр ЦПУ полем. Когда вы пишете программу на C#, то можете добавлять сколько угодно полей в свой класс и давать им понятные названия. У процессоров и микроконтроллеров поля называются регистрами. Когда вы проектируете железку то нужно уже на этом этапе понять сколько регистров (полей) надо, какого размера они должны быть и какой функционал на них возложить, чтобы этого хватало на все случаи жизни для всех мыслимых и немыслимых ситуаций. Представьте, что вам надо написать программу на C#-подобном языке программирования у которого в классе 16 предопределённых полей и вы не можете использовать локальные переменные. Т.е. одно и то же поле может использоваться для хранения залогиненного пользователя, отсортированного массива, временных данных или результата выполнения метода. Имена таких полей должны быть максимально общими, вместо tempData, funcResult будут странные имена EAX, AH, AL, DX и пр. Если бы вы писали на C# эмулятор процессора на архитектуре x86, то код мог бы выглядеть примерно так (DIV — divide, команда целочисленного деления):
Для иллюстрации я добавил проверку на режим ядра. Если происходит ошибка деления на ноль, то процессор уведомляет об этому ОС через прерывание (выбрасывает событие). Во время загрузки ОС предоставляет процессору одномерный массив указателей на функцию, который называется вектор прерываний, где каждому индексу соответствует какое-то событие к примеру деление на ноль. ОС знает архитектуру процессора на котором исполняется и может соответствующим образом упорядочить в массиве указатели на функции. CPU вызывает эту функцию и ОС свой код. К примеру Windows смотрит в реестре установлен ли отладчик и показывает сообщение о том что произошла ошибка и есть возможность запустить дебаггер чтобы посмотреть на место где она произошла. Прерывание называется прерыванием потому как оно вклинивается в нормальный ход выполнения программы и даёт возможность выполнится обработчику прерывания и только после его завершения процессор может вернуться к исполнению программы.
Прерывания могут генерироваться не только процессором но и внешними устройствами (клавиатура, мышь) или программным кодом. Планировщик потоков устанавливает таймер который с интервалами равными одному кванту (по умолчанию около 15мс, в Windows Server больше) генерирует прерывание чтобы по внутреннему алгоритму назначить другой поток на исполнение. Пошаговое исполнение программы в Visual Studio так же полагается на механизм прерываний — у процессора устанавливается флаг, который после каждой команды вызывает прерывание которое обрабатывает Windows Debugging Engine и уведомляет через API Visual Studio.
Разделение памятью реализовано благодаря виртуальной памяти. Ранее я говорил что ОС это менеджер ресурсов и виртуальная машина. Даже если у вас 1Гб RAM 32х битный Windows будет работать так как если бы у вас было 4Гб оперативки, т.е. реально у вас 1Гб, а виртуально 4Гб. Современные компьютеры основаны на теоретической модели машины Тьюринга или же архитектуре фон Неймана (с некоторыми изменениями). Согласно этим моделям память в компьютере это лента состоящая из ячеек размером один байт. Эти ячейки сгруппированы в страницы как правило по 4096 байт (4Кб), потому как:
- С т. зр. CPU нет разницы между кодом и данными, что приводит к трудновыявляемым ошибкам и возможностям для взлома. Если регионы памяти пометить атрибутами по которым можно сказать, что здесь находится код, а здесь данные только для чтения, а сюда можно писать, то это решит указанные проблемы. Так же можно пометить страницы доступные только в режиме ядра.
- Поддержка виртуальной памяти процессором, который умеет копировать страницу виртуальной памяти в физическую. Физическая память RAM так же представлена в виде страниц по 4Кб. Кэш процессора считывает память из RAM страницами, потому как часто программа читает расположенные рядом данные.
- Кажется что процесс владеет всей доступной ему памятью, хотя реально его запросы на выделение динамической памяти (оператор new в С++) ОС удовлетворяет только когда процесс попытается прочитать/записать её. Exe-файл полностью не загружается в память, а отображается с диска и когда нужно исполнить код или считать данные они загружаются в память c диска. Эти механизмы основаны на страницах.
- Имитация эксклюзивного пользования RAM каждым процессом. Когда планировщик потоков назначает поток на выполнение он загружает в регистры процессора информацию о мапинге виртуальных страниц процесса в физические страницы и когда код потока пытается прочитать/записать какой-то адрес процессор правильно его транслирует. Помимо процессов на эмуляцию эксклюзивности пользования RAM полагаются сессии, которые содержат код и данные специфичные для отдельного пользователя, к примеру глобальная очередь сообщений. В Windows 10 есть контекст потока, процесса и сессии.
Windows 10 использует ячейки вначале ленты для пользовательского пространства, а в конце — для самого себя (пространство режима ядра), в котором и хранятся объекты описывающие состояние системы.
64 битный адрес позволяет адресовать 16 экзабайт, это 18,446,744,073,709,551,616 ячеек памяти. Современные процессоры пока что не поддерживают так много RAM и поэтому используют только младшие 48 бит адреса, остальные 16 заполняются старшим разрядом. Поэтому Win x64 попросту не использует часть адресов, которые помечены на рисунке выше чёрным. Но это не значит, что 64х битный Windows “видит” 256 Tb оперативки. Максимум 8TB виртуальной памяти на архитектуре IA64 и 7TB на x64. Предел физической памяти поддерживаемой Windows 10 — 2TB, потому как с большим количеством Винда не тестировалась. Объём поддерживаемой RAM в Windows 10 определяется во многом редакцией ОС, чем дороже тем больше.
Почему ячейки памяти пронумерованы шестнадцатиричными (HEX) числами, а не десятичными или двоичными? Адрес ячейки это не просто порядковый номер, в нём закодировано три числа по которым эту ячейку можно отобразить на физическую память. Первые два это индексы по которым находится конкретная страница виртуальной памяти, а третье число — смещение от начала страницы. CPU и ОС здесь работают в связке — ОС предоставляет структуру данных по которой CPU находит страницу виртуальной памяти и копирует её в физическую. По HEX номеру можно сразу увидеть как выровнен в памяти адрес. Формат двоичного числа слишком громоздкий, 32 бита (или 64) трудны для восприятия. Десятичный формат — показывает слишком мало информации, тогда как HEX удобный компромисс между десятичной и двоичной системами, средами людей и машин.
Программный способ разделения на клиент-сервер (режим ядра-режим пользователя) гораздо скучнее перечисленных выше механизмов. Процессы и потоки могут быть помечены специальными аттрибутами или же мы можем хранить список указателей на потоки/процессы и проверять их в коде. Если вы хоть раз делали авторизацию в веб-приложении, то хорошо понимаете о чём я говорю.
Из чего состоит Windows?
Абстракция или же разбиение на компоненты есть во всех сферах программирования и интуитивно понятно что Windows тоже делится на какие-то компоненты. Под компонентом понимается какая-то единица функциональности — ООП класс, файл, dll, папка. Компоненты на диаграмме ниже могут быть как индивидуальными *.sys, *.dll файлами, так и просто набором API сгруппированным логически через добавление префикса к имени функции, старая часть системы написана на C, а он не поддерживает классы. Новые части пишутся нередко на C++. В укрупнённом виде Винда выглядит так:
Давайте быстренько пробежимся по её компонентам снизу вверх:
- Hyper-V Hypervisor — слой виртуализации благодаря которому в Windows можно создать виртуальную машину. Иногда говорят, что Hyper-V это минус первый уровень привилегий, однако реализован он в одном уровне привилегий и адресном пространстве что и ядро ОС, за счёт использования слоёной архитектуры ОС ничего не знает о нём.
- HAL.dll — Hardware Abtraction Layer — изначально задумывался как абстракция над железом — чипсет, материнская плата, процессор — для того чтобы можно было перенести Windows на новую платформу реализовав новый HAL.dll, который будет выбран и скопирован во время установки. По сути это драйвер к устройствам материнской платы, к примеру таймерам, контроллеру прерываний. Сейчас его роль снижена, потому как многие драйвера материнки и чип-сета реализованы в ACPI.sys.
Что такое Advanced Configuration and Power Interface? До 1996 года когда вы выключали компьютер через UI, ОС сохраняла состояние системы и потом показывала сообщение что можно отключать питание нажав кнопку на корпусе.
В 1996м году появился стандарт ACPI, который реализовывался производителями материнской платы и позволял софту управлять питанием всей машины, т.е. Самостоятельно отключать питание на компьютере либо пробуждать его ото сна. ACPI так же позволяет контролировать питание отдельных компонентов, таких как CD drive, т.к. большую часть времени он не работает. - Device Drivers — говорит само за себя. Драйвер это код скомпилированный в файл с расширением *.sys, он может содержать как код который работает со внешним устройством, так и к примеру код антивируса который сканирует процессы и системную память. Process Explorer от SysInternals так же полагается на драйвер для получения информации о процессах.
- Kernel — Kernel Mode Execution Environment, содержит обработчики прерываний, работа с таймерами, планировщик потоков, объекты синхронизации и пр. Здесь реализованы все механизмы ОС.
- Executive — Реализовывает логику работы ОС, можно сказать что это уровень бизнес-логики ОС.
- Windowing & Graphics — Система окон и DirectX для отрисовки всего что видно на экране.
- NtDll.dll — Эта библиотека выделена большим зелёным прямоугольником потому что загружается в память только один раз и потом отображается в память всех остальных процессов. В этой dll находится загрузчик программ, который отвечает за инициализацию запущенного процесса (в т.ч. загрузку dll) и потоков в нём. Nt понимается как Native, в том же смысле что и Native American. Т.е. это API ядра ОС, которое отделено от режима пользователя. Все функции экспортируемые из этой dll имеют префикс Nt (NtDestroyMenu). Некоторые Win API реализованы в режиме пользователя и они являются частью User32.dll. Как правило пользовательские приложения не используют напрямую функции из NtDll.dll, они обращаются к Nt* функциям через ещё один уровень абстракции (level of indirection) — subsystem dll такую как User32.dll или PSXdll.dll и DOSCALLS.DLL доступных в более старых версиях Windows. NtDll.dll предназначена в первую очередь для системных процессов (Session Management Sub System.exe, WindowsInititialize.exe и пр.), которые запускаются ещё во время загрузки ОС.
- SubSystem dlls — о них я уже сказал в предыдущем пункте. Все Windows приложения обращаются к ОС через User32.dll. Какие-то API реализованы в режиме пользователя и к примеру могут обращаться к системным процессам, другие же вызывают Nt* функции из NtDll.dll, к примеру CreateFile в конечном счёте вызывает NtCreateFile).
- Environment Subsystems — CSRSS.exe, подсистема Windows. Ранее тут были ОС POSIX (процесс PSXSS.exe) и OS/2 (OS2SS.exe). Windows Subsystem for Linux реализована совершенно по-другому.
- System Processes — это процессы которые выполняют различные системные фунции, к примеру LSASS.exe (Local Security Authority SubSystem) который отвечает за аутентификацию пользователей и другие.
- Service Processes — Раньше сервисы Windows (например Plug and Play Manager) работали в своих процессах и были *.exe файлами. Со временем появился процесс SvcHost.exe который может хостить сразу несколько компонентов, реализованных в виде *.dll-файлов. Поэтому почти все системные компоненты и переехали в SvcHost’ы.
- User Processes — пользовательские процессы. Те самые которые мы используем каждый день — браузеры, игры, офисные программы и пр. Они полагаются на описанную в предыдущих пунктах инфраструктуру.
На этом первую часть закончу. В следующей посмотрим откуда начинается путь клавиши.
Часть 2
Windows — что это такое?
Здравствуйте, начинающие пользователи компьютера! Вместе с вами постараемся разобраться в том, что такое Windows и зачем оно нам нужно.
Windows — это операционная система, сделанная корпорацией Microsoft (Майкрософт). Операционная система (ОС) — это главная программа, которая запускается при включении компьютера. Она позволяет пользователям компьютера работать с файлами, пользоваться Интернетом и запускать в окошках другие программы, игры, фильмы, музыку. Windows переводится как "окна".
Операционная система Windows платная. Если вы покупаете компьютер с уже установленной Windows, то часть денег вы платите за операционную систему. Для подтверждения того, что вы являетесь владельцем Windows, может потребоваться лицензионный ключ. Такое бывает, например, если вы переустановили Windows. Лицензионный ключ это набор символов вида "XXXXX-XXXXX-YYYYY-YYYYY-ZZZZZ". Он может быть указан в наклейке на корпусе вашего компьютера или на диске с Windows. Перепишите лицензионный ключ на листок и сохраните, может пригодиться. Наклейка выглядит примерно так:
Вместе с Windows на компьютер устанавливается набор программ, необходимых для повседневного использования:
- Калькулятор.
- Редактор Notepad (блокнот) для работы с текстовыми файлами.
- Редактор WordPad для работы с документами.
- Редактор картинок Paint.
- Браузер Edge или Internet Explorer для работы в Интернет.
- Проигрыватель видео и музыки.
- Антивирус от Microsoft (защитник).
- другие программы и даже игры.
Можно устанавливать другие программы и игры из Интернета или с дисков. Такие программы также могут быть платные.
История и разновидности Windows
Даты выхода ОС Windows для персональных компьютеров (ПК):
- Windows 1.0 (1985)
- Windows 2.0 - 2.1 (1987-1988)
- Windows 3.0 - 3.2 (1990-1994)
- Windows NT 3.1 - 3.51 (1993-1995)
- Windows 95 — Windows 4.0 (1995)
- Windows NT 4.0 (1996)
- Windows 98 — Windows 4.1 (1998)
- Windows 2000 — Windows NT 5.0 (1999)
- Windows ME — Windows 4.9 (2000)
- Windows XP — Windows NT 5.1 - 5.2 (2001-2005)
- Windows Vista — Windows NT 6.0 (2006)
- Windows 7 — Windows NT 6.1 (2009)
- Windows 8 — Windows NT 6.2 (2012)
- Windows 8.1 — Windows NT 6.3 (2013)
- Windows 10 — Windows NT 10.0 (2015-2019)
В последних версиях Windows есть сборки, отличающиеся функционалом и ценой:
- Home Edition — сборка для домашнего использования с простой конфигурацией.
- Professional — сборка с дополнительным функционалом для более продвинутых пользователей.
- Enterprise — корпоративная версия для организаций.
Интерфейс Windows
Интерфейс — это внешний вид операционной системы. У отдельных частей интерфейса есть свои названия.
- Рабочий стол — основное место, занимает большую часть экрана. Здесь можно располагать ярлыки.
- Панель задач — здесь можно закреплять программы, с которыми вы чаще всего работаете. Здесь же показываются открытые в данный момент программы, выбранный язык, дата и время.
- Кнопка ПУСК — при нажатии открывается меню для быстрого доступа к программам.
- Ярлык — картинка, при нажатии на которые открывается соответствующая программа или документ.
Кнопка ПУСК может также находиться на вашей клавиатуре.
Внешний вид меню ПУСК:
Ссылки
Linux — что это такое?
Разновидности операционных систем
Рассмотрим какие ещё бывают операционные системы, кроме Windows. Речь пойдёт об операционных системах для персональных компьютеров. Не будем акцентировать внимание на операционных системах для серверов, мобильных телефонов и специализированной техники.
- MacOS — операционная система от компании Apple. Установлена как основная операционная система на продуктах компании. Платная.
- Linux — операционная система распространяется бесплатно. Сложна в освоении, поэтому мало распространена. Имеет несколько разновидностей (модификаций), которые поддерживаются различными компаниями и сообществами, например:
- Ubuntu
- FreeBSD
- Fedora
- Elementary OS
- Chrome OS
- OpenSuse
- Linux Mint
- Mageia
- PCLinuxOS
- Manjaro
- Arch
- Puppy
- и ещё много других
Интересные факты об операционных системах
На одном компьютере может быть установлено одновременно несколько операционных систем. В этом случае при включении компьютера вас спросят, какую операционную систему нужно загрузить.
Microsoft Windows и ядро Linux могут быть запущены одновременно на одной и той же машине с помощью специального программного обеспечения CoLinux. В windows 10 уже появилась встроенная подсистема linux.
Для обучения пользователей обращению с мышкой в Microsoft разработали и внедрили в Windows компьютерную версию игры Reversi. Таким образом пользователи привыкали использовать мышь, кликая с её помощью на фишки. Задумайтесь, для чего сделана игра "сапёр"?
На рекламу Windows 95 было потрачено более 300 миллионов долларов.
В Windows нельзя создать папку с названиями con, prn, aux, nul. Это ограничение восходит относят к временам операционной системы MS-DOS. Некоторые слова были зарезервированы для обозначения устройств ввода-вывода, поэтому нельзя создать папки с такими именами.
Линус Торвальдс использовал операционную систему Minix, однако был недоволен многими ограничениями в ней и решил написать свою систему. Когда была выпущена более-менее стабильная версия, интерес Торвальдса к проекту угас, и он был готов его забросить. Но в тот же период он случайно испортил раздел на жёстком диске, где стояла Minix, и вместо её переустановки Торвальдс решил всё-таки закончить начатое. Так благодаря случайности появилось ядро Linux и впоследствии ОС GNU/Linux.
На данный момент более 75% серверов обеспечивающие надежную работу Интернет работают под управлением Linux.
MenuetOS — самая маленькая операционная система. Написана на ассемблере и помещается на дискету.
Советы по повышению производительности ПК в Windows 10
Вы можете повысить производительность, если освободите место на диске вашего компьютера.
Для проверки нехватки места на диске
-
Нажмите кнопку Start , затем выберите Settings > System> Storage .
Открыть настройки хранилища -
Ваши диски будут перечислены в области хранения.Обратите внимание на количество свободного места и общий размер для каждого диска.
Примечание: Если на вашем компьютере достаточно места, попробуйте следующий совет.
Вы можете использовать Storage Sense для удаления ненужных или временных файлов с вашего устройства, что также может освободить место.
Если вы включите Storage Sense, Windows автоматически освободит место, избавившись от ненужных файлов, включая файлы в корзине, когда у вас мало места на диске или через указанные вами промежутки времени.В приведенных ниже инструкциях показано, как удалить временные файлы, а также как включить и настроить Storage Sense.
Если вы не можете найти Storage Sense на своем устройстве, выполнив следующие действия, см. Раздел «Освобождение места с помощью очистки диска» ниже.
Примечание: Возможно, вы не захотите удалять временные файлы для повышения производительности. Хотя в настоящий момент эти файлы могут не использоваться, они помогают вашим приложениям загружаться и работать быстрее.
Удаление временных файлов с помощью Storage Sense
-
Нажмите кнопку Start , затем выберите Settings > System> Storage .
Открыть настройки хранилища -
Выберите Временные файлы в структуре хранилища. Примечание : Если вы не видите в списке временные файлы, выберите Показать больше категорий .
-
Windows потребуется некоторое время, чтобы определить, какие файлы и приложения занимают больше всего места на вашем компьютере.
-
Выберите элементы, которые хотите удалить, а затем выберите Удалить файлы .
Чтобы посмотреть, что находится в корзине, прежде чем очищать ее, откройте ее со своего рабочего стола. Если вы не видите значок корзины на рабочем столе, в строке поиска на панели задач введите корзина , затем выберите Корзина из списка результатов.
Примечание. Windows перемещает файлы, которые вы удаляете, в корзину на тот случай, если вы передумаете и они снова понадобятся вам в будущем. Возможно, вы сможете освободить значительный объем места, удалив файлы корзины, чтобы навсегда удалить файлы, которые вы ранее удалили.
Для включения и настройки Storage Sense
-
Нажмите кнопку Start , затем выберите Settings > System > Storage .
Открыть настройки хранилища -
В области хранения включите Storage Sense .
-
Выберите Configure Storage Sense или запустите его сейчас .
-
В области Storage Sense выберите, как часто вы хотите, чтобы Storage Sense запускался.
-
В области временных файлов выберите Удалить временные файлы, которые мои приложения не используют .
-
Выберите файлы, которые вы хотите удалить с помощью Storage Sense (вы можете выбрать файлы в корзине и в папке «Загрузки»), затем выберите соответствующие временные интервалы.
-
Прокрутите вниз и выберите Очистить сейчас .
-
Windows потребуется некоторое время для очистки ваших файлов, после чего вы увидите сообщение, показывающее, сколько места на диске было освобождено.
Если в вашей системе нет Storage Sense, вы можете использовать инструмент очистки диска, чтобы удалить временные файлы и системные файлы с вашего устройства.
Для запуска очистки диска
-
В поле поиска на панели задач введите очистка диска , затем выберите Очистка диска из списка результатов.
-
Установите флажок рядом с типом файлов, которые нужно удалить. (Чтобы просмотреть описание каждого типа файла, выберите имя.) По умолчанию выбраны загруженных программных файлов , временных файлов Интернета и эскизов .Не забудьте снять эти флажки, если вы не хотите удалять эти файлы.
-
Чтобы освободить еще больше места, выберите Очистить системные файлы . Очистка диска потребуется некоторое время, чтобы рассчитать объем пространства, которое можно освободить.
Примечание. Если с момента обновления до Windows 10 прошло менее 10 дней, ваша предыдущая версия Windows будет указана как системный файл, который вы можете удалить.Если вам нужно освободить место на диске, вы можете удалить его, но имейте в виду, что вы удаляете свою папку Windows.old, содержащую файлы, которые дают вам возможность вернуться к предыдущей версии Windows. Если вы удалите предыдущую версию Windows, это нельзя будет отменить. (Вы не сможете вернуться к предыдущей версии Windows.)
-
Выберите типы файлов, которые вы хотите удалить, выберите OK , затем выберите Удалить файлы в окне подтверждения, чтобы начать очистку.
Если ваш компьютер по-прежнему работает медленно, попробуйте удалить приложения, которые вы больше не используете.
Для удаления приложений, которыми вы больше не пользуетесь
-
Нажмите кнопку Start , затем выберите Settings > Apps > Apps & features .
Откройте настройки приложений и функций -
Найдите конкретное приложение или отсортируйте их, чтобы увидеть, какие из них занимают больше всего места.
-
Когда вы найдете приложение, которое хотите удалить, выберите его из списка и выберите Удалить .
-
Перезагрузите компьютер и посмотрите, улучшилась ли производительность.
Если ваш компьютер по-прежнему работает медленно, попробуйте переместить файлы на другой диск.
Если у вас есть фотографии, музыка или другие файлы, которые вы хотите сохранить, но не используете часто, подумайте о том, чтобы сохранить их на съемный носитель, например USB-накопитель.Вы по-прежнему сможете использовать их, когда диск подключен, но они не будут занимать место на вашем компьютере.
Для перемещения файлов на другой диск
-
Подключите съемный носитель к компьютеру.
-
Выберите File Explorer на панели задач и найдите файлы, которые хотите переместить.
-
Выберите файлы, перейдите к Home , затем выберите Перейти к > Выберите местоположение .
-
Выберите съемный носитель из списка расположений, затем выберите Move .
-
Перезагрузите компьютер и посмотрите, улучшилась ли производительность.
Дополнительные сведения об освобождении места на диске в Windows 10.
Если ваш компьютер по-прежнему работает медленно, попробуйте следующий совет.
.Как работает программирование на C | HowStuffWorks
Язык программирования C невероятно популярен, и легко понять почему. Программирование на C эффективно и дает программисту большой контроль. Многие другие языки программирования, такие как C ++, Java и Python, были разработаны с использованием C.
.С каждым днем ​​возрастают шансы, что если вы программист, вы не будете использовать C исключительно для своей работы. Однако в некоторых случаях изучение C очень полезно, даже если вы не используете его регулярно.Вот почему:
Вы сможете читать и писать код для программного обеспечения, которое можно использовать на многих различных типах компьютерных платформ, включая все, от небольших микроконтроллеров до настольных, портативных и мобильных операционных систем.
Вы лучше поймете, что языки высокого уровня делают за кулисами, например, управление памятью и сборку мусора. Это понимание может помочь вам писать программы, которые работают более эффективно.
Если вы специалист по информационным технологиям (ИТ), вам также может пригодиться изучение C. ИТ-специалисты часто пишут, поддерживают и запускают сценарии в рамках своей работы. Сценарий - это список инструкций для операционной системы компьютера. Для запуска определенных сценариев компьютер устанавливает контролируемую среду выполнения, называемую оболочкой . Поскольку большинство операционных систем запускают оболочки на основе C, C shell является популярной адаптацией сценариев языка C, используемой ИТ-специалистами.
В этой статье рассказывается история C, объясняется, почему C так важен, показаны примеры базового кода C и исследуются некоторые важные особенности C, включая типы данных, операции, функции, указатели и управление памятью. Хотя эта статья не является инструкцией по программированию на C, она охватывает то, что делает программирование на C уникальным, и выходит за рамки первых нескольких глав среднего руководства по программированию на C.
Давайте начнем с того, что посмотрим, откуда появился язык программирования C, как он развивался и какую роль он играет в разработке программного обеспечения сегодня.
.Как заставить старые программы работать в Windows 7
Каждая новая версия Windows ломает некоторые существующие приложения, и Windows Vista и Windows 7 не являются исключением. Никто не виноват, но это не поможет, если вам отчаянно нужно использовать одно конкретное приложение.
Вы всегда можете включить режим совместимости, который, например, сообщает программе, что она работает под Windows XP, а не под 7. Но если это не сработает - а это часто не получается - других встроенных опций нет.Если у автора программы нет решений, у вас может возникнуть соблазн полностью отказаться от проблемного приложения.
Однако может быть и другое возможное решение - набор инструментов для обеспечения совместимости приложений (ACT). Эта мощная утилита предоставляет гораздо больше возможностей и настроек, чем только режим совместимости, поэтому у вас больше шансов запустить старые программы на вашем новом ПК.
Его также легко использовать, он сам определяет, в чем могут быть проблемы и как их можно исправить.
Более того, ACT не только для устаревших приложений.Вы также можете использовать его для настройки последних программ, чтобы удалить раздражение Windows.
Вы устали видеть приглашение UAC каждый раз, например, при загрузке доверенного приложения? Набор средств обеспечения совместимости приложений может помочь вам отключить запросы только для нескольких программ, сохранив их для всего остального. Опять же, все очень просто в использовании.
Начало работы
Набор инструментов для обеспечения совместимости приложений доступен для загрузки на сайте Microsoft (выберите «ApplicationCompatibilityTookit Setup.Exe'). Это бесплатно и необычно для такого рода инструментов Microsoft, его размер составляет всего 12,2 МБ, поэтому его загрузка не займет много времени при самом летаргическом подключении к Интернету.
Запустите загруженный файл, чтобы начать установку. Здесь нет сложных вариантов, поэтому просто примите все настройки по умолчанию (кроме, возможно, места установки, если вам нужно использовать другой диск или папку), и различные компоненты программы будут установлены через несколько секунд.
После настройки ACT подумайте на мгновение о любых старых программах, которые вы запускаете на своем ПК с Vista или Windows 7.Есть ли такие, которые время от времени вызывают проблемы или запускаются в обычном режиме, но время от времени ведут себя неправильно? ACT включает в себя инструмент, называемый Standard User Analyzer, который будет отслеживать эту программу, отслеживать, что она делает, предупреждать вас о потенциальных проблемах и даже применять для вас соответствующие исправления.
Чтобы попробовать это, нажмите «Пуск> Все программы> Microsoft Application Compatibility Toolkit> Инструменты разработчика и тестера> Стандартный пользовательский анализатор». Когда появится SUA, нажмите «Обзор», затем перейдите к исполняемому файлу для своего старого приложения и выберите его.
Есть возможность добавить параметры командной строки, если они нужны приложению, но в противном случае нажмите «Запустить», чтобы запустить программу. Нажмите «Да», чтобы подтвердить, что можно удалить существующие журналы AppVerifier, и, если у вас нет других причин, установите флажок «Всегда удалять журналы, не спрашивая меня снова в будущем», чтобы убедиться, что вас не беспокоит этот вопрос. очередной раз.
Ваша проблемная программа должна запуститься. Если вам нужно выполнить определенные действия, чтобы заставить его вести себя неправильно, сделайте это.В противном случае запустите программу некоторое время в обычном режиме. Когда вы закончите, закройте его, и вы можете перейти к следующему шагу.
Меры по снижению рисков
Когда вы использовали свою программу, Microsoft Application Verifier работал в фоновом режиме, регистрируя подробности действий вашего приложения. Когда Standard User Analyzer обнаруживает, что вы закрыли программу, он загружает и анализирует этот журнал.
Это может занять некоторое время, поэтому наберитесь терпения - просто следите за полем «Отладочная информация», чтобы увидеть обновления статуса.По завершении вы увидите сообщение «Готово» и подсказку о том, что вы можете перейти на другие вкладки, чтобы просмотреть проблемы, обнаруженные SUA.
Вкладки, упомянутые здесь, находятся в верхней части окна SUA и выделяют потенциальные проблемы в различных областях программы: доступ к файлам, использование реестра, файлы INI и многое другое. Если рядом со всеми ними стоит ноль, SUA не обнаружил проблем и не может помочь.
Если на некоторых вкладках обнаружены ошибки, они будут выделены здесь (например, «Другие объекты (4)»).Вы можете щелкнуть вкладку, чтобы увидеть дополнительную информацию, но не ждите, что она многое объяснит - результаты очень технические.
Что еще более полезно, вы можете просто попросить SUA создать и развернуть средства защиты - настройки, которые Windows будет применять к этому исполняемому файлу в будущем, что может решить любые проблемы. Это не может быть намного проще - просто нажмите «Смягчение> Применить смягчение> Применить», и SUA скажет Windows применить исправления к вашей программе.
Не волнуйтесь, это все негласные настройки - ваш программный код никоим образом не затрагивается.Теперь программа должна работать лучше, попробуйте.
Если проблемы устранены, отлично. Если они хуже (к сожалению, тоже возможно), нажмите «Смягчение> Отменить смягчение», чтобы удалить настройки, и программа будет работать так же (или плохо), как и раньше.
Единственная проблема с этим подходом заключается в том, что SUA применит свои настройки только к вашему текущему реестру. Если у вас есть такое же приложение на других компьютерах, они не пострадают, а если вы переустановите Windows на этом компьютере, меры по снижению риска будут потеряны.
Чтобы свести к минимуму любые неприятности, вы также можете щелкнуть «Снижение риска> Экспортировать меры по снижению риска как MSI», и SUA создаст файл для применения этих настроек. Если у вас есть ПК с таким же приложением или вам нужно переустановить средства защиты в этой системе, просто запустите файл MSI, и они будут применены для вас автоматически.
Дополнительные исправления
Набор инструментов для обеспечения совместимости приложений также включает в себя Администратор совместимости - служебную программу, которая позволяет применять множество дополнительных исправлений к установленным приложениям.Их не нужно применять к старым программам - они могут быть полезны в других ситуациях, например, когда разрешается запуск выбранных доверенных приложений без лишних хлопот с запросом UAC.
Запустите программу и щелкните правой кнопкой мыши «Новая база данных» в разделе «Пользовательские базы данных», затем нажмите «Создать новую> Исправление приложения». Введите имя программы, которую нужно исключить из Windows UAC.
Это должна быть программа, которой вы доверяете и которая не подвержена рискам безопасности. Он не должен работать в сети и не должен использоваться для открытия файлов, которые вы скачали или которые могут быть использованы иным образом.Инструмент, отображающий температуру вашего процессора, вероятно, подойдет, а вот тот, который открывает файлы PDF, - нет.
Введите также имя производителя, затем нажмите «Обзор», выберите исполняемый файл программы и нажмите «Далее».
Экран «Режимы совместимости» предоставляет длинный список возможных вариантов режима совместимости, которые вы можете применить. Отметьте «RunAsInvoker», нажмите «Тестовый запуск> ОК» и посмотрите, что произойдет.
Если программа не запускается или выдает ошибку, этот трюк не сработает.Если программа запускается без приглашения UAC и работает в обычном режиме, значит, устранение последствий было успешным. Закройте тестовое приложение и вернитесь к администратору совместимости.
Дважды нажмите «Далее», чтобы увидеть последний экран, на котором можно настроить, как Windows применяет это смягчение. По умолчанию это будет работать только с вашей текущей версией программы, но вы также можете настроить его для работы с любым исполняемым файлом с таким именем. А пока нажмите «Готово», чтобы принять настройки по умолчанию.
Выделив новую базу данных, нажмите «Файл> Сохранить как», чтобы сохранить ее как что-то вроде «UAC.sdb» в папке «C: \ root». Вы можете щелкнуть базу данных правой кнопкой мыши и выбрать «Установить», чтобы установить ее.
Существует также более продвинутый маршрут командной строки, который предлагает дополнительные параметры. Нажмите «Пуск», введите «cmd», щелкните правой кнопкой мыши ссылку «CMD.EXE» и выберите «Запуск от имени администратора». Затем в командной строке введите sdbinst c: \ uac.sdb (заменив имя файла и путь на все, что подходит для только что созданной базы данных) и нажмите [Enter].
Вы увидите сообщение о том, что база данных установлена, и это означает, что исправление UAC было применено. Теперь у вас должна быть возможность запускать свою тестовую программу без запросов UAC.
Дальше
Настройка Windows для запуска одного приложения без UAC не слишком впечатляет, но это только начало. Теперь, когда вы понимаете основной принцип, вы можете легко добавлять исправления других приложений в ту же базу данных.
Используйте кнопку «Тестовый запуск», чтобы убедиться, что они работают при таком запуске, и если они работают, вы можете сохранить их в базе данных и установить, чтобы применить исправления к реестру.
Вы также можете применить множество других исправлений помимо настройки UAC. В разделе «Исправления совместимости» диалогового окна «Создать новое исправление для приложения» перечислено множество вариантов. Игра жалуется на то, что у вас нет конкретной версии DirectX? Отметьте «ForceDXSetupSuccess», и ACT заставит игру думать, что у нее есть нужная версия. Если программе действительно нужна эта версия, она все равно не будет работать, но, по крайней мере, есть шанс.
Если программа ищет конкретный компонент или файл не в той папке, исправление CorrectFilePaths может перенаправить ее в нужное место.Если приложение не работает с Windows Aero, использование файла DisableDWM отключит его (временно).
Если ваша программа отображает раздражающее сообщение об ошибке, но продолжает работать, когда вы нажимаете «ОК», использование исправления «IgnoreMessageBox» может автоматически закрыть окно сообщения.
Существует множество других вариантов, о которых вы можете прочитать, просмотрев файл справки (используя «Набор средств для обеспечения совместимости приложений> Этап 3: Тестирование и устранение проблем совместимости> Известные исправления совместимости»).Освойте их, и вскоре у вас будет большая часть ваших старых приложений, а также новых, работающих в лучшем виде.
.Как начать программировать в Windows?
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Обратитесь к разработчикам и технологам со всего мира
Как работает Центр обновления Windows - Развертывание Windows
- 5 минут на чтение
В этой статье
Применимо к: Windows 10
Рабочий процесс Центра обновления Windows имеет четыре основные функциональные области:
Скан
- Orchestrator планирует сканирование.
- Orchestrator проверяет разрешения администратора и политики для загрузки.
Загрузить
- Orchestrator начинает загрузку.
- Центр обновления Windows загружает файлы манифеста и предоставляет их арбитру.
- Арбитр оценивает манифест и сообщает клиенту Центра обновления Windows загрузить файлы. Клиент Центра обновления Windows
- загружает файлы во временную папку.
- Арбитр обрабатывает загруженные файлы.
Установить
- Orchestrator запускает установку.
- Арбитр вызывает программу установки для установки пакета.
Фиксация
- Orchestrator начинает перезапуск.
- Арбитр завершает работу перед перезапуском.
Как работает обновление
В процессе обновления Windows Update Orchestrator работает в фоновом режиме для сканирования, загрузки и установки обновлений. Он выполняет эти действия автоматически, в соответствии с вашими настройками, и беззвучно, чтобы не мешать работе вашего компьютера.
Сканирование обновлений
Windows Update Orchestrator на вашем ПК проверяет сервер Microsoft Update или вашу конечную точку WSUS на наличие новых обновлений через случайные промежутки времени.Рандомизация гарантирует, что сервер Windows Update не будет одновременно перегружен запросами. Оркестратор обновлений ищет только обновления, которые были добавлены с момента последнего поиска обновлений, что позволяет ему находить обновления быстро и эффективно.
При проверке обновлений Windows Update Orchestrator оценивает, подходит ли обновление для вашего устройства. Он использует рекомендации, определенные издателем обновления, например Microsoft Office, включая групповые политики предприятия.
Убедитесь, что вы знакомы со следующей терминологией, относящейся к сканированию Центра обновления Windows:
Срок | Определение |
---|---|
Обновление | Мы используем этот термин для обозначения нескольких разных вещей, но в данном контексте это актуальный обновленный код или изменение. |
Обновление пакета | Обновление, которое содержит от 1 до N дочерних обновлений; не содержит самой полезной нагрузки. |
Дочернее обновление | Leaf обновление, связанное с другим обновлением; содержит полезную нагрузку. |
Обновление детектора | Специальное «обновление», которое содержит только правило применимости «IsInstalled» и не содержит полезных данных. Используется для предварительной оценки. |
Обновление категории | Специальный «детектоид», имеющий правило IsInstalled , которое всегда истинно. Используется для группировки обновлений и позволяет устройству фильтровать обновления. |
Полное сканирование | Сканирование с пустым хранилищем данных. |
Дельта-сканирование | Сканирование с обновлениями из предыдущего сканирования, уже кэшированными в хранилище данных. |
Онлайн сканирование | Сканирование, использующее сеть, и проверка сервера обновлений. |
Автономное сканирование | Сканирование, которое не использует сеть, а вместо этого проверяет локальное хранилище данных. Полезно, только если онлайн-сканирование было выполнено ранее. |
CatScan | Сканирование категорий, при котором вызывающий может указать идентификатор категории , чтобы получать обновления, опубликованные под этим идентификатором категории . |
AppCatScan | Сканирование категорий, при котором вызывающий может указать AppCategoryId , чтобы получить приложения, опубликованные под этим appCategoryId . |
Синхронизация программного обеспечения | Часть сканирования, которая проверяет только наличие обновлений программного обеспечения (как приложений, так и операционной системы). |
Синхронизация драйвера | Часть сканирования, при которой проверяются только обновления драйверов. Эта синхронизация не является обязательной и запускается после синхронизации программного обеспечения. |
ProductSync | Синхронизация на основе атрибутов, в которой клиент заранее предоставляет список атрибутов устройства, продукта и вызывающего абонента, чтобы служба могла проверить применимость в облаке. |
Как работает сканирование Центра обновления Windows
Центр обновления Windows выполняет следующие действия при запуске сканирования.
Запускает поиск обновлений
Когда пользователи запускают сканирование в Центре обновления Windows через панель настроек, происходит следующее:
- При сканировании сначала создается сообщение «ComApi». Вызывающий (антивирус Microsoft Defender) сообщает ядру Центра обновления Windows, что нужно сканировать обновления.
- "Агент" сообщений: постановка проверки в очередь, а затем фактическое начало работы:
-
Обновления идентифицируются разными идентификаторами («ID = 10», «ID = 11») и разными номерами идентификаторов потоков.
-
Центр обновления Windows использует фильтрацию идентификатора потока, чтобы сосредоточиться на одной конкретной задаче.
-
Определяет идентификаторы услуг
-
Сервисные идентификаторы указывают, какой источник обновлений сканируется.
-
Ядро Центра обновления Windows рассматривает каждую службу как отдельный объект, даже если несколько служб могут содержать одни и те же обновления.
-
Идентификаторы общих служб
Важно
ServiceId здесь идентифицирует абстракцию клиента, а не какую-либо конкретную службу в облаке.Не следует делать никаких предположений о том, на какой сервер указывает serviceId. Это полностью контролируется ответами службы поиска сервисов.
Сервис | ServiceId |
---|---|
Не указано / По умолчанию | WU, MU или WSUS 00000000-0000-0000-0000-000000000000 |
Центр обновления Windows | 9482F4B4-E343-43B6-B170-9A65BC822C77 |
Центр обновления Майкрософт | 7971f918-a847-4430-9279-4a52d1efe18d |
Магазин | 855E8A7C-ECB4-4CA3-B045-1DFA50104289 |
OS Flighting | 8B24B027-1DEE-BABB-9A95-3517DFB9C552 |
WSUS или Configuration Manager | Через ServerSelection :: ssManagedServer 3DA21691-E39D-4da6-8A4B-B43877BCB1B7 |
Автономная служба сканирования | Через IUpdateServiceManager :: AddScanPackageService |
Обнаруживает сбои в сети
Обычный сбой обновления вызван проблемами сети.Чтобы найти корень проблемы:
-
Найдите сообщения «ProtocolTalker», чтобы увидеть сетевой трафик синхронизации клиент-сервер.
-
«Ошибки SOAP» могут быть как на стороне клиента, так и на стороне сервера; прочтите сообщение.
-
Клиент Windows Update использует службу Service Locator для обнаружения конфигураций и конечных точек источников сетевых обновлений Microsoft: Центра обновления Windows, Центра обновления Microsoft или Flighting.
Примечание
Если поиск выполняется с использованием WSUS или Configuration Manager, вы можете игнорировать предупреждающие сообщения для службы локатора служб.
-
На сайтах, которые используют только WSUS или Configuration Manager, служба локатора служб может быть заблокирована брандмауэром. В этом случае запрос не будет выполнен, и хотя служба не может сканировать с помощью Центра обновления Windows или Центра обновления Майкрософт, она все равно может сканировать с помощью WSUS или Configuration Manager, поскольку она настроена локально.
Скачивание обновлений
Как только Windows Update Orchestrator определит, какие обновления применимы к вашему компьютеру, он начнет загрузку обновлений, если вы выбрали опцию автоматической загрузки обновлений.Он работает в фоновом режиме, не отвлекая вас от обычного использования устройства.
Чтобы гарантировать, что другие загрузки не будут затронуты или замедлены из-за загрузки обновлений, Центр обновления Windows использует оптимизацию доставки, которая загружает обновления и снижает потребление полосы пропускания.
Дополнительные сведения см. В разделе Настройка оптимизации доставки для обновлений Windows 10.
Установка обновлений
Если применимо обновление, загружаются «Арбитр» и метаданные.В зависимости от настроек Центра обновления Windows, когда загрузка будет завершена, Арбитр соберет сведения с устройства и сравнит их с загруженными метаданными, чтобы создать «список действий».
В списке действий описаны все файлы, необходимые для работы с Центром обновления Windows, и то, что агент установки (например, CBS или программа установки) должен с ними делать. Список действий предоставляется агенту установки вместе с полезными данными для начала установки.
Подтверждение обновлений
Если настроена опция автоматической установки обновлений, Windows Update Orchestrator в большинстве случаев автоматически перезагружает устройство после установки обновлений.Он должен перезапустить устройство, потому что оно может быть небезопасным или не полностью обновленным, пока оно не перезагрузится. Вы можете использовать параметры групповой политики, управление мобильными устройствами (MDM) или реестр (не рекомендуется), чтобы настроить, когда устройства будут перезагружаться после установки обновления Windows 10.
Для получения дополнительной информации см. Управление перезапусками устройства после обновлений.
.Как работает служба времени Windows
- 23 минуты на чтение
В этой статье
Применимо к: Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows 10 или более поздней версии
В этом разделе
Примечание
В Windows Server 2003 и Microsoft Windows 2000 Server служба каталогов называется службой каталогов Active Directory.В Windows Server 2008 и более поздних версиях служба каталогов называется доменными службами Active Directory (AD DS). Остальная часть этого раздела относится к AD DS, но эта информация также применима к Active Directory.
Хотя служба времени Windows не является точной реализацией протокола сетевого времени (NTP), она использует сложный набор алгоритмов, определенных в спецификациях NTP, для обеспечения максимальной точности часов на компьютерах в сети.В идеале все часы компьютера в домене AD DS синхронизируются со временем полномочного компьютера. Многие факторы могут повлиять на синхронизацию времени в сети. На точность синхронизации в AD DS часто влияют следующие факторы:
Компьютеры, которые реже синхронизируют свое время или не присоединены к домену, по умолчанию настроены на синхронизацию с time.windows.com. Следовательно, невозможно гарантировать точность времени на компьютерах, которые имеют прерывистые сетевые соединения или не имеют их.
Лес AD DS имеет заранее заданную иерархию синхронизации времени. Служба времени Windows синхронизирует время между компьютерами в иерархии с наиболее точными эталонными часами наверху. Если на компьютере настроено более одного источника времени, Windows Time использует алгоритмы NTP для выбора наилучшего источника времени из настроенных источников на основе способности компьютера синхронизироваться с этим источником времени. Служба времени Windows не поддерживает сетевую синхронизацию от одноранговых узлов широковещательной или многоадресной рассылки.Дополнительные сведения об этих функциях NTP см. В RFC 1305 в базе данных RFC IETF.
Каждый компьютер, на котором работает служба времени Windows, использует эту службу для поддержания наиболее точного времени. Компьютеры, которые являются членами домена, по умолчанию действуют как клиенты времени, поэтому в большинстве случаев настраивать службу времени Windows не требуется. Однако службу времени Windows можно настроить так, чтобы она запрашивала время из указанного источника эталонного времени, а также предоставляла время клиентам.
Степень точности времени компьютера называется слоем. Источник наиболее точного времени в сети (например, аппаратные часы) занимает самый нижний уровень страты. Этот источник точного времени называется эталонными часами. Сервер NTP, который получает свое время непосредственно от эталонных часов, занимает слой, который на один уровень выше, чем у эталонных часов. Ресурсы, которые получают время от сервера NTP, находятся в двух шагах от эталонных часов и, следовательно, занимают слой, который на два выше, чем самый точный источник времени, и так далее.По мере увеличения числа слоев компьютера время на его системных часах может стать менее точным. Следовательно, уровень любого компьютера является показателем того, насколько точно этот компьютер синхронизирован с наиболее точным источником времени.
Когда W32Time Manager получает временные выборки, он использует специальные алгоритмы в NTP, чтобы определить, какая из временных выборок является наиболее подходящей для использования. Служба времени также использует другой набор алгоритмов, чтобы определить, какой из настроенных источников времени является наиболее точным.Когда служба времени определила, какая временная выборка является наилучшей, на основе вышеуказанных критериев, она регулирует локальную тактовую частоту, чтобы позволить ей приблизиться к правильному времени. Если разница во времени между локальными часами и выбранной выборкой точного времени (также называемая временным сдвигом) слишком велика, чтобы исправить ее путем регулировки частоты местных часов, служба времени устанавливает правильное время на местных часах. Эта регулировка тактовой частоты или прямое изменение времени известна как дисциплина часов.
Архитектура службы времени Windows
Служба времени Windows состоит из следующих компонентов:
На следующем рисунке показана архитектура службы времени Windows.
Архитектура службы времени Windows
Диспетчер управления службами отвечает за запуск и остановку службы времени Windows. Диспетчер службы времени Windows отвечает за запуск действий поставщиков времени NTP, включенных в операционную систему. Диспетчер службы времени Windows управляет всеми функциями службы времени Windows и объединением всех временных отсчетов. Помимо предоставления информации о текущем состоянии системы, например о текущем источнике времени или о времени последнего обновления системных часов, диспетчер службы времени Windows также отвечает за создание событий в журнале событий.
Процесс синхронизации времени включает следующие шаги:
-
Провайдеры ввода запрашивают и получают образцы времени из настроенных источников времени NTP.
-
Эти выборки времени затем передаются в диспетчер службы времени Windows, который собирает все выборки и передает их в субкомпонент контроля часов.
-
Подкомпонент дисциплины часов применяет алгоритмы NTP, что приводит к выбору наилучшей временной выборки.
-
Подкомпонент дисциплины часов настраивает время системных часов на наиболее точное время, либо изменяя тактовую частоту, либо напрямую изменяя время.
Если компьютер был назначен сервером времени, он может отправлять время на любой компьютер, запрашивая синхронизацию времени в любой момент этого процесса.
Протоколы времени службы времени Windows
Протоколы времени определяют, насколько точно синхронизируются часы двух компьютеров.Протокол времени отвечает за определение наилучшей доступной информации о времени и согласование часов, чтобы гарантировать, что согласованное время поддерживается в отдельных системах.
Служба времени Windows использует протокол сетевого времени (NTP) для синхронизации времени в сети. NTP - это протокол времени в Интернете, который включает в себя дисциплинарные алгоритмы, необходимые для синхронизации часов. NTP - это более точный протокол времени, чем простой протокол сетевого времени (SNTP), который используется в некоторых версиях Windows; однако W32Time продолжает поддерживать SNTP для обеспечения обратной совместимости с компьютерами, на которых запущены службы времени на основе SNTP, такие как Windows 2000.
Протокол сетевого времени
Network Time Protocol (NTP) - это протокол синхронизации времени по умолчанию, используемый службой времени Windows в операционной системе. NTP - это отказоустойчивый протокол времени с высокой степенью масштабируемости, который чаще всего используется для синхронизации компьютерных часов с использованием заданной ссылки времени.
Синхронизация времени NTP происходит в течение определенного периода времени и включает передачу пакетов NTP по сети. Пакеты NTP содержат отметки времени, которые включают выборку времени как от клиента, так и от сервера, участвующих в синхронизации времени.
NTP полагается на эталонные часы для определения наиболее точного времени, которое будет использоваться, и синхронизирует все часы в сети с этими эталонными часами. NTP использует универсальное координированное время (UTC) в качестве универсального стандарта текущего времени. UTC не зависит от часовых поясов и позволяет использовать NTP в любой точке мира независимо от настроек часового пояса.
Алгоритмы NTP
NTP включает в себя два алгоритма, алгоритм фильтрации часов и алгоритм выбора часов, чтобы помочь службе времени Windows определить наилучшую временную выборку.Алгоритм фильтрации часов разработан для фильтрации временных отсчетов, полученных из запрашиваемых источников времени, и определения лучших отсчетов времени из каждого источника. Затем алгоритм выбора часов определяет наиболее точный сервер времени в сети. Затем эта информация передается в алгоритм контроля часов, который использует собранную информацию для корректировки локальных часов компьютера, компенсируя при этом ошибки из-за задержки в сети и неточности часов компьютера.
Алгоритмы NTP наиболее точны в условиях легкой и умеренной нагрузки на сеть и сервер.Как и любой алгоритм, который учитывает время прохождения по сети, алгоритмы NTP могут плохо работать в условиях экстремальной перегрузки сети. Дополнительные сведения об алгоритмах NTP см. В RFC 1305 в базе данных RFC IETF.
Провайдер времени NTP
Служба времени Windows - это полный пакет синхронизации времени, который может поддерживать различные аппаратные устройства и протоколы времени. Чтобы включить эту поддержку, служба использует подключаемые поставщики времени. Поставщик времени отвечает либо за получение точных отметок времени (из сети или от оборудования), либо за предоставление этих отметок времени другим компьютерам по сети.
NTP-провайдер - это стандартный поставщик времени, включенный в операционную систему. Провайдер NTP следует стандартам, указанным в NTP версии 3 для клиента и сервера, и может взаимодействовать с клиентами и серверами SNTP для обеспечения обратной совместимости с Windows 2000 и другими клиентами SNTP. Поставщик NTP в службе времени Windows состоит из следующих двух частей:
-
Поставщик вывода NtpServer. Это сервер времени, который отвечает на запросы времени клиента в сети.
-
Поставщик ввода NtpClient. Это клиент времени, который получает информацию о времени из другого источника, будь то аппаратное устройство или сервер NTP, и может возвращать образцы времени, которые полезны для синхронизации локальных часов.
Хотя фактические операции этих двух провайдеров тесно связаны, они кажутся независимыми от службы времени. Начиная с Windows 2000 Server, когда компьютер Windows подключен к сети, он настраивается как клиент NTP.Кроме того, компьютеры, на которых работает служба времени Windows, по умолчанию пытаются синхронизировать время только с контроллером домена или с указанным вручную источником времени. Это предпочтительные поставщики времени, потому что они автоматически становятся доступными и безопасными источниками времени.
Безопасность NTP
В лесу AD DS служба времени Windows использует стандартные функции безопасности домена для обеспечения проверки подлинности данных времени. Безопасность пакетов NTP, которые отправляются между компьютером-членом домена и локальным контроллером домена, который действует как сервер времени, основана на проверке подлинности с общим ключом.Служба времени Windows использует сеансовый ключ Kerberos компьютера для создания подписей с проверкой подлинности для пакетов NTP, которые отправляются по сети. Пакеты NTP не передаются по защищенному каналу Net Logon. Вместо этого, когда компьютер запрашивает время у контроллера домена в иерархии домена, служба времени Windows требует, чтобы время было проверено. Затем контроллер домена возвращает необходимую информацию в виде 64-битного значения, которое было проверено с помощью сеансового ключа из службы сетевого входа.Если возвращенный пакет NTP не подписан с помощью сеансового ключа компьютера или подписан неправильно, время отклоняется. Все такие сбои аутентификации регистрируются в журнале событий. Таким образом, служба времени Windows обеспечивает безопасность данных NTP в лесу AD DS.
Обычно клиенты времени Windows автоматически получают точное время для синхронизации от контроллеров домена в том же домене. В лесу контроллеры домена дочернего домена синхронизируют время с контроллерами домена в своих родительских доменах.Когда сервер времени возвращает аутентифицированный NTP-пакет клиенту, который запрашивает время, пакет подписывается с помощью сеансового ключа Kerberos, определенного междоменной доверительной учетной записью. Учетная запись междоменного доверия создается, когда новый домен AD DS присоединяется к лесу, а служба сетевого входа в систему управляет ключом сеанса. Таким образом, контроллер домена, настроенный как надежный в корневом домене леса, становится источником времени с проверкой подлинности для всех контроллеров домена как в родительском, так и в дочернем доменах и косвенно для всех компьютеров, расположенных в дереве доменов.
Службу времени Windows можно настроить для работы между лесами, но важно отметить, что эта конфигурация небезопасна. Например, NTP-сервер может быть доступен в другом лесу. Однако, поскольку этот компьютер находится в другом лесу, нет сеансового ключа Kerberos, с помощью которого можно подписывать и проверять подлинность пакетов NTP. Чтобы получить точную синхронизацию времени с компьютера в другом лесу, клиенту необходим сетевой доступ к этому компьютеру, а служба времени должна быть настроена на использование определенного источника времени, расположенного в другом лесу.Если клиент вручную настроен для доступа ко времени с сервера NTP за пределами его собственной доменной иерархии, пакеты NTP, отправляемые между клиентом и сервером времени, не аутентифицируются и, следовательно, не являются безопасными. Даже при реализации доверительных отношений между лесами служба времени Windows не защищена в лесах. Хотя безопасный канал Net Logon является механизмом проверки подлинности для службы времени Windows, проверка подлинности в лесах не поддерживается.
Аппаратные устройства, поддерживаемые службой времени Windows
Аппаратные часы, такие как GPS или радиочасы, часто используются в качестве высокоточных эталонных часов.По умолчанию поставщик времени NTP службы времени Windows не поддерживает прямое подключение аппаратного устройства к компьютеру, хотя можно создать программный независимый поставщик времени, поддерживающий этот тип подключения. Этот тип поставщика вместе со службой времени Windows может обеспечить надежную и стабильную привязку времени.
Аппаратные устройства, такие как цезиевые часы или приемник глобальной системы позиционирования (GPS), обеспечивают точное текущее время, следуя стандарту для получения точного определения времени.Цезиевые часы чрезвычайно стабильны и не зависят от таких факторов, как температура, давление или влажность, но также очень дороги. Приемник GPS намного дешевле в эксплуатации и также является точным эталонным часом. Приемники GPS получают время от спутников, которые получают время от цезиевых часов. Без использования независимого поставщика времени серверы времени Windows могут получать свое время, подключаясь к внешнему серверу NTP, который подключен к аппаратному устройству с помощью телефона или Интернета.Такие организации, как Военно-морская обсерватория США, предоставляют серверы NTP, которые подключены к чрезвычайно надежным эталонным часам.
Многие приемники GPS и другие устройства времени могут функционировать как серверы NTP в сети. Вы можете настроить свой лес AD DS для синхронизации времени с этих внешних аппаратных устройств, только если они также действуют как NTP-серверы в вашей сети. Для этого настройте контроллер домена, работающий как эмулятор основного контроллера домена (PDC) в корне леса, для синхронизации с сервером NTP, предоставленным устройством GPS.Для этого см. Раздел Настройка службы времени Windows на эмуляторе основного контроллера домена в корневом домене леса.
Простой протокол сетевого времени
Простой сетевой протокол времени (SNTP) - это упрощенный протокол времени, предназначенный для серверов и клиентов, которым не требуется степень точности, обеспечиваемая NTP. SNTP, более рудиментарная версия NTP, является основным протоколом времени, который используется в Windows 2000. Поскольку форматы сетевых пакетов SNTP и NTP идентичны, эти два протокола совместимы.Основное различие между ними состоит в том, что SNTP не имеет систем управления ошибками и сложной фильтрации, которые предоставляет NTP. Дополнительные сведения о протоколе простого сетевого времени см. В RFC 1769 в базе данных RFC IETF.
Взаимодействие с протоколом времени
Служба времени Windows может работать в смешанной среде компьютеров под управлением Windows 2000, Windows XP и Windows Server 2003, поскольку протокол SNTP, используемый в Windows 2000, совместим с протоколом NTP в Windows XP и Windows Server 2003.
Служба времени в Windows NT Server 4.0, называемая TimeServ, синхронизирует время в сети Windows NT 4.0. TimeServ - это дополнительная функция, доступная как часть Microsoft Windows NT 4.0 Resource Kit и не обеспечивающая той степени надежности синхронизации времени, которая требуется для Windows Server 2003.
Служба времени Windows может взаимодействовать с компьютерами под управлением Windows NT 4.0, поскольку они могут синхронизировать время с компьютерами под управлением Windows 2000 или Windows Server 2003; однако компьютер под управлением Windows 2000 или Windows Server 2003 не обнаруживает Windows NT 4 автоматически.0 серверов времени. Например, если ваш домен настроен на синхронизацию времени с использованием метода синхронизации на основе иерархии доменов и вы хотите, чтобы компьютеры в иерархии домена синхронизировали время с контроллером домена Windows NT 4.0, вам необходимо вручную настроить эти компьютеры для синхронизации с контроллеры домена Windows NT 4.0.
Windows NT 4.0 использует более простой механизм синхронизации времени, чем служба времени Windows. Поэтому для обеспечения точной синхронизации времени в сети рекомендуется обновить любую Windows NT 4.0 на контроллеры домена Windows 2000 или Windows Server 2003.
Процессы и взаимодействия службы времени Windows
Служба времени Windows предназначена для синхронизации часов компьютеров в сети. Процесс сетевой синхронизации времени, также называемый конвергенцией времени, происходит по всей сети, когда каждый компьютер получает доступ ко времени с более точного сервера времени. Конвергенция времени включает в себя процесс, с помощью которого полномочный сервер предоставляет текущее время клиентским компьютерам в форме пакетов NTP.Информация, представленная в пакете, указывает, нужно ли вносить корректировку в текущее время компьютера, чтобы оно было синхронизировано с более точным сервером.
В рамках процесса конвергенции времени члены домена пытаются синхронизировать время с любым контроллером домена, находящимся в том же домене. Если компьютер является контроллером домена, он пытается синхронизироваться с более авторитетным контроллером домена.
Компьютеры под управлением Windows XP Home Edition или компьютеры, которые не присоединены к домену, не пытаются синхронизироваться с иерархией домена, но по умолчанию настроены на получение времени от времени.windows.com.
Чтобы сделать компьютер под управлением Windows Server 2003 авторитетным, он должен быть настроен как надежный источник времени. По умолчанию первый контроллер домена, установленный в домене Windows Server 2003, автоматически настраивается как надежный источник времени. Поскольку это авторитетный компьютер для домена, его необходимо настроить для синхронизации с внешним источником времени, а не с иерархией домена. Также по умолчанию все остальные члены домена Windows Server 2003 настроены на синхронизацию с иерархией домена.
После того, как вы установили сеть Windows Server 2003, вы можете настроить службу времени Windows для использования одного из следующих вариантов синхронизации:
-
Синхронизация на основе иерархии доменов
-
Источник синхронизации, задаваемый вручную
-
Все доступные механизмы синхронизации
-
Нет синхронизации.
Каждый из этих типов синхронизации обсуждается в следующем разделе.
Синхронизация на основе иерархии доменов
Синхронизация, основанная на иерархии доменов, использует иерархию доменов AD DS, чтобы найти надежный источник для синхронизации времени. На основе иерархии доменов служба времени Windows определяет точность каждого сервера времени. В лесу Windows Server 2003 компьютер с ролью хозяина операций эмулятора основного контроллера домена (PDC), расположенный в корневом домене леса, занимает позицию лучшего источника времени, если не настроен другой надежный источник времени.На следующем рисунке показан путь синхронизации времени между компьютерами в иерархии домена.
Синхронизация времени в иерархии AD DS
Конфигурация надежного источника времени
Компьютер, настроенный как надежный источник времени, определяется как корень службы времени. Корень службы времени является официальным сервером для домена и обычно настроен на получение времени с внешнего сервера NTP или аппаратного устройства.Сервер времени можно настроить как надежный источник времени для оптимизации передачи времени по иерархии домена. Если контроллер домена настроен как надежный источник времени, служба сетевого входа в систему объявляет этот контроллер домена как надежный источник времени при входе в сеть. Когда другие контроллеры домена ищут источник времени для синхронизации, они сначала выбирают надежный источник, если он доступен.
Выбор источника времени
Процесс выбора источника времени может создать две проблемы в сети:
Цикл в сети синхронизации возникает, когда время остается согласованным между группой контроллеров домена и одно и то же время постоянно распределяется между ними без повторной синхронизации с другим надежным источником времени.Алгоритм выбора источника времени службы времени Windows разработан для защиты от подобных проблем.
Компьютер использует один из следующих методов для определения источника времени для синхронизации:
-
Если компьютер не является членом домена, он должен быть настроен на синхронизацию с указанным источником времени.
-
Если компьютер является рядовым сервером или рабочей станцией в домене, по умолчанию он следует иерархии AD DS и синхронизирует свое время с контроллером домена в локальном домене, на котором в настоящее время работает служба времени Windows.
Если компьютер является контроллером домена, он выполняет до шести запросов, чтобы найти другой контроллер домена для синхронизации. Каждый запрос предназначен для идентификации источника времени с определенными атрибутами, такими как тип контроллера домена, конкретное местоположение и то, является ли он надежным источником времени. Источник времени также должен соответствовать следующим ограничениям:
-
Надежный источник времени может синхронизироваться только с контроллером домена в родительском домене.
-
Эмулятор PDC может синхронизироваться с надежным источником времени в собственном домене или с любым контроллером домена в родительском домене.
Если контроллер домена не может синхронизироваться с типом контроллера домена, который он запрашивает, запрос не выполняется. Контроллер домена знает, с какого типа компьютера он может получить время, прежде чем он сделает запрос. Например, локальный эмулятор PDC не пытается запрашивать номера три или шесть, потому что контроллер домена не пытается синхронизироваться с самим собой.
В следующей таблице перечислены запросы, выполняемые контроллером домена для поиска источника времени, и порядок выполнения запросов.
Запросы источника времени контроллера домена
Номер запроса | Контроллер домена | Расположение | Надежность источника времени |
---|---|---|---|
1 | Контроллер родительского домена | на месте | Предпочитает надежный источник времени, но может синхронизироваться с ненадежным источником времени, если это все, что доступно. |
2 | Локальный контроллер домена | на месте | Синхронизируется только с надежным источником времени. |
3 | Эмулятор локального PDC | на месте | Не применяется. Контроллер домена не пытается синхронизироваться сам с собой. |
4 | Контроллер родительского домена | вне офиса | Предпочитает надежный источник времени, но может синхронизироваться с ненадежным источником времени, если это все, что доступно. |
5 | Локальный контроллер домена | вне офиса | Синхронизируется только с надежным источником времени. |
6 | Эмулятор локального PDC | вне офиса | Не применяется. Контроллер домена не пытается синхронизироваться сам с собой. |
Примечание
- Компьютер никогда не синхронизируется сам с собой. Если компьютер, пытающийся выполнить синхронизацию, является локальным эмулятором основного контроллера домена, он не выполняет запросы 3 или 6.
Каждый запрос возвращает список контроллеров домена, которые можно использовать в качестве источника времени. Windows Time присваивает каждому запрашиваемому контроллеру домена оценку в зависимости от надежности и местоположения контроллера домена. В следующей таблице перечислены оценки, присвоенные Windows Time каждому типу контроллера домена.
Определение баллов
Состояние контроллера домена | Оценка |
---|---|
Контроллер домена, расположенный на том же сайте | 8 |
Контроллер домена отмечен как надежный источник времени | 4 |
Контроллер домена, расположенный в родительском домене | 2 |
Контроллер домена, который является эмулятором PDC | 1 |
Когда служба времени Windows определяет, что она идентифицировала контроллер домена с наилучшей возможной оценкой, запросы больше не выполняются.Оценки, присвоенные службой времени, являются кумулятивными, что означает, что эмулятор PDC, расположенный на том же сайте, получает оценку девять.
Если корень службы времени не настроен для синхронизации с внешним источником, внутренние аппаратные часы компьютера управляют временем.
Синхронизация, задаваемая вручную
Синхронизация, заданная вручную, позволяет указать одного узла или список одноранговых узлов, от которых компьютер получает время. Если компьютер не является членом домена, его необходимо вручную настроить для синхронизации с указанным источником времени.Компьютер, который является членом домена, по умолчанию настроен на синхронизацию из иерархии домена, синхронизация, указанная вручную, наиболее полезна для корня леса домена или для компьютеров, которые не присоединены к домену. Указание вручную внешнего сервера NTP для синхронизации с официальным компьютером для вашего домена обеспечивает надежное время. Однако настройка официального компьютера для вашего домена для синхронизации с аппаратными часами на самом деле является лучшим решением для обеспечения наиболее точного и безопасного времени для вашего домена.
Указанные вручную источники времени не аутентифицируются, если для них не написан конкретный поставщик времени, и поэтому они уязвимы для злоумышленников. Кроме того, если компьютер синхронизируется с указанным вручную источником, а не с проверяющим его контроллером домена, эти два компьютера могут быть не синхронизированы, что приведет к сбою проверки подлинности Kerberos. Это может привести к сбою других действий, требующих сетевой аутентификации, таких как печать или совместное использование файлов. Если только корень леса настроен на синхронизацию с внешним источником, все остальные компьютеры в лесу будут синхронизированы друг с другом, что затрудняет повторные атаки.
Все доступные механизмы синхронизации
Параметр «все доступные механизмы синхронизации» является наиболее ценным методом синхронизации для пользователей в сети. Этот метод обеспечивает синхронизацию с иерархией домена, а также может предоставить альтернативный источник времени, если иерархия домена становится недоступной, в зависимости от конфигурации. Если клиент не может синхронизировать время с иерархией домена, источник времени автоматически возвращается к источнику времени, указанному в настройке NtpServer .Этот метод синхронизации, скорее всего, предоставит клиентам точное время.
Остановка синхронизации времени
Есть определенные ситуации, в которых вы захотите остановить компьютер от синхронизации своего времени. Например, если компьютер пытается выполнить синхронизацию из источника времени в Интернете или с другого сайта через глобальную сеть с помощью коммутируемого соединения, это может повлечь за собой дорогостоящие телефонные расходы. Когда вы отключаете синхронизацию на этом компьютере, вы предотвращаете попытки компьютера получить доступ к источнику времени через коммутируемое соединение.
Вы также можете отключить синхронизацию, чтобы предотвратить появление ошибок в журнале событий. Каждый раз, когда компьютер пытается синхронизироваться с недоступным источником времени, он генерирует ошибку в журнале событий. Если источник времени отключен от сети для планового обслуживания, и вы не собираетесь перенастраивать клиента для синхронизации из другого источника, вы можете отключить синхронизацию на клиенте, чтобы предотвратить попытки синхронизации, пока сервер времени недоступен.
Полезно отключить синхронизацию на компьютере, который обозначен как корень сети синхронизации. Это означает, что корневой компьютер доверяет своим локальным часам. Если для корня иерархии синхронизации не задано значение NoSync и если он не может синхронизироваться с другим источником времени, клиенты не принимают пакет, который отправляет этот компьютер, потому что его времени нельзя доверять.
Единственные серверы времени, которым доверяют клиенты, даже если они не синхронизировались с другим источником времени, - это те, которые были определены клиентом как надежные серверы времени.
Отключение службы времени Windows
Службу времени Windows (W32Time) можно полностью отключить. Если вы решите внедрить сторонний продукт синхронизации времени, который использует NTP, вы должны отключить службу времени Windows. Это связано с тем, что всем NTP-серверам необходим доступ к порту 123 протокола пользовательских дейтаграмм (UDP), и пока служба времени Windows работает в операционной системе Windows Server 2003, порт 123 остается зарезервированным для службы времени Windows.
Сетевые порты, используемые службой времени Windows
Служба времени Windows обменивается данными по сети для определения надежных источников времени, получения информации о времени и предоставления информации о времени другим компьютерам.Он выполняет эту связь, как определено RFC NTP и SNTP.
Назначение портов для службы времени Windows
Название службы | UDP | TCP |
---|---|---|
NTP | 123 | НЕТ |
SNTP | 123 | НЕТ |
См. Также
Технический справочник службы времени Windows Инструменты и настройки службы времени Windows Статья базы знаний Майкрософт
9
.Смотрите также
- Как в windows 10 создать флешку восстановления системы
- Как перевернуть экран на windows 7 сочетание клавиш
- Как зайти в биос если сразу запускается windows
- Как узнать что качает компьютер из интернета windows 10
- Как войти в локальную учетную запись windows 10
- Как форматировать карту памяти если она защищена от записи
- Как удалить 360 root с андроида если он не удаляется
- Как развить внимание и память у школьника
- Как настроить iis на windows 7
- Андроид как правильно сделать extends application
- Как удалить папку temp в windows 10