Разбираемся, как работают операционные системы
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).
Операционная система разбита на слои и компоненты. В общем виде архитектура Windows 10 выглядит так. О ней мы поговорим подробно чуть позже.
Уровень архитектуры компьютера. Он представлен материнской платой, которая имеет определённый форм-фактор, встроенные функции закодированные в микросхемах называемых чип-сетом и порты, через которые можно расширять функционал компьютера подключив графическую карту, сетевую карту, дополнительную оперативную память (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
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
- 6 минут на чтение
Применимо к
- Windows 10
- Windows 11
Рабочий процесс Центра обновления Windows имеет четыре основных функциональных области:
Сканирование
- Orchestrator планирует сканирование.
- Orchestrator проверяет утверждения администратора и политики для скачивания.
Download
- Orchestrator начинает загрузку.
- Центр обновления Windows загружает файлы манифеста и предоставляет их арбитру.
- Арбитр оценивает манифест и сообщает клиенту Центра обновления Windows загрузить файлы.
- Клиент Центра обновления Windows загружает файлы во временную папку.
- Арбитр обрабатывает загруженные файлы.
Установить
- Orchestrator начинает установку.
- Арбитр вызывает программу установки для установки пакета.
Фиксация
- Orchestrator начинает перезагрузку.
- Арбитр завершает работу перед перезапуском.
Как работает обновление
Во время процесса обновления диспетчер обновлений Windows работает в фоновом режиме для сканирования, загрузки и установки обновлений. Он выполняет эти действия автоматически, в соответствии с вашими настройками, и бесшумно, чтобы не мешать работе вашего компьютера.
Сканирование обновлений
Оркестратор обновлений Windows на вашем ПК проверяет наличие новых обновлений на сервере обновлений Microsoft или на вашей конечной точке WSUS через случайные промежутки времени. Рандомизация гарантирует, что сервер Центра обновления Windows не будет одновременно перегружен запросами. Update Orchestrator ищет только те обновления, которые были добавлены с момента последнего поиска обновлений, что позволяет быстро и эффективно находить обновления.
При проверке обновлений Windows Update Orchestrator оценивает, подходит ли обновление для вашего устройства. Он использует рекомендации, определенные издателем обновления, например, Microsoft Office, включая корпоративные групповые политики.
Убедитесь, что вы знакомы со следующей терминологией, связанной со сканированием Центра обновления Windows:
Термин | Определение |
---|---|
Обновление | Мы используем этот термин для обозначения нескольких разных вещей, но в данном контексте это фактически обновленный код или изменение. |
Обновление пакета | Обновление, содержащее 1-N дочерних обновлений; не содержит самой полезной нагрузки. |
Детское обновление | Обновление Leaf, входящее в состав другого обновления; содержит полезную нагрузку. |
Обновление детектора | Специальное «обновление», которое содержит только правило применимости «IsInstalled» и не содержит полезной нагрузки. Используется для предварительной оценки. |
Обновление категории | Специальный «детектоид» с правилом IsInstalled , которое всегда истинно. Используется для группировки обновлений и разрешения устройству фильтровать обновления. |
Полное сканирование | Сканирование с пустым хранилищем данных. |
Дельта-сканирование | Сканирование с обновлениями предыдущего сканирования, уже кэшированными в хранилище данных. |
Онлайн-сканирование | Сканирование, которое использует сеть и проверяет сервер обновлений. |
Автономное сканирование | Сканирование, которое не использует сеть, а вместо этого проверяет локальное хранилище данных. Полезно только в том случае, если онлайн-сканирование выполнялось ранее. |
CatScan | Сканирование категорий, при котором вызывающий абонент может указать categoryId , чтобы получать обновления, опубликованные под этим categoryId . |
AppCatScan | Сканирование категорий, при котором вызывающая сторона может указать AppCategoryId , чтобы публиковать приложения под этим appCategoryId . |
Программная синхронизация | Часть сканирования, которая проверяет только наличие обновлений программного обеспечения (как приложений, так и операционной системы). |
Синхронизация драйверов | Часть сканирования, которая проверяет только обновления драйверов. Эта синхронизация не является обязательной и запускается после синхронизации программного обеспечения. |
Синхронизация продуктов | Синхронизация на основе атрибутов, при которой клиент заранее предоставляет список атрибутов устройства, продукта и вызывающего абонента, чтобы служба могла проверить применимость в облаке. |
Как работает сканирование Центра обновления Windows
Центр обновления Windows выполняет следующие действия при запуске сканирования.
Запускает сканирование обновлений
Когда пользователи начинают сканирование в Центре обновления Windows через панель настроек, происходит следующее:
Поведение прокси-сервера
Для Центра обновления Windows (WU) сканируются URL-адреса, которые используются для обнаружения обновлений ([MS-WUSP] : Веб-служба SimpleAuth | Microsoft Docs, [MS-WUSP]: Клиентская веб-служба | Microsoft Docs):
Попытка системного прокси (устанавливается с помощью команды
netsh
).Если WUA не может связаться со службой из-за определенного прокси-сервера, службы или кода ошибки аутентификации, то предпринимается попытка прокси-сервера пользователя (обычно это пользователь, вошедший в систему).
Примечание
Для URL-адресов службы обновления WSUS в интрасети мы предоставляем возможность через политику Центра обновления Windows выбрать поведение прокси-сервера.
Для URL-адресов Центра обновления Windows, которые не являются используемыми для обнаружения обновлений, например для загрузки или создания отчетов:
- Попытка прокси-сервера пользователя.
- Если WUA не может связаться со службой из-за определенного прокси-сервера, службы или кода ошибки аутентификации, то предпринимается попытка использовать системный прокси-сервер.
Идентифицирует идентификаторы услуг
Идентификаторы служб указывают, какой источник обновлений сканируется.
Механизм обновления Windows рассматривает каждую службу как отдельный объект, даже если несколько служб могут содержать одни и те же обновления.
Идентификаторы общих служб
Важно
ServiceId здесь идентифицирует абстракцию клиента, а не конкретную службу в облаке. Не следует делать никаких предположений о том, на какой сервер указывает serviceId. Он полностью контролируется ответами службы поиска служб.
Служба | Идентификатор службы |
---|---|
Не указано / По умолчанию | Центр обновления Windows, Центр обновления Майкрософт или WSUS 00000000-0000-0000-0000-000000000000 |
Центр обновления Windows | 9482F4B4-E343-43B6-B170-9A65BC822C77 |
Центр обновления Майкрософт | 7971f918-a847-4430-9279-4a52d1efe18d |
Магазин | 855E8A7C-ECB4-4CA3-B045-1DFA50104289 |
Полет OS | 8B24B027-1DEE-BABB-9A95-3517DFB9C552 |
WSUS или диспетчер конфигурации | Через ServerSelection::ssManagedServer 3DA21691-E39D-4da6-8A4B-B43877BCB1B7 |
Автономная служба сканирования | Через IUpdateServiceManager::AddScanPackageService |
Находит сбои в сети
Обычный сбой обновления возникает из-за проблем с сетью. Чтобы найти корень проблемы:
Ищите сообщения «ProtocolTalker», чтобы увидеть сетевой трафик синхронизации клиент-сервер.
«Ошибки SOAP» могут возникать как на стороне клиента, так и на стороне сервера; прочитай сообщение.
Клиент Центра обновления Windows использует службу локатора служб для обнаружения конфигураций и конечных точек сетевых источников обновлений Майкрософт: Центр обновления Windows, Центр обновления Майкрософт или Тестовая версия.
Примечание.
Если поиск направлен против WSUS или Configuration Manager, вы можете игнорировать предупреждающие сообщения для службы локатора служб.
На сайтах, использующих только WSUS или Configuration Manager, служба Service Locator может быть заблокирована брандмауэром. В этом случае запрос завершится ошибкой, и хотя служба не сможет выполнить сканирование с помощью Центра обновления Windows или Центра обновления Майкрософт, она все равно сможет выполнить сканирование с помощью WSUS или Configuration Manager, поскольку она настроена локально.
Загрузка обновлений
Как только Windows Update Orchestrator определит, какие обновления применимы к вашему компьютеру, он начнет загрузку обновлений, если вы выбрали параметр автоматической загрузки обновлений. Он работает в фоновом режиме, не прерывая обычного использования устройства.
Чтобы гарантировать, что другие ваши загрузки не будут затронуты или замедлены из-за загрузки обновлений, Центр обновления Windows использует оптимизацию доставки, которая загружает обновления и снижает потребление полосы пропускания.
Дополнительные сведения см. в разделе Настройка оптимизации доставки для обновлений Windows 10.
Установка обновлений
Когда применимо обновление, загружаются «Арбитр» и метаданные. В зависимости от ваших настроек Центра обновления Windows, когда загрузка будет завершена, арбитр соберет информацию с устройства и сравнит ее с загруженными метаданными, чтобы создать «список действий».
В списке действий описаны все файлы, необходимые для Центра обновления Windows, и действия агента установки (например, CBS или программы установки) с ними. Список действий предоставляется агенту установки вместе с полезной нагрузкой для начала установки.
Фиксация обновлений
Если настроен параметр автоматической установки обновлений, диспетчер обновлений Windows в большинстве случаев автоматически перезапускает устройство после установки обновлений. Он должен перезапустить устройство, потому что оно может быть небезопасным или не полностью обновленным, пока оно не перезапустится. Вы можете использовать параметры групповой политики, управление мобильными устройствами (MDM) или реестр (не рекомендуется), чтобы настроить, когда устройства будут перезагружаться после установки обновления Windows 10.
Дополнительные сведения см. в разделе Управление перезапуском устройства после обновления.
Обратная связь
Просмотреть все отзывы о странице
Часто задаваемые вопросы по Windows 10 Корпоративная для ИТ-специалистов (Windows 10) — развертывание Windows
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
Получите ответы на распространенные вопросы о совместимости, установке и поддержке Windows 10 Корпоративная.
Где я могу загрузить Windows 10 Корпоративная?
Если у вас есть корпоративные лицензии Windows с Software Assurance или если вы приобрели лицензии для корпоративных лицензий Windows 10 Корпоративная, вы можете загрузить 32-разрядные и 64-разрядные версии Windows 10 Корпоративная в Центре обслуживания корпоративных лицензий. Если у вас нет действующей программы Software Assurance для Windows и вы хотите приобрести корпоративные лицензии для Windows 10 Корпоративная, обратитесь к своему торговому посреднику Майкрософт или узнайте, как совершить покупку с помощью корпоративного лицензирования.
Каковы системные требования?
Дополнительные сведения см. в разделе Системные требования Windows 10 Корпоративная.
Каковы аппаратные требования для Windows 10?
Большинство компьютеров, совместимых с Windows 8.1, будут совместимы с Windows 10. Возможно, вам потребуется установить обновленные драйверы в Windows 10, чтобы ваши устройства работали должным образом. Дополнительные сведения см. в разделе Технические характеристики Windows 10.
Могу ли я оценить Windows 10 Корпоративная?
Да, 90-дневная пробная версия Windows 10 Корпоративная доступна в Центре оценки. Оценка доступна на китайском (упрощенном), китайском (традиционном), английском, французском, немецком, итальянском, японском, корейском, португальском (Бразилия) и испанском (Испания, международная сортировка). Мы настоятельно рекомендуем организациям использовать 90-дневную ознакомительную версию Windows 10 Корпоративная, чтобы опробовать сценарии развертывания и управления, проверить совместимость с оборудованием и приложениями, а также получить практический опыт работы с функциями Windows 10 Корпоративная.
Где я могу найти драйверы для своих устройств для Windows 10 Корпоративная?
Для многих устройств драйверы будут автоматически установлены в Windows 10, и дальнейшие действия не потребуются.
- Для некоторых устройств Windows 10 может не устанавливать драйверы, необходимые для работы. Если драйверы вашего устройства не устанавливаются автоматически, посетите веб-сайт поддержки производителя вашего устройства, чтобы загрузить и вручную установить драйверы. Если драйверы для Windows 10 недоступны, самые последние версии драйверов для Windows 8.1 часто будут работать в Windows 10.
- Для некоторых устройств производитель может предоставлять более свежие драйверы или драйверы, обеспечивающие большую функциональность, чем драйверы, установленные Windows 10. Всегда следуйте рекомендациям производителя устройства для обеспечения оптимальной производительности и стабильности.
- Некоторые производители компьютеров предоставляют пакеты драйверов для простого внедрения в решения по управлению и развертыванию, такие как Microsoft Deployment Toolkit (MDT) или Microsoft Configuration Manager. Эти пакеты драйверов содержат все драйверы, необходимые для каждого устройства, и могут значительно упростить процесс развертывания Windows на новой модели или модели компьютера. Пакеты драйверов для некоторых распространенных производителей включают:
- Пакет драйверов HP
- Пакеты драйверов Dell для развертывания корпоративной клиентской ОС
- Lenovo Configuration Manager и индекс пакета MDT
- Пакет драйверов Panasonic для предприятия
Где я могу узнать, совместимо ли приложение или устройство с Windows 10?
Многие существующие приложения Win32 и Win64 уже надежно работают в Windows 10 без каких-либо изменений. Вы также можете рассчитывать на надежную совместимость и поддержку веб-приложений и устройств.
Есть ли простой способ оценить, готовы ли устройства моей организации к обновлению до Windows 10?
Desktop Analytics предоставляет ценную информацию и рекомендации о компьютерах, приложениях и драйверах в вашей организации без дополнительных затрат и без других требований к инфраструктуре. Эта служба поможет вам выполнить проекты обновления и обновления функций, используя рабочий процесс, основанный на рекомендациях Microsoft. Актуальные данные о запасах позволяют сбалансировать затраты и риски в ваших проектах модернизации.
Какие средства развертывания поддерживают Windows 10?
Обновленные версии средств развертывания Microsoft, включая Microsoft Configuration Manager, MDT и Windows Assessment and Deployment Kit (Windows ADK), поддерживают Windows 10.
Microsoft Configuration Manager упрощает развертывание и управление Windows 10. Если вы не Если вы не используете его в настоящее время, загрузите бесплатную 180-дневную пробную версию Microsoft Configuration Manager (Current Branch).
MDT — это набор инструментов, процессов и руководств по автоматизации развертывания настольных компьютеров и серверов.
В Windows ADK есть инструменты, позволяющие настраивать образы Windows для крупномасштабного развертывания, а также тестировать качество и производительность системы. Вы можете загрузить последнюю версию Windows ADK для Windows 10 в Центре разработки оборудования.
Можно ли обновить компьютеры с Windows 7 или Windows 8.1 без развертывания нового образа?
Компьютеры под управлением Windows 7 или Windows 8.1 можно обновить непосредственно до Windows 10 с помощью процесса обновления на месте без необходимости повторного создания образа устройства с помощью MDT и/или Configuration Manager. Дополнительные сведения см. в разделе Обновление до Windows 10 с помощью Microsoft Configuration Manager или Обновление до Windows 10 с помощью Microsoft Deployment Toolkit.
Можно ли бесплатно обновить Windows 7 Корпоративная или Windows 8.1 Корпоративная до Windows 10 Корпоративная?
Если у вас есть Windows 7 Корпоративная или Windows 8.1 Корпоративная и действующая подписка на Windows 10 Корпоративная E3 или E5, вы имеете право на обновление до Windows 10 Корпоративная в рамках программы Software Assurance. Ключи продукта и установочный носитель можно найти в Центре обслуживания корпоративных лицензий.
Для устройств, лицензированных по корпоративному лицензионному соглашению для Windows, не включающему Software Assurance, для обновления этих устройств до Windows 10 потребуются новые лицензии.
Что такое Windows как служба?
В операционной системе Windows 10 представлен новый способ сборки, развертывания и обслуживания Windows: Windows как услуга. Microsoft переосмыслила каждую часть процесса, чтобы упростить жизнь ИТ-специалистам и обеспечить стабильное взаимодействие с Windows 10 для своих клиентов. Эти улучшения нацелены на максимальное вовлечение клиентов в разработку Windows, упрощение развертывания и обслуживания клиентских компьютеров Windows и выравнивание ресурсов, необходимых для развертывания и обслуживания Windows с течением времени. Дополнительные сведения см. в разделе Обзор Windows как службы.
Чем обслуживание отличается от Windows как услуги?
Традиционное обслуживание Windows включает несколько типов выпусков: основные версии (например, операционные системы Windows 8.1, Windows 8 и Windows 7), пакеты обновлений и ежемесячные обновления. В Windows 10 существует два типа выпусков: обновления функций, которые добавляют новые функции два-три раза в год, и качественные обновления, которые предоставляют исправления безопасности и надежности не реже одного раза в месяц.
Какие есть каналы обслуживания?
В соответствии с новым методом доставки обновлений функций и качественных обновлений в Windows 10 корпорация Майкрософт представила концепцию каналов обслуживания, позволяющую клиентам определять, насколько активно обновляются их отдельные устройства. Например, в организации могут быть тестовые устройства, которые ИТ-отдел может как можно скорее обновить новыми функциями, а затем специализированные устройства, которым требуется более длительный цикл обновления функций для обеспечения непрерывности. Имея это в виду, Microsoft предлагает два канала обслуживания для Windows 10: канал общей доступности и канал долгосрочного обслуживания (LTSC). Дополнительные сведения о версиях в каждом канале обслуживания см. в разделе Информация о выпуске Windows 10. Дополнительные сведения о каждом канале см. в разделе Каналы обслуживания.
Какие инструменты можно использовать для управления обновлениями Windows как службы?
Существует много доступных инструментов:
- Центр обновления Windows
- Центр обновления Windows для бизнеса
- Службы обновления Windows Server
- Диспетчер конфигурации Майкрософт
Для получения дополнительной информации см. Сервисные инструменты.
Где я могу найти информацию о новых функциях и изменениях в Windows 10 Корпоративная?
Обзор новых корпоративных функций в Windows 10 Корпоративная см. в разделах Новые возможности Windows 10 и Новые возможности Windows 10 версии 1703 в библиотеке документов.
Еще одним местом, где можно отслеживать последнюю информацию о новых функциях, представляющих интерес для ИТ-специалистов, является блог Windows для ИТ-специалистов. Здесь вы найдете объявления о новых функциях, информацию об обновлениях модели обслуживания Windows и сведения о последних ресурсах, которые помогут вам упростить развертывание и управление Windows 10.
Чтобы узнать, какая версия Windows 10 подходит для вашего организации, вы также можете сравнить выпуски Windows.
Как сотрудники моей организации приспособятся к использованию Windows 10 Корпоративная после обновления с Windows 7 или Windows 8.1?
Windows 10 сочетает в себе лучшие аспекты взаимодействия с пользователем из Windows 8. 1 и Windows 7, чтобы сделать использование Windows простым и понятным. Пользователи Windows 7 найдут меню «Пуск» в том же месте, что и всегда. Там же пользователи Windows 8.1 найдут живые плитки на начальном экране, доступные с помощью кнопки «Пуск» так же, как они были доступны в Windows 8.1.
Как Windows 10 помогает людям работать с приложениями и данными на различных устройствах?
Работа с рабочим столом в Windows 10 была улучшена, чтобы обеспечить удобство для людей, использующих традиционную мышь и клавиатуру. Ключевые изменения включают:
- Меню «Пуск» — это точка запуска для доступа к приложениям.
- Универсальные приложения теперь открываются в окнах, а не в полноэкранном режиме.
- Многозадачность улучшена благодаря настраиваемой привязке, которая позволяет иметь более двух окон рядом на одном экране и настраивать расположение этих окон.
- Режим планшета для упрощения использования Windows пальцем или пером за счет сенсорного ввода.
Ваш комментарий будет первым