Режим работы процессора: Режимы работы центрального процессора. Конструктивное исполнение микропроцессора – kpet-ks.ru
Режимы работы микропроцессора (Лекция) | МПС
МПС
Режимы работы
микропроцессора (Лекция)
ПЛАН ЛЕКЦИИ
1.
Режимы работы микропроцессора
2.
Защищенный режим
3.
Реальный режим
4.
Режим системного управления
5.
Переключение между режимами
1. Режимы работы микропроцессора
Впервые о различных режимах работы процессоров стали говорить с
появлением процессора 80286. Это был первый представитель данного семейства
процессоров, в котором были реализованы многозадачность и защищенная
архитектура. Чтобы обеспечить совместимость с предыдущими представителями этого
семейства (8086/88, 80186/188) в процессоре 80286 было реализовано два режима
функционирования: режим эмуляции 8086 (режим реального адреса) и защищенный
режим, в котором используются все возможности процессора. В последующих
поколениях процессоров этого семейства защищенный режим становится основным
режимом работы.
В новых поколениях процессоров Intel появился еще один режим работы -
режим системного управления. Впервые он был реализован в процессорах 80386SL и
i486SL. Начиная с расширенных моделей Intel486, этот режим стал обязательным
элементом архитектуры IA-32. С его помощью прозрачно даже для операционной
системы на уровне BIOS реализуются функции энергосбережения.
2. Защищенный режим (Protected Mode)
Основным режимом работы микропроцессора является защищенный режим.
Ключевыми особенностями защищенного режима являются: виртуальное адресное
пространство, защита и многозадачность.
В защищенном режиме программа оперирует адресами, которые могут
относиться к физически отсутствующим ячейкам памяти, поэтому такое адресное
пространство называется виртуальным.
Размер виртуального адресного пространства программы может превышать емкость
физической памяти и достигать 64Тбайт. Для адресации виртуального адресного
пространства используется сегментированная модель, в которой адрес состоит из
двух элементов: селектора сегмента и смещения внутри сегмента. С каждым
сегментом связана особая структура, хранящая информацию о нем, — дескриптор.
Кроме «виртуализации» памяти на уровне сегментов существует
возможность «виртуализации» памяти при помощи страниц — страничная трансляция. Страничная
трансляция предоставляет удобные средства для реализации в операционной системе
функций подкачки, а кроме того в процессорах P6+
обеспечивает 36-битную физическую адресацию памяти (64Гбайт).
Встроенные средства переключения задач обеспечивают многозадачность в защищенном режиме.
Среда задачи состоит из содержимого регистров МП и всего кода с данными в
пространстве памяти. Микропроцессор способен быстро переключаться из одной
среды выполнения в другую, имитируя параллельную работу нескольких задач. Для
некоторых задач может эмулироваться управление памятью как у процессора 8086.
Такое состояние задачи называется режимом
виртуального 8086 (Virtual
8086 Mode). О пребывании задачи в таком состоянии
сигнализирует бит VM в регистре флагов. При этом задачи
виртуального МП 8086 изолированы и защищены, как от друг друга, так и от
обычных задач защищенного режима.
Защита задач
обеспечивается следующими средствами: контроль
пределов сегментов, контроль типов сегментов, контроль
привилегий, привилегированные инструкции и защита
на уровне страниц. Контроль пределов и типов сегментов обеспечивает
целостность сегментов кода и данных. Программа не имеет права обращаться к
виртуальной памяти, выходящей за предел того или иного сегмента. Программа не
имеет права обращаться к сегменту данных как к коду и наоборот. Архитектура
защиты микропроцессора обеспечивает 4 иерархических уровня привилегий, что
позволяет ограничить задаче доступ к отдельным сегментам в зависимости от ее
текущих привилегий. Кроме того, текущий уровень привилегий задачи влияет на
возможность выполнения тех или иных специфических команд (привилегированных
инструкций). Функции страничной трансляции, впервые появившиеся в МП Intel386,
обеспечивают дополнительные механизмы защиты на уровне страниц.
3. Реальный режим (Real Mode)
В реальном режиме микропроцессор работает как очень быстрый 8086 с
возможностью использования 32-битных расширений. Механизм адресации, размеры
памяти и обработка прерываний (с их последовательными ограничениями) МП
Intel386 в реальном режиме полностью совпадают с аналогичными
функциями МП 8086. В отличие от 8086 микропроцессоры 286+ в определенных
ситуациях генерируют исключения, например, при превышении предела сегмента,
который для всех сегментов в реальном режиме — 0FFFFh.
Имеется две фиксированные области в памяти, которые резервируются в
режиме реальной адресации:
·
область инициализации системы
·
область таблицы прерываний
Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое
из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода.
Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы.
4. Режим системного управления (System
Management Mode)
Режим системного управления предназначен для выполнения некоторых
действий с возможностью их полной изоляции от прикладного программного
обеспечения и даже операционной системы. Переход в этот режим возможен только
аппаратно. Когда процессор находится в режиме SMM, он выставляет сигнал
SMIACT#. Этот сигнал может служить для включения выделенной области физической
памяти (System Management RAM), так что память SMRAM
можно сделать доступной только для этого режима. При входе в режим SMM
процессор сохраняет свой контекст в SMRAM (контекст
сопроцессора не сохраняется) по адресу SMM Base и
передает управление процедуре, называемой обработчиком System
Management Interrupt, по адресу SMM Base+8000h (по
умолчанию SMM Base содержит значение 30000h).
Состояние процессора в этот момент точно определено: EFLAGS обнулен (кроме
зарезервированных битов), сегментные регистры содержат селектор 0000, базы
сегментов установлены в 00000000, пределы — 0FFFFFFFFh.
Следует отметить, что в режиме SMM не предусмотрена работа с прерываниями
и особыми случаями: прерывания по IRQ и SMI# замаскированы, пошаговые ловушки и точки останова отключены, обработка прерывания по
NMI откладывается до выхода из режима SMM. Если необходимо обеспечить работу с
прерываниями или особыми случаями, то надо инициализировать IDT и разрешить
прерывания, выставив флаг IF в регистре EFLAGS. Прерывания по NMI будут
разблокированы автоматически после первой же команды IRET.
При возврате из SMM (по инструкции RSM) процессор восстанавливает свой
контекст из SMRAM. Обработчик может программно внести изменения в образ
контекста процессора, тогда процессор перейдет не в то состояние, в котором
произошло SMI. Если SMI было получено во время выполнения инструкции HLT, то
дальнейшие действия при выходе из SMM определяются значением поля «Auto HALT Restart»:
процессор может снова вернуться к инструкции останова или перейти к выполнению
следующей команды. Если SMI произошло при выполнении инструкции ввода-вывода,
то в зависимости от значения поля «I/O Instruction
Restart» возможен рестарт инструкции ввода
вывода.
Эти особенности режима системного управления позволяют использовать его
для реализации системы управления энергосбережением компьютера или функций
безопасности и контроля доступа.
5. Переключение между режимами
Рис. 1. Схема переключения между режимами
После инициализации процессор находится в реальном режиме. Процессор
может быть переведен в защищенный режим установкой бита 0 (Protect
Enable) в регистре CR0:
MOV EAX,00000001h
MOV CR0,EAX
|
или
|
MOV AX,0001h
LMSW AX
|
Второй вариант «достался в наследство» от 16-разрядной
архитектуры 80286, для совместимости с которой ее регистр MSW (Machine Status Word) отображается на младшее слово регистра CR0.
Вернуться в режим реального адреса процессор может по сигналу RESET или
(в отличие от 80286) сбросив бит PE:
MOV EAX,00000000h
MOV CR0,EAX
Для совместимости с 80286 инструкция LMSW бит PE не сбрасывает.
Режим системного управления изолирован от других режимов. Процессор
переходит в этот режим только аппаратно: по низкому уровню на контакте SMI# или
по команде с шины APIC (Pentium+). Никакой
программный способ не предусмотрен для перехода в этот режим. Процессор
возвращается из режима системного управления в тот режим, при работе в котором
был получен сигнал SMI#. Возврат происходит по команде RSM. Эта команда
работает только в режиме системного управления и в других режимах не
распознается, генерирую исключение #6 (недействительный код операции).
Режим работы процессора — Карта знаний
- Режим работы процессора (англ. CPU mode) — состояние процессора, определяющее его поведение при выполнении различных команд и возможность доступа к различным данным.
По способу адресации памяти (на примере x86):
* Реальный режим: обращение к оперативной памяти происходит по реальным (действительным) адресам, трансляция адресов не используется. Набор доступных операций не ограничен, защита памяти не используется.
Защищённый режим: обращение к памяти происходит по виртуальным адресам с использованием механизмов защиты памяти. Набор доступных операций определяется уровнем привилегий.По уровню привилегий (в защищённом режиме):
* Режим пользователя (прикладной): минимальный уровень привилегий, разрешены только операции с данными и переходы в пределах адресного пространства пользователя. Все остальные операции либо игнорируются, либо с помощью механизма обработки исключений вызывают переключение в привилегированный режим и передачу управления ядру операционной системы для выполнения специальных функций (например, отображения данных на дисплее) или аварийного завершения потока управления.
Привилегированный режим (режим ядра): наравне с операциями режима пользователя, разрешены дополнительные операции — запрет или разрешение прерываний, доступ к портам ввода-вывода, специальным регистрам процессора (например, для настройки блока управления памятью).После включения процессор x86 всегда начинает работу в реальном режиме. Позже, если загружается соответствующая операционная система — процессор переходит в защищённый привилегированный режим, в котором происходит инициализация ядра. Затем при запуске пользовательских программ — процессор переходит в защищённый пользовательский режим, а при необходимости возвращается обратно, и так продолжается до завершения работы.
Процессоры, не имеющие реального режима — начинают работу в защищённом привилегированном режиме.
Переключение с понижением уровня привилегий (из режима ядра в режим пользователя) возможно с продолжением работы в любой конфигурации и с любого адреса. Обратное переключение (с повышением уровня привилегий) возможно лишь в определенные конфигурации и адреса в коде, заранее установленные в привилегированном режиме, за счет чего обеспечивается полный контроль ядра за повышением привилегий исполняемого кода.
Источник: Википедия
Связанные понятия
Кольца защиты — архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, так называемое «кольцо 0»), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно…
Режим супервизора, привилегированный режим, режим ядра (англ. kernel mode) — привилегированный режим работы процессора, как правило, используемый для выполнения ядра операционной системы.
Реальный режим (или режим реальных адресов; англ. real-address mode) — режим работы процессоров архитектуры x86, при котором используется сегментная адресация памяти (адрес ячейки памяти формируется из двух чисел: сдвинутого на 4 бита адреса начала сегмента и смещения ячейки от начала сегмента; любому процессу доступна вся память компьютера). Изначально режим не имел названия, был назван «реальным» только после создания процессоров 80286, поддерживающих режим, названный «защищённым» (режим назван…
Защищённый режим (режим защищённой виртуальной адресации) — режим работы x86-совместимых процессоров. Частично был реализован уже в процессоре 80286, но там существенно отличался способ работы с памятью, так как процессоры ещё были 16-битными и не была реализована страничная организация памяти. Первая 32-битная реализация защищённого режима — процессор Intel 80386. Применяется в совместимых процессорах других производителей. Данный режим используется в современных многозадачных операционных системах…
Подсистема клиент/сервер времени выполнения (англ. Client/Server Runtime Subsystem, CSRSS) или csrss.exe, входит в состав операционной системы Microsoft Windows NT, и представляет собой часть пользовательского режима подсистемы Win32. Включена в состав Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows Server 2008 и Windows 7. Поскольку большинство операций подсистемы Win32 были перенесены в режим ядра, а конкретнее в драйверы режима ядра, в Windows NT 4 и выше CSRSS в основном отвечает…
Подробнее: Процесс исполнения клиент-сервер
Упоминания в литературе
Таким образом, мы установили режимы работы процессора, оперативной памяти и шин в соответствии с рекомендациями производителя.
Связанные понятия (продолжение)
Многозада́чность (англ. multitasking) — свойство операционной системы или среды выполнения обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких задач. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.
Симметричная многопроцессорность (англ. Symmetric Multiprocessing, сокращённо SMP) — архитектура многопроцессорных компьютеров, в которой два или более одинаковых процессора сравнимой производительности подключаются единообразно к общей памяти (и периферийным устройствам) и выполняют одни и те же функции (почему, собственно, система и называется симметричной). В английском языке SMP-системы носят также название tightly coupled multiprocessors, так как в этом классе систем процессоры тесно связаны…
Ждущий режим (англ. sleep mode) — энергосберегающий режим работы компьютерного оборудования. Назначение режима — уменьшение потребления энергии устройством во время простоя. В отличие от спящего режима, для ждущего режима требуется аппаратная поддержка со стороны оборудования.
Многоканальный режим (англ. Multi-channel architecture) — режим работы оперативной памяти (RAM) и её взаимодействия с материнской платой, процессором и другими компонентами компьютера, при котором может быть увеличена скорость передачи данных между ними за счёт использования сразу нескольких каналов для доступа к объединённому банку памяти (это можно проиллюстрировать на примере ёмкостей, через горлышко одной из которых жидкость будет выливаться дольше, чем из двух других с такими же общим суммарным…
Подробнее: Многоканальная архитектура памяти
Планирование выполнения задач — одна из ключевых концепций в многозадачности и многопроцессорности как в операционных системах общего назначения, так и в операционных системах реального времени. Планирование заключается в назначении приоритетов процессам в очереди с приоритетами. Программный код, выполняющий эту задачу, называется планировщиком (англ. task switcher, scheduler).
Подробнее: Диспетчер операционной системы
Операционная система реального времени (ОСРВ, англ. real-time operating system, RTOS) — тип операционной системы, основное назначение которой — предоставление необходимого и достаточного набора функций для работы систем реального времени на конкретном аппаратном оборудовании.
В информатике асинхронный ввод/вывод является формой неблокирующей обработки ввода/вывода, который позволяет процессу продолжить выполнение не дожидаясь окончания передачи данных.
Многопользовательское, мультерминальное или терминальное решение позволяет организовать на базе одного компьютера несколько независимых мест — терминалов — с возможностью одновременной работы.
Подробнее: Многопользовательская система
Операционные системы используют менеджеры блокировок (англ.) для организации и координации доступа к ресурсам. Распределенный менеджер блокировок (англ. Distributed lock manager, DLM, ) работает на каждой машине в кластере, с идентичной копией базы данных блокировок кластера. Таким образом, DLM является пакетом программного обеспечения, который позволяет компьютерам в кластере координировать доступ к совместно используемым ресурсам .
Подробнее: Распределённый менеджер блокировок
Безопасный режим (англ. safe mode) — это режим диагностики компьютерной операционной системы (ОС). Термин может также относиться к режиму эксплуатации прикладного программного обеспечения. Безопасный режим предназначен для исправления некоторых проблем в операционной системе. Он также широко используется для удаления вирусов.
Пото́к выполне́ния (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В…
Руткит (англ. rootkit, то есть «набор root-а») — набор программных средств (например, исполняемых файлов, скриптов, конфигурационных файлов), обеспечивающих…
Проце́сс — программа, которая выполняется в текущий момент. Стандарт ISO 9000:2000 определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.
В компьютерной инженерии микроархитектура (англ. microarchitecture; иногда сокращается до µarch или uarch), также называемая организация компьютера — это способ, которым данная архитектура набора команд (ISA, АНК) реализована в процессоре. Каждая АНК может быть реализована с помощью различных микроархитектур.
Резидентная программа (или TSR-программа, от англ. Terminate and Stay Resident — «завершиться и остаться резидентной») — в операционной системе MS-DOS программа, вернувшая управление оболочке операционной системы (command.com), либо надстройке над операционной системой (Norton Commander и т. п.), но оставшаяся в оперативной памяти персонального компьютера. Резидентная программа активизируется каждый раз при возникновении прерывания, вектор которого эта программа изменила на адрес одной из своих процедур…
Ввод-вывод (от англ. input/output, I/O) в информатике — взаимодействие между обработчиком информации (например, компьютер) и внешним миром, который может представлять как человек, так и любая другая система обработки информации. Ввод — сигнал или данные, полученные системой, а вывод — сигнал или данные, посланные ею (или из неё). Термин также может использоваться как обозначение (или дополнение к обозначению) определенного действия: «выполнять ввод-вывод» означает выполнение операций ввода или вывода…
Прямой доступ к памяти (англ. direct memory access, DMA) — режим обмена данными между устройствами компьютера или же между устройством и основной памятью, в котором центральный процессор (ЦП) не участвует. Так как данные не пересылаются в ЦП и обратно, скорость передачи увеличивается.
Переключение банков — способ увеличения количества используемой памяти по сравнению с количеством, которое процессор может адресовать напрямую. Этот способ может использоваться чтобы изменять конфигурацию системы: например ПЗУ, требующееся для загрузки системы с дискеты, может быть отключено, когда оно больше не нужно. В игровых приставках переключение банков позволяет разработать игры большего размера для использования на текущем поколении консолей.
Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.
Сегментная защита памяти — один из вариантов реализации защиты памяти в процессорах архитектуры x86. Может применяться в защищенном режиме процессоров начиная с Intel 80286 и совместимых.
Барьер памяти (англ. memory barrier, membar, memory fence, fence instruction) — вид барьерной инструкции, которая приказывает компилятору (при генерации инструкций) и центральному процессору (при исполнении инструкций) устанавливать строгую последовательность между обращениями к памяти до и после барьера. Это означает, что все обращения к памяти перед барьером будут гарантированно выполнены до первого обращения к памяти после барьера.
Многопроцессорностью иногда называют выполнение множественных параллельных программных процессов в системе в противоположность выполнению одного процесса в любой момент времени. Однако термины многозадачность или мультипрограммирование являются более подходящими для описания этого понятия, которое осуществлено главным образом в программном обеспечении, тогда как многопроцессорная обработка является более соответствующей, чтобы описать использование множественных аппаратных процессоров. Система не…
Хот-спот (англ. hotspot) — участок кода в программе, на который приходится бо́льшая часть исполняемых инструкций процессора или на исполнение которого процессор затрачивает очень много времени (одни инструкции исполняются быстрее, а другие — медленнее). Хот-споты могут являться узкими местами программы, если на них приходится лишняя нагрузка из-за неэффективности кода, — в таком случае они могут быть подвергнуты оптимизации.
Неблокирующая синхронизация — подход в параллельном программировании на симметрично-многопроцессорных системах, в котором принят отказ от традиционных примитивов блокировки, таких, как семафоры, мьютексы и события. Разделение доступа между потоками идёт за счёт атомарных операций и специальных, разработанных под конкретную задачу, механизмов блокировки.
Дисциплина линии (англ. line discipline, ldisc) — это слой абстракции подсистемы терминальных устройств (tty) UNIX-подобных операционных систем, необходимый для имитации соответствующих возможностей аппаратного терминала. Этот слой расположен между драйвером консоли и драйвером UART.
Предвыборка кода — это выдача запросов со стороны процессора в оперативную память для считывания инструкций заблаговременно, до того момента, как эти инструкции потребуется исполнять. В результате этих запросов, инструкции загружаются из памяти в кэш. Когда инструкции, потребуется исполнять, доступ к ним будет осуществляться значительно быстрее, так как задержка при обращении в кэш на порядки меньше, чем при обращении в оперативную память.
Многопото́чность — свойство платформы (например, операционной системы, виртуальной машины и т. д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.
Перезагру́зка — процесс, при котором компьютер либо другое устройство полностью очищает, либо восстанавливает содержимое оперативной памяти и возобновляет свою работу заново.
Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем.
Процессорное время (англ. process time или CPU time) — время, затраченное процессором компьютера на обработку задачи (программы). Распределяется между процессами в соответствии с используемым режимом операционной системы.
Подкачка страниц (англ. paging; иногда используется термин swapping от swap, /swɔp/) — один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище (жёсткий диск или другой внешний накопитель, такой как флеш-память), освобождая ОЗУ для загрузки других активных фрагментов памяти. Такими фрагментами в современных ЭВМ являются страницы памяти.
Начальная загрузка — сложный и многошаговый процесс запуска компьютера. Загрузочная последовательность — это последовательность действий, которые должен выполнить компьютер для запуска операционной системы (точнее, загрузчика), независимо от типа установленной ОС.
В информатике, цикл событий , диспетчер сообщений, цикл сообщений, помпа сообщений, или рабочий цикл — программная конструкция, которая ожидает прибытия и производит рассылку событий или сообщений в программе. Он работает, делая запрос к некоторому внутреннему или внешнему «поставщику событий» (который, как правило блокирует запрос до тех пор, пока событие не появится), а затем вызывает соответствующий обработчик события («отправляет событие»). Цикл событий может быть использован в сочетании с паттерном…
Безопасность доступа к памяти — концепция в разработке программного обеспечения, целью которой является избежание программных ошибок, которые ведут к уязвимостям, связанным с доступом к оперативной памяти компьютера, таким как переполнения буфера и висячие указатели.
Пробуксовка (англ. thrashing) в информатике — состояние, когда подсистема виртуальной памяти компьютера находится в состоянии постоянного свопинга, часто обменивая данные в памяти и данные на диске, в ущерб выполнению приложений. Это вызывает замедление или практическую остановку работы компьютера. Такое состояние может продолжаться неограниченно долго, пока вызвавшие его причины не будут устранены.
Уте́чка па́мяти (англ. memory leak) — процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные участки памяти, или с ошибками системных служб контроля памяти.
Виртуа́льная па́мять (англ. virtual memory) — метод управления памятью компьютера, позволяющий выполнять программы, требующие больше оперативной памяти, чем имеется в компьютере, путём автоматического перемещения частей программы между основной памятью и вторичным хранилищем (например, жёстким диском). Для выполняющейся программы данный метод полностью прозрачен и не требует дополнительных усилий со стороны программиста, однако реализация этого метода требует как аппаратной поддержки, так и поддержки…
Контроллер памяти — цифровая схема, управляющая потоками данных между вычислительной системой и оперативной памятью. Может представлять собой отдельную микросхему или быть интегрирована в более сложную микросхему, например, в состав северного моста, микропроцессор или систему на кристалле.
Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter, UART) — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами. Преобразует передаваемые данные в последовательный вид так, чтобы было возможно передать их по одной физической цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применяется в компьютерной технике (особенно во встраиваемых устройствах и системах…
Систе́мные часы́ — специальное энергонезависимое устройство в составе компьютера для отсчёта времени, работающее даже при выключенном компьютере.
Отладчик ядра — программное обеспечение, работающее на уровне ядра операционной системы и позволяющее отлаживать ядро и его компоненты.
Программи́руемый логи́ческий контро́ллер (сокр. ПЛК; англ. programmable logic controller, сокр. PLC; более точный перевод на русский — контроллер с программируемой логикой), программируемый контроллер — специальная разновидность электронной вычислительной машины. Чаще всего ПЛК используют для автоматизации технологических процессов. В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания…
Управля́ющий автома́т, устро́йство управле́ния проце́ссором (УУ) — блок, устройство, компонент аппаратного обеспечения компьютеров. Представляет собой конечный дискретный автомат. Структурно устройство управления состоит из: дешифратора команд (операций), регистра команд, узла формирования (вычисления) текущего исполнительного адреса, счётчика команд.
Функция как услуга — архитектурный шаблон, предполагающий возможность вызова экземпляра управляющего кода без необходимости управления серверами и серверным приложением; ключевой компонент бессерверных вычислений. Одной из первых широко известных реализаций является представленный в 2014 году сервис AWS Lambda, аналогичные предложения среди публичных PaaS есть у Google (Cloud Functions), IBM (на Apache OpenWhisk в составе платформы Bluemix) и Microsoft (Azure Functions)
Режимы работы процессоров семейства Х86
IX.
РЕЖИМЫ РАБОТЫ ПРОЦЕССОРОВ СЕМЕЙСТВА Х86
1. Общие
сведения
Современные процессоры семейства Х86 могут быть
использованы в трех рабочих режимах функционирования:
1)
реальном – R-режиме (RealMode — RM), или
режиме R86;
2)
виртуальном – V-режиме (VirtualMode — VM), или
режиме V86;
3)
защищенном – P-режиме
(Protected Mode — PM).
Кроме
того, в них предусмотрен также дополнительный, специальный режим системного
управления — SMM (SystemManagementMode).
Основным рабочим режимом процессоров этого семейства
является защищенный режим, при котором максимально используются все
возможности, заложенные при их создании. Основными из них считаются следующие.
· Аппаратно поддерживаемый многозадачный режим
функционирования.
· Введение виртуальной памяти (до 64 терабайт).
· Страничная организация памяти, позволяющая более
эффективно использовать адресное пространство.
· Организация системы защиты ОС и прикладных программ
пользователя от несанкционированного доступа или случайных ошибок.
Основной
смысл введения реального и виртуального режима работы заключается в реализации
преемственности всех процессоров семейства Х86 с базовым процессором этого
семейства – МП 8086, для которого было разработано, в свое время, большое
количество программного обеспечения.
Кроме
того, реальный режим является режимом, в котором осуществляется инициализация
процессора для работы в основном, защищенном, режиме.
Непосредственно после включения напряжения питания
процессора, или же активного сигнала, поданного на вход процессора RESET,
осуществляется аппаратный сброс процессора (hardware
reset), в результате которого процессор сначала переходитв так называемый вспомогательный режим начальной фазы. В процессе реализации
этого режима начальной фазы, процессор, прежде всего, считывает
конфигурационную информацию с некоторых входных линий и определяет конфигурацию
компьютера: объем основной памяти, состав устройств ввода/вывода, состав
внешней памяти. Затем, распределяет системные ресурсы (память, порты
ввода/вывода, входы запросов прерывания, входы прямого доступа к памяти), тестирует
большую часть оборудования процессора и памяти, устанавливает начальные
состояние целого ряда регистров, производит еще целый ряд вспомогательных
операций и только после этого автоматически переходит в реальный режим работы.
2. Реальный режим (R86)
Таким образом, первым рабочим режимом, после
вспомогательного, в который устанавливается процессор после включения питания,
или перезагрузки по входу RESET, является реальный режим (R — режим, или
режим RM). После этого, архитектура любого процессора этого семейства по
умолчанию, становится практически идентичной архитектуре процессора 8086.
Поэтому, для пользователя все процессоры семейства Х86 более поздних моделей, в
реальном режиме представляются просто как более быстродействующие процессоры
8086 с некоторыми особенностями, к которым относятся следующие.
1.
Возможность использования
32-разрядных адресов и операндов, используя соответствующие префиксы размеров
адресов и операндов. Правда, при этом следует учитывать, что при использовании
32-разрядных адресов, адресация не должна выходить за рамки сегмента 64 Кбайт,
предусмотренные в МП 8086, или же за границы адресного пространства 1 Мбайт +
64 Кбайт, при формировании физического адреса. В ином случае, процессор уходит
на прерывание (реализуется прерывание тип 13).
2.
Возможность использования
несколько расширенной системы команд.
3.
Возможность использования
дополнительных регистров GS и FS, а также системных регистров управления, отладки,
проверки, и регистров математического сопроцессора.
Следует также отметить, что при инициализации
реального режима процессора, уровень привилегий CPL всех сегментов автоматически устанавливается равным
0.
Если же появляется необходимость осуществить переход в
реальный режим работы процессора, работающего в защищенном режиме (P – режиме),
то он осуществляется командой MOV, загружающей в управляющий регистр CR0 слово, в
котором значение нулевого бита (бита PE – Protection Enable) равно 0.
При этом, предварительно, необходимо отключить
механизм страничного преобразования адресов, перейдя к использованию линейных
адресов в качестве физических. Для этого следует в регистр CR0 занести слово, в
котором 31- й бит (бит PG – Paging Enable), был бы равен 0. Кроме
того, необходимо для всех сегментов установить размер, равный 64 Кбайт и
выполнить ряд других операций.
После сброса бита PE в регистре CR0, следует перейти
на программу, выполняемую в реальном режиме, с помощью команды межсегментного
перехода JMP, очищающей очередь команд.
Второй вариант перевода процессора из защищенного
режима в реальный – сброс процессора по входу RESET.
3.
Защищенный режим (P – режим)
Для переключения в P – режим необходимо, прежде всего,
создать минимальный набор системных структур данных. Создать дескрипторные
таблицы, определить минимум потребующихся сегментов кода, данных и стека и т.д.
Для этого необходимо: в регистр GDTR командой LGDT загрузить базовый адрес и
предел таблицы GDT; в регистр IDTR с помощью команды LIDT загрузить базовый
адрес и предел таблицы IDT; при необходимости организации многозадачного режима
функционирования – инициализировать и регистр задачи TR. Если задачи достаточно
объемны, целесообразно создать локальные дескрипторные таблицы LDT.
Сам переход в защищенный режим осуществляется путем
установки в единичное состояние бита PE в регистре управления CR0. Это можно сделать
либо командой MOV CR0, либо командой LMSW. (Напомним,
что регистр слова состояния машины MSW является младшей половиной регистра CR0).
Для очистки очереди команд, начинать работу в
защищенном режиме надо также с команды межсегментного перехода.
4. Виртуальный режим (V86)
При виртуальном режиме происходит эмуляция
(моделирование) функционирования процессора 8086 в операционной среде основного
процессора i386+, работающего в многозадачном режиме, как одной из его
возможных задач. При этом обеспечивается ряд средств защиты и возможность
страничной организации памяти. Поэтому, часто говорят, что в режиме V86
микропроцессор работает как виртуальный процессор 8086, состоящий из аппаратных
средств основного процессора i386+, системного программного обеспечения,
представляющего собой специальную программу – монитор V86 в среде основной ОС и
прикладного программного обеспечения, разработанного для 8086. Сам же монитор
V- режима (V86) представляет собой программу Р — режима,
которая выполняется на уровне привилегий 0.
Таким образом, задача в виртуальном режиме имеет
сложную структуру: обычная пользовательская программа 8086, вложена в
программу-монитор V86, которая, в свою очередь, является задачей защищенного
режима базового процессора i386+, выполняемой на уровне привилегий 0. Но
программа-монитор V86 может, например, эмулировать средства MS-DOS. В этом
случае структура задачи получается еще более сложной: обычная задача 8086
вкладывается в MS-DOS, а сама MS-DOS – в монитор V86.
Все задачи виртуального режима V86 выполняются на
уровне привилегий 3 (CPL = 3). Этим виртуальный режим отличается от реального
режима работы, при котором всем программам представляется наиболее
привилегированный уровень CPL = 0. Поскольку в виртуальном режиме, как и в
реальном дескрипторы не используются, то в нем определены только некоторые
способы защиты, а именно:
· При использовании страничной организации памяти, в
случае нарушения правил доступа к странице, реализуется прерывание типа 14
(отказ страницы).
· При появлении привилегированных команд, которые
выполняются в защищенном режиме только при CPL = 0 (команды LIDT, LGDT, LMSW,
CLTS, HLT, а также команда MOV при обращении к регистрам управления,
тестирования и отладки), возникает прерывание типа 13 (нарушение защиты).
Режимы работы процессора
Режимы работы
микропроцессора
Впервые о различных режимах работы
процессоров IA-32 стали говорить с
появлением процессора 80286. Это был первый
представитель данного семейства
процессоров, в котором были реализованы
многозадачность и защищенная архитектура.
Чтобы обеспечить совместимость с
предыдущими представителями этого
семейства (8086/88, 80186/188) в процессоре 80286
было реализовано два режима функционирования:
режим эмуляции 8086 (режим реального
адреса) и защищенный режим, в котором
используются все возможности процессора.
В последующих поколениях процессоров
этого семейства защищенный режим
становится основным режимом работы.
В новых поколениях процессоров Intel
появился еще один режим работы — режим
системного управления. Впервые он был
реализован в процессорах 80386SL и i486SL.
Начиная с расширенных моделей Intel486,
этот режим стал обязательным элементом
архитектуры IA-32. С его помощью прозрачно
даже для операционной системы на уровне
BIOS реализуются функции энергосбережения.
Защищенный режим (Protected Mode)
Основным режимом работы микропроцессора
является защищенный режим. Ключевыми
особенностями защищенного режима
являются: виртуальное
адресное пространство, защита
и многозадачность.
В защищенном режиме программа оперирует
адресами, которые могут относиться к
физически отсутствующим ячейкам памяти,
поэтому такое адресное пространство
называется виртуальным. Размер
виртуального адресного пространства
программы может превышать емкость
физической памяти и достигать 64Тбайт.
Для адресации виртуального адресного
пространства используется сегментированная
модель, в которой адрес состоит
из двух элементов: селектора сегмента
и смещения внутри сегмента. С каждым
сегментом связана особая структура,
хранящая информацию о нем, — дескриптор.
Кроме «виртуализации» памяти на
уровне сегментов существует возможность
«виртуализации» памяти при помощи
страниц — страничная
трансляция. Страничная
трансляция предоставляет удобные
средства для реализации в операционной
системе функций подкачки, а кроме того
в процессорах P6+ обеспечивает 36-битную
физическую адресацию памяти (64Гбайт).
Встроенные средства переключения задач
обеспечивают многозадачность в
защищенном режиме. Среда задачи состоит
из содержимого регистров МП и всего
кода с данными в пространстве памяти.
Микропроцессор способен быстро
переключаться из одной среды выполнения
в другую, имитируя параллельную работу
нескольких задач. Для некоторых задач
может эмулироваться управление памятью
как у процессора 8086. Такое состояние
задачи называется режимом
виртуального 8086 (Virtual 8086 Mode).
О пребывании задачи в таком состоянии
сигнализирует бит VM в регистре флагов.
При этом задачи виртуального МП 8086
изолированы и защищены, как от друг
друга, так и от обычных задач защищенного
режима.
Защита задач обеспечивается
следующими средствами: контроль
пределов сегментов, контроль
типов сегментов, контроль
привилегий, привилегированные
инструкции и защита
на уровне страниц. Контроль
пределов и типов сегментов обеспечивает
целостность сегментов кода и данных.
Программа не имеет права обращаться к
виртуальной памяти, выходящей за предел
того или иного сегмента. Программа не
имеет права обращаться к сегменту данных
как к коду и наоборот. Архитектура защиты
микропроцессора обеспечивает 4
иерархических уровня привилегий, что
позволяет ограничить задаче доступ к
отдельным сегментам в зависимости от
ее текущих привилегий. Кроме того,
текущий уровень привилегий задачи
влияет на возможность выполнения тех
или иных специфических команд
(привилегированных инструкций). Функции
страничной трансляции, впервые появившиеся
в МП Intel386, обеспечивают дополнительные
механизмы защиты на уровне страниц.
Реальный режим (Real Mode)
В реальном режиме микропроцессор
работает как очень быстрый 8086 с
возможностью использования 32-битных
расширений. Механизм адресации, размеры
памяти и обработка прерываний (с их
последовательными ограничениями) МП
Intel386 в реальном режиме полностью
совпадают с аналогичными функциями МП
8086. В отличие от 8086 микропроцессоры 286+
в определенных ситуациях генерируют
исключения, например, при превышении
предела сегмента, который для всех
сегментов в реальном режиме — 0FFFFh.
Имеется две фиксированные области в
памяти, которые резервируются в режиме
реальной адресации:
Ячейки от 00000h до 003FFH резервируются для
векторов прерываний. Каждое из 256
возможных прерываний имеет зарезервированный
4-байтовый адрес перехода. Ячейки от
FFFFFFF0H до FFFFFFFFH резервируются для
инициализации системы.
Режим системного управления (System
Management Mode)
Режим системного управления предназначен
для выполнения некоторых действий с
возможностью их полной изоляции от
прикладного программного обеспечения
и даже операционной системы. Переход в
этот режим возможен только аппаратно.
Когда процессор находится в режиме SMM,
он выставляет сигнал SMIACT#. Этот сигнал
может служить для включения выделенной
области физической памяти (System Management
RAM), так что память SMRAM можно сделать
доступной только для этого режима. При
входе в режим SMM процессор сохраняет
свой контекст в SMRAM (контекст сопроцессора
не сохраняется) по адресу SMM Base и передает
управление процедуре, называемой
обработчиком System Management Interrupt, по адресу
SMM Base+8000h (по умолчанию SMM Base содержит
значение 30000h). Состояние процессора в
этот момент точно определено: EFLAGS обнулен
(кроме зарезервированных битов),
сегментные регистры содержат селектор
0000, базы сегментов установлены в 00000000,
пределы — 0FFFFFFFFh.
Следует отметить, что в режиме SMM не
предусмотрена работа с прерываниями и
особыми случаями: прерывания по IRQ и
SMI# замаскированы, пошаговые ловушки и
точки останова отключены, обработка
прерывания по NMI откладывается до выхода
из режима SMM. Если необходимо обеспечить
работу с прерываниями или особыми
случаями, то надо инициализировать IDT
и разрешить прерывания, выставив флаг
IF в регистре EFLAGS. Прерывания по NMI будут
разблокированы автоматически после
первой же команды IRET.
При возврате из SMM (по инструкции RSM)
процессор восстанавливает свой контекст
из SMRAM. Обработчик может программно
внести изменения в образ контекста
процессора, тогда процессор перейдет
не в то состояние, в котором произошло
SMI. Если SMI было получено во время
выполнения инструкции HLT, то дальнейшие
действия при выходе из SMM определяются
значением поля «Auto HALT Restart»: процессор
может снова вернуться к инструкции
останова или перейти к выполнению
следующей команды. Если SMI произошло
при выполнении инструкции ввода-вывода,
то в зависимости от значения поля «I/O
Instruction Restart» возможен рестарт инструкции
ввода вывода.
Эти особенности режима системного
управления позволяют использовать его
для реализации системы управления
энергосбережением компьютера или
функций безопасности и контроля доступа.
Переключение между режимами
После инициализации процессор находится
в реальном режиме. Процессор может быть
переведен в защищенный режим установкой
бита 0 (Protect Enable) в регистре CR0:
MOV MOV | или | MOV LMSW |
Второй вариант «достался в наследство»
от 16-разрядной архитектуры 80286, для
совместимости с которой ее регистр MSW
(Machine Status Word) отображается на младшее
слово регистра CR0.
Вернуться в режим реального адреса
процессор может по сигналу RESET или (в
отличие от 80286) сбросив бит PE:
MOV
EAX,00000000h
MOV
CR0,EAX
Для совместимости с 80286 инструкция LMSW
бит PE не сбрасывает.
Режим системного управления изолирован
от других режимов. Процессор переходит
в этот режим только аппаратно: по низкому
уровню на контакте SMI# или по команде с
шины APIC (Pentium+). Никакой программный
способ не предусмотрен для перехода в
этот режим. Процессор возвращается из
режима системного управления в тот
режим, при работе в котором был получен
сигнал SMI#. Возврат происходит по команде
RSM. Эта команда работает только в режиме
системного управления и в других режимах
не распознается, генерирую исключение
#6 (недействительный код операции).
Сравнение режимов
Характеристика | RM | PM, | PM, | SMM |
Формирование | без | с | без | без |
Предел | 64К | определяется | 64К | 4Г |
Размер | 16 | определяется | 16 | 16 |
Максимальный | 1M | 64T | 1M | 4Г |
Защита | Нет* | Да | Да | Нет |
Страничное | Нет | Да | Да | Нет |
Многозадачность | Нет | Да | Да | Нет |
Обработка | таблица | дескрипторная | дескрипторная | Нет** |
* |
Режимы работы процессора — Студопедия
CPU I386 полностью совместим по объектному коду с семейством Iх86 и является его дальнейшим развитием. CPU может быть использован в следующих режимах работы:
Real Mode (RМ) – режим реальной адресации,соответствующий работе системы с CPU 8086, используется только в MS DOS. Область адресов, доступных системе (1 Мбайт), не защищена. Реализованы двадцать адресных линий, режим однопользовательский. Однако при этом работают 32-битовые регистры CPU. По умолчанию используются все имеющиеся команды, длина операндов 16 бит. Для работы с 32-разрядными операндами и использования дополнительных режимов адресации применяют специальный префикс переадресации. 32-разрядный адрес не превышает границы сегмента 64 Кбайт (0000H-FFFFH), в противном случае констатируется особая ситуация — 13Н. Для обеспечения доступа к адресному пространству шириной до 1 Мбайт в работе участвуют линии А [19/02], BEO#-BE3#. Исполнительный адрес всегда соответствует физическому, страничный механизм отключен. Все сегменты могут находиться в состоянии записи, считывания или выполнения.
Protected Mode (РМ) – режим виртуальной адресации (защищенный режим).
Виртуальная адресация – это способ организации доступа к информации, при котором большая ее часть располагаются не в физическом ОЗУ, а в устройствах внешней памяти (УВП), откуда она периодически подкачивается в ОЗУ (swapping), что создает иллюзию расширения его размеров.
При включении ПЭВМ первоначально принимает RM. Для перевода в РМ используют системные команды LMSW, SMSW. При установке бита PF=1 в MSW CPU переходит в РМ, в котором реализуется доступ к 4 Гбайт ОЗУ в 32-битовом адресном физическом пространстве исполнительных адресов. Доступ к 64 Тбайт памяти реализуется в виртуальном (логическом) адресном пространстве.
Предусмотрена защита по многоуровневому принципу операционной системы и прикладных задач. Реализуется мультипрограммность.
Для обратного перевода из РМ в RM команды LMSW, SMSW не используются. Система должна быть перезагружена либо аппаратно («холодный» старт), либо программно-аппаратно – через порты 60Н, 64Н контроллера 8042 командой вывода out и далее через внутренний сигнал RC и узел Shut down ко входу Reset I386 («теплый» старт осуществляется нажатием клавиш).
Для осуществления программного перехода из РМ в RM может быть использована команда MOV CR0 (LCR0).
Protected Mode 86 (VM 8б) – режим виртуальной адресации 86 — устанавливает исполнительную среду I86 внутри защищенной многозадачной среды PM CPU I386. При этом поддерживается исполнение всех программ, написанных для предыдущих поколений. Первоначально в рамках VM 86 оборудование формирует 20-разрядный линейный адрес по системе, аналогичной RM. Однако, благодаря включению механизма страничной адресации и системе двухуровневой защиты, линейный адрес шириной в 1 Мбайт может быть разбит на 256 страниц по 4 Кбайт каждая, и размещен в физическом адресном пространстве до 4 Гбайт. В этом объеме физической памяти можно в окнах по 1 Мбайт расположить множество копий MS DOS или других операционных систем и их программ, представляющих отдельные виртуальные машины, работающие в мультизадачном режиме. Вход и выход в режим VM86 возможен посредством перезагрузки регистра флагов (бит 17), либо при переключении с задачи на задачу с привлечением сегмента состояния задачи (TSS), либо в процедуре прерывания (команда IRET), либо при использовании команды POPF.
Page Protected Mode – режим страничной адресации.
Это альтернативный режим управления памятью, позволяющий разделить крупные массивы информации на более компактные блоки размером по 4 Кбайт. Аппаратно для реализации режима в CPU I386 дополнительно включается страничный механизм, транслирующий линейный адрес в физический. Переход из RM в Page М программный: командами LMSW, SMSW, MOV CR0, MOV CR3. Обратный переход осуществляется либо перезагрузкой, либо программным путем (манипуляция битом 31 регистра CR0).
19. Режимы работы (реальный, защищенный, виртуальный).
РЕЖИМЫ
РАБОТЫ ПРОЦЕССОРА
Процессоры
могут работать в различных режимах. Под
термином «режим» подразумевается
способы, которым процессор создает (и
обеспечивает) для себя рабочую среду.
Режим работы процессора задает способ
адресации к оперативной памяти и способ
управления отдельными задачами.
Процессоры персональных компьютеров
могут работать в трех режимах: реальном,
защищенном и виртуальном режимах.
Реальный
режим
Первоначально
персональные компьютеры фирмы IBM могли
адресовать только 1 Мбайт оперативной
памяти. Это решение, принятое в начале
развития персональных компьютеров,
продолжало соблюдаться и в последующее
время — в каждом компьютере следующего
поколения процессор должен был уметь
работать в режиме совместимости с
процессором Intel 8086. Этот режим назвали
реальным. Когда процессор работает в
реальном режиме, он может обращаться к
памяти только в пределах 1 Мбайт (как и
процессор Intel 8086), и не может использовать
32-разрядные и 64-разрядные операции.
Процессор попадает в реальный режим
сразу же после запуска. В реальном режиме
работают операционные системы DOS и
стандартные DOS-приложения.
Защищенный
режим
Начиная
с процессоров Intel 80286 и компьютеров типа
IBM PC/AT, появляется защищенный режим. Это
более мощный режим работы процессора
по сравнению с реальным режимом. Он
используется в современных многозадачных
операционных системах. Защищенный режим
имеет много преимуществ:
■ В
защищенном режиме доступна вся системная
память (не существует предела 1 Мбайт).
■ В
защищенном режиме операционная система
может организовать одновременное
выполнение нескольких задач
(многозадачность).
■ В
защищенном режиме поддерживается
виртуальная память — операционная
система при необходимости может
использовать жесткий диск в качестве
расширения оперативной памяти.
■ В
защищенном режиме осуществляется
быстрый (32/64-разрядный) доступ к памяти
и поддерживается работа 32-х разрядных
операций ввода-вывода.
Каждая
выполняемая на компьютере программа
имеет свою собственную область памяти,
которая защищена от доступа со стороны
других программ. Когда какая-либо
программа пытается обратиться по
неразрешенному для нее адресу памяти,
генерируется ошибка защиты памяти. Все
современные операционные системы
используют защищенный режим, включая
Windows 98/Ме, Windows NT/2000/XP, OS/2 и Linux. Даже
операционная система DOS (обычно работающая
в реальном режиме) может использовать
доступ к памяти защищенного режима с
помощью программного интерфейса DPMI
(DOS Protected Mode Interface — интерфейс защищенного
режима операционной системы DOS). Этот
интерфейс используется компьютерными
играми и другими программами под DOS для
того, чтобы преодолеть барьер в 640 Кбайт
основной памяти DOS. С появлением процессора
Intel 386 защищенный режим был усовершенствован:
увеличено максимально доступное адресное
пространство, расширена система команд.
Поэтому он иногда называется
усовершенствованным защищенным режимом.
Процессоры
получили возможность переключаться из
реального режима работы в защищенный
и обратно (для возврата из защищенного
режима в компьютерах на базе процессора
80286 использовались специальные аппаратные
решения). Именно с появлением процессоров
семейства 386 защищенный режим стал
широко использоваться в операционных
системах.
Виртуальный
режим
Защищенный
режим используют графические многозадачные
операционные системы, такие как Windows.
Иногда возникает необходимость выполнения
DOS-программ в среде операционной системы
Windows. Но DOS-программы работают в реальном
режиме, а не в защищенном. Для решения
этой проблемы был разработан виртуальный
режим или режим виртуального процессора
8086. Этот режим эмулирует (имитирует)
реальныйрежим, необходимый для работы
DOS-программ, внутри защищенного режима.
Операционные системы защищенного режима
(такие как Windows) могут создавать несколько
машин виртуального режима — при этом
каждая из них будет работать так, как
будто она одна использует все ресурсы
персонального компьютера. Каждая
виртуальная машина получает в свое
распоряжение 1 Мбайтное адресное
пространство, образ реальных программ
BIOS и т.п. Виртуальный режим используется
при работе в DOS-окне или при запуске
DOS-игр в операционной системе Windows 98/Ме.
При запуске на компьютере DOS-приложения
операционная система Windows создает
виртуальную DOS-машину, в которой
выполняется это приложение.
ⓘ Режим работы процессора — состояние процессора, определяющее
Пользователи также искали:
нереальный режим процессора,
опишите режимы работы микропроцессора,
основные режимы работы микропроцессора,
привилегированный режим работы процессора режим ядра система используется для,
реальный режим работы процессора,
виртуальный режим работы процессора,
защищенный режим работы процессора в windows,
защищенный режим работы процессора,
работы,
Режим,
режим,
процессора,
Режим работы процессора,
микропроцессора,
режимы,
нереальный режим процессора,
защищенный,
реальный,
виртуальный,
windows,
привилегированный,
ядра,
система,
используется,
нереальный,
опишите,
основные,
виртуальный режим работы процессора,
защищенный режим работы процессора в windows,
привилегированный работы процессора режим ядра система используется для,
опишите режимы работы микропроцессора,
основные режимы работы микропроцессора,
реальный режим работы процессора,
защищенный режим работы процессора,
режим работы процессора,
микропроцессоры. режим работы процессора,
…
RN4870 Рабочие режимы — Справка разработчика
Переключить навигацию
- Инструменты разработки
- Какие инструменты мне нужны?
- Программные средства
- Начни здесь
- MPLAB® X IDE
- Начни здесь
- Установка
- Введение в среду разработки MPLAB X
- Переход на MPLAB X IDE
- Переход с MPLAB IDE v8
- Переход с Atmel Studio
- Конфигурация
- Плагины
- Пользовательский интерфейс
- Проектов
- файлов
- Редактор
- Редактор
- Интерфейс и ярлыки
- Основные задачи
- Внешний вид
- Динамическая обратная связь
- Навигация
- Поиск, замена и рефакторинг
- Инструменты повышения производительности
- Инструменты повышения производительности
- Автоматическое форматирование кода
- Список задач
- Сравнение файлов (разница)
- Создать документацию
- Управление окнами
- Сочетания клавиш
- Отладка
- Контроль версий
- Автоматизация
- Язык управления стимулами (SCL)
- Отладчик командной строки (MDB)
- Создание сценариев IDE с помощью Groovy
- Поиск и устранение неисправностей
- Работа вне MPLAB X IDE
- Прочие ресурсы
- Улучшенная версия MPLAB Xpress
- MPLAB Xpress
- MPLAB IPE
- Программирование на C
- Компиляторы MPLAB® XC
- Начни здесь
- Компилятор MPLAB® XC8
- Компилятор MPLAB XC16
- Компилятор MPLAB XC32
- Компилятор MPLAB XC32 ++
- MPLAB
Охват кода
- Компилятор IAR C / C ++
- Конфигуратор кода MPLAB (MCC)
- Гармония MPLAB v2
- Гармония MPLAB v3
- среда разработки Atmel® Studio
- Atmel START (ASF4)
- Advanced Software Framework v3 (ASF3)
- Начни здесь
- ASF3 Учебники
- ASF Audio Sine Tone Учебное пособие
- Интерфейс ЖК-дисплея с SAM L22 MCU Учебное пособие
- Блоки устройств MPLAB® для Simulink®
- Утилиты
- FPGA
- Аналоговый симулятор MPLAB® Mindi ™
Инструменты проектирования
- Аппаратные средства
- Начни здесь
- Сравнение аппаратных средств
- Средства отладки и память устройства
- Исполнительный отладчик
- Демо-платы и стартовые наборы
- Внутрисхемный эмулятор MPLAB® REAL ICE ™
- Эмулятор SAM-ICE JTAG
- Atmel® ICE
- Power Debugger
- Внутрисхемный отладчик MPLAB® ICD 3
- Внутрисхемный отладчик MPLAB® ICD 4
- PICkit ™ 3
- Внутрисхемный отладчик MPLAB® PICkit ™ 4
- MPLAB® Snap
- MPLAB PM3 Универсальный программатор устройств
- Принадлежности
- Заголовки эмуляции и пакеты расширения эмуляции
- Пакеты расширения процессора и отладочные заголовки
- Начни здесь
- PEP и отладочных заголовков
- Требуемый список заголовков отладки
- Таблица обязательных отладочных заголовков
- AC162050, AC162058
- AC162052, AC162055, AC162056, AC162057
- AC162053, AC162054
- AC162059, AC162070, AC162096
- AC162060
- AC162061
- AC162066
- AC162083
- AC244023, AC244024
- AC244028
- AC244045
- AC244051, AC244052, AC244061
- AC244062
- Необязательный список заголовков отладки
- Список необязательных отладочных заголовков — устройства PIC12 / 16
- Дополнительный список заголовков отладки — устройства PIC18
- Необязательный список заголовков отладки — устройства PIC24
- Целевые следы заголовка отладки
- Отладочные подключения заголовков
Обзор
- SEGGER J-Link
- K2L
- Рекомендации по проектированию средств разработки
- Ограничения отладки — микроконтроллеры PIC
- Инженерно-технические примечания (ETN) [[li]] Встраиваемые платформы chipKIT ™
Внутрисхемный эмулятор
Внутрисхемный отладчик
Решения для сетевых инструментов
- Проектов
- Начни здесь
- Преобразование мощности
- AN2039 Четырехканальный секвенсор питания PIC16F1XXX
- 8-битные микроконтроллеры PIC®
- 8-битные микроконтроллеры AVR®
- 16-битные микроконтроллеры PIC®
- 32-битные микроконтроллеры SAM
- 32-битные микропроцессоры SAM
- Разработка приложений SAM MPU с MPLAB X IDE
- SAM MPU
Примеры пакетов программного обеспечения
- Запланировано дополнительное содержание…
- Продукты
- 8-битные микроконтроллеры PIC
- 8-битные микроконтроллеры AVR
- Начни здесь
- 8-битные периферийные устройства AVR®
- Осциллятор
- USART
- прерываний
- аналоговый компаратор и опорное напряжение
- Таймер / счетчики
- Внутренний датчик температуры
- Работа с низким энергопотреблением
- Сброс источников
- Начало работы с микроконтроллерами AVR®
Структура 8-битного микроконтроллера AVR®
.
Режимы работы BM71 — Справка разработчика
Переключить навигацию
- Инструменты разработки
- Какие инструменты мне нужны?
- Программные средства
- Начни здесь
- MPLAB® X IDE
- Начни здесь
- Установка
- Введение в среду разработки MPLAB X
- Переход на MPLAB X IDE
- Переход с MPLAB IDE v8
- Переход с Atmel Studio
- Конфигурация
- Плагины
- Пользовательский интерфейс
- Проектов
- файлов
- Редактор
- Редактор
- Интерфейс и ярлыки
- Основные задачи
- Внешний вид
- Динамическая обратная связь
- Навигация
- Поиск, замена и рефакторинг
- Инструменты повышения производительности
- Инструменты повышения производительности
- Автоматическое форматирование кода
- Список задач
- Сравнение файлов (разница)
- Создать документацию
- Управление окнами
- Сочетания клавиш
- Отладка
- Контроль версий
- Автоматизация
- Язык управления стимулами (SCL)
- Отладчик командной строки (MDB)
- Создание сценариев IDE с помощью Groovy
- Поиск и устранение неисправностей
- Работа вне MPLAB X IDE
- Прочие ресурсы
- Улучшенная версия MPLAB Xpress
- MPLAB Xpress
- MPLAB IPE
- Программирование на C
- Компиляторы MPLAB® XC
- Начни здесь
- Компилятор MPLAB® XC8
- Компилятор MPLAB XC16
- Компилятор MPLAB XC32
- Компилятор MPLAB XC32 ++
- MPLAB
Охват кода
- Компилятор IAR C / C ++
- Конфигуратор кода MPLAB (MCC)
- Гармония MPLAB v2
- Гармония MPLAB v3
- среда разработки Atmel® Studio
- Atmel START (ASF4)
- Advanced Software Framework v3 (ASF3)
- Начни здесь
- ASF3 Учебники
- ASF Audio Sine Tone Учебное пособие
- Интерфейс ЖК-дисплея с SAM L22 MCU Учебное пособие
- Блоки устройств MPLAB® для Simulink®
- Утилиты
- FPGA
- Аналоговый симулятор MPLAB® Mindi ™
Инструменты проектирования
- Аппаратные средства
- Начни здесь
- Сравнение аппаратных средств
- Средства отладки и память устройства
- Исполнительный отладчик
- Демо-платы и стартовые наборы
- Внутрисхемный эмулятор MPLAB® REAL ICE ™
- Эмулятор SAM-ICE JTAG
- Atmel® ICE
- Power Debugger
- Внутрисхемный отладчик MPLAB® ICD 3
- Внутрисхемный отладчик MPLAB® ICD 4
- PICkit ™ 3
- Внутрисхемный отладчик MPLAB® PICkit ™ 4
- MPLAB® Snap
- MPLAB PM3 Универсальный программатор устройств
- Принадлежности
- Заголовки эмуляции и пакеты расширения эмуляции
- Пакеты расширения процессора и отладочные заголовки
- Начни здесь
- PEP и отладочных заголовков
- Требуемый список заголовков отладки
- Таблица обязательных отладочных заголовков
- AC162050, AC162058
- AC162052, AC162055, AC162056, AC162057
- AC162053, AC162054
- AC162059, AC162070, AC162096
- AC162060
- AC162061
- AC162066
- AC162083
- AC244023, AC244024
- AC244028
- AC244045
- AC244051, AC244052, AC244061
- AC244062
- Необязательный список заголовков отладки
- Список необязательных отладочных заголовков — устройства PIC12 / 16
- Дополнительный список заголовков отладки — устройства PIC18
- Необязательный список заголовков отладки — устройства PIC24
- Целевые следы заголовка отладки
- Отладочные подключения заголовков
Обзор
- SEGGER J-Link
- K2L
- Рекомендации по проектированию средств разработки
- Ограничения отладки — микроконтроллеры PIC
- Инженерно-технические примечания (ETN) [[li]] Встраиваемые платформы chipKIT ™
Внутрисхемный эмулятор
Внутрисхемный отладчик
Решения для сетевых инструментов
- Проектов
- Начни здесь
- Преобразование мощности
- AN2039 Четырехканальный секвенсор питания PIC16F1XXX
- 8-битные микроконтроллеры PIC®
- 8-битные микроконтроллеры AVR®
- 16-битные микроконтроллеры PIC®
- 32-битные микроконтроллеры SAM
- 32-битные микропроцессоры SAM
- Разработка приложений SAM MPU с MPLAB X IDE
- SAM MPU
Примеры пакетов программного обеспечения
- Запланировано дополнительное содержание…
- Продукты
- 8-битные микроконтроллеры PIC
.
Переход в длительный режим | Написание ОС на Rust (Первое издание)
Содержание
- Некоторые тесты
- Создание стека
- Проверка мультизагрузки
- Проверка CPUID
- Проверка длительного режима
- Собираем все вместе
- Пейджинг
- Настроить персональный пейджинг
- Включить пейджинг
- Таблица глобальных дескрипторов
- Загрузка GDT
- Что дальше?
- Сноски
Больше не обновляется! Вы читаете сообщение о первом издании «Написание ОС на Rust», которое больше не обновляется.Вы можете найти второе издание здесь.
В предыдущем посте мы создали минимальное мультизагрузочное ядро. Он просто печатает OK
и зависает. Цель состоит в том, чтобы расширить его и вызвать 64-битный код Rust. Но процессор в настоящее время находится в защищенном режиме и допускает только 32-битные инструкции и до 4 ГБ памяти. Поэтому нам нужно настроить Paging и сначала переключиться в 64-битный длинный режим.
Я постарался все подробно объяснить и сделать код максимально простым. Если у вас есть какие-либо вопросы, предложения или проблемы, пожалуйста, оставьте комментарий или создайте проблему на Github.Исходный код тоже доступен в репозитории.
🔗Некоторые тесты
Чтобы избежать ошибок и странных ошибок на старых процессорах, мы должны проверить, поддерживает ли процессор все необходимые функции. Если нет, ядро должно прервать работу и отобразить сообщение об ошибке. Чтобы легко обрабатывать ошибки, мы создаем процедуру обработки ошибок в файле boot.asm
. Он печатает элементарное сообщение ERR: X
, где X — буква кода ошибки, и зависает:
; Выводит на экран ʻERR: `и указанный код ошибки и зависает.; параметр: код ошибки (в ascii) в al
ошибка:
mov dword [0xb8000], 0x4f524f45
mov dword [0xb8004], 0x4f3a4f52
mov dword [0xb8008], 0x4f204f20
mov байт [0xb800a], al
hlt
По адресу 0xb8000
начинается так называемый текстовый буфер VGA. Это массив экранных символов, отображаемых видеокартой. В одной из следующих статей мы подробно рассмотрим буфер VGA и создадим для него интерфейс на Rust. Но пока что самый простой вариант — это ручная перестановка битов.
Экранный символ состоит из 8-битного цветового кода и 8-битного символа ASCII. Мы использовали цветовой код 4f
для всех символов, что означает белый текст на красном фоне. 0x52
— это ASCII R
, 0x45
— это E
, 0x3a
— это :
, а 0x20
— это пробел. Второй пробел перезаписывается данным байтом ASCII. Наконец, ЦП останавливается инструкцией hlt
.
Теперь мы можем добавить несколько проверочных функций .Функция — это обычная метка с инструкцией ret
(return) в конце. Для его вызова можно использовать команду call
. В отличие от инструкции jmp
, которая просто переходит к адресу памяти, команда call
отправит адрес возврата в стек (и ret
перейдет на этот адрес). Но у нас еще нет стека. Указатель стека в регистре esp может указывать на некоторые важные данные или даже на недопустимую память. Поэтому нам нужно обновить его и указать на некоторую допустимую стековую память.
🔗Создание стека
Для создания стековой памяти мы резервируем несколько байтов в конце нашего boot.asm
:
...
раздел .bss
stack_bottom:
resb 64
stack_top:
Стек не нужно инициализировать, потому что вытолкнет
только тогда, когда мы нажали
раньше. Таким образом, хранение стековой памяти в исполняемом файле сделало бы его ненужным. Используя раздел .bss и команду resb
(резервный байт), мы просто сохраняем длину неинициализированных данных (= 64).При загрузке исполняемого файла GRUB создаст в памяти раздел необходимого размера.
Чтобы использовать новый стек, мы обновляем регистр указателя стека сразу после начала
:
глобальный старт
раздел .text
бит 32
Начало:
mov esp, stack_top
; напечатать ʻOK` на экран
...
Мы используем stack_top
, потому что стек растет вниз: push eax
вычитает 4 из esp
и затем выполняет mov [esp], eax
( eax
— регистр общего назначения).
Теперь у нас есть действующий указатель стека и мы можем вызывать функции. Следующие функции проверки приведены здесь только для полноты, и я не буду объяснять детали. По сути, все они работают одинаково: они проверят наличие функции и перейдут к ошибке
, если она недоступна.
🔗Многозагрузочная проверка
Мы полагаемся на некоторые функции мультизагрузки в следующих сообщениях. Чтобы убедиться, что ядро действительно загружено загрузчиком, совместимым с мультизагрузкой, мы можем проверить регистр eax
.Согласно спецификации Multiboot (PDF), загрузчик должен записать в него магическое значение 0x36d76289
перед загрузкой ядра. Чтобы убедиться, что мы можем добавить простую функцию:
check_multiboot:
cmp eax, 0x36d76289
jne .no_multiboot
Ret
.no_multiboot:
mov al, "0"
ошибка jmp
Мы используем инструкцию cmp
для сравнения значения в eax
с магическим значением. Если значения равны, инструкция cmp
устанавливает нулевой флаг в регистре FLAGS.Команда jne
(«переход, если не равно») считывает этот нулевой флаг и переходит к заданному адресу, если он не установлен. Таким образом, мы переходим к метке .no_multiboot
, если eax
не содержит магического значения.
В no_multiboot
мы используем команду jmp
(«переход») для перехода к нашей функции ошибок. Мы могли бы с таким же успехом использовать команду call
, которая дополнительно подталкивает адрес возврата. Но адрес возврата не нужен, потому что ошибка
никогда не возвращается.Чтобы передать 0
в качестве кода ошибки в функцию error
, мы перемещаем его в al
перед переходом (ошибка
будет читать его оттуда).
🔗Проверка ЦП
CPUID — это инструкция ЦП, которая может использоваться для получения различной информации о ЦП. Но не каждый процессор это поддерживает. Обнаружение CPUID довольно трудоемко, поэтому мы просто скопируем функцию обнаружения из вики OSDev:
check_cpuid:
; Проверьте, поддерживается ли CPUID, попытавшись перевернуть бит идентификатора (бит 21)
; в реестре ФЛАГОВ.Если можно перевернуть, CPUID доступен.
; Скопируйте флаги в EAX через стек
pushfd
поп Eax
; Скопируйте в ECX для последующего сравнения
mov ecx, eax
; Переверните бит идентификатора
xor eax, 1 << 21
; Скопируйте EAX в FLAGS через стек
толкнуть eax
popfd
; Скопируйте FLAGS обратно в EAX (с перевернутым битом, если CPUID поддерживается)
pushfd
поп Eax
; Восстановите ФЛАГИ из старой версии, хранящейся в ECX (т.е.
; ID сброшен, если он когда-либо был перевернут).
нажать ecx
popfd
; Сравните EAX и ECX.Если они равны, значит бит
; не был перевернут, и CPUID не поддерживается.
cmp eax, ecx
je .no_cpuid
Ret
.no_cpuid:
mov al, "1"
ошибка jmp
В основном, поддерживается команда CPUID
, если мы можем перевернуть какой-то бит в регистре FLAGS. Мы не можем работать с регистром флагов напрямую, поэтому нам нужно сначала загрузить его в какой-то регистр общего назначения, например eax
. Единственный способ сделать это - протолкнуть регистр FLAGS
в стек с помощью инструкции pushfd
, а затем вставить его в eax
.Равным образом записываем его обратно через push ecx
и popfd
. Чтобы перевернуть бит, мы используем команду xor
для выполнения исключающего ИЛИ. Наконец, мы сравниваем два значения и переходим к .no_cpuid
, если оба равны ( je
- «переходить, если равны»). Код .no_cpuid
просто переходит к функции error с кодом ошибки 1
.
Не волнуйтесь, вам не нужно разбираться в деталях.
🔗 Проверка длительного режима
Теперь мы можем использовать CPUID, чтобы определить, можно ли использовать длинный режим.Я снова использую код из OSDev:
check_long_mode:
; проверить, доступна ли расширенная информация о процессоре
mov eax, 0x80000000; неявный аргумент для cpuid
cpuid; получить самый высокий поддерживаемый аргумент
cmp eax, 0x80000001; он должен быть не менее 0x80000001
jb .no_long_mode; если меньше, значит ЦП слишком старый для длительного режима
; используйте расширенную информацию, чтобы проверить, доступен ли длинный режим
mov eax, 0x80000001; аргумент для расширенной информации о процессоре
cpuid; возвращает различные биты функций в ecx и edx
test edx, 1 << 29; проверить, установлен ли бит LM в D-регистре
jz.no_long_mode; Если он не установлен, нет длительного режима
Ret
.no_long_mode:
mov al, "2"
ошибка jmp
Как и многие другие вещи низкого уровня, CPUID немного странный. Вместо того, чтобы принимать параметр, инструкция cpuid
неявно использует регистр eax
в качестве аргумента. Чтобы проверить, доступен ли длинный режим, нам нужно вызвать cpuid
с 0x80000001
в eax
. Это загружает некоторую информацию в ec
.
Режимы работы BM70 - Справка разработчика
Переключить навигацию
- Инструменты разработки
- Какие инструменты мне нужны?
- Программные средства
- Начни здесь
- MPLAB® X IDE
- Начни здесь
- Установка
- Введение в среду разработки MPLAB X
- Переход на MPLAB X IDE
- Переход с MPLAB IDE v8
- Переход с Atmel Studio
- Конфигурация
- Плагины
- Пользовательский интерфейс
- Проектов
- файлов
- Редактор
- Редактор
- Интерфейс и ярлыки
- Основные задачи
- Внешний вид
- Динамическая обратная связь
- Навигация
- Поиск, замена и рефакторинг
- Инструменты повышения производительности
- Инструменты повышения производительности
- Автоматическое форматирование кода
- Список задач
- Сравнение файлов (разница)
- Создать документацию
- Управление окнами
- Сочетания клавиш
- Отладка
- Контроль версий
- Автоматизация
- Язык управления стимулами (SCL)
- Отладчик командной строки (MDB)
- Создание сценариев IDE с помощью Groovy
- Поиск и устранение неисправностей
- Работа вне MPLAB X IDE
- Прочие ресурсы
- Улучшенная версия MPLAB Xpress
- MPLAB Xpress
- MPLAB IPE
- Программирование на C
- Компиляторы MPLAB® XC
- Начни здесь
- Компилятор MPLAB® XC8
- Компилятор MPLAB XC16
- Компилятор MPLAB XC32
- Компилятор MPLAB XC32 ++
- MPLAB
Охват кода
- Компилятор IAR C / C ++
- Конфигуратор кода MPLAB (MCC)
- Гармония MPLAB v2
- Гармония MPLAB v3
- среда разработки Atmel® Studio
- Atmel START (ASF4)
- Advanced Software Framework v3 (ASF3)
- Начни здесь
- ASF3 Учебники
- ASF Audio Sine Tone Учебное пособие
- Интерфейс ЖК-дисплея с SAM L22 MCU Учебное пособие
- Блоки устройств MPLAB® для Simulink®
- Утилиты
- FPGA
- Аналоговый симулятор MPLAB® Mindi ™
Инструменты проектирования
- Аппаратные средства
- Начни здесь
- Сравнение аппаратных средств
- Средства отладки и память устройства
- Исполнительный отладчик
- Демо-платы и стартовые наборы
- Внутрисхемный эмулятор MPLAB® REAL ICE ™
- Эмулятор SAM-ICE JTAG
- Atmel® ICE
- Power Debugger
- Внутрисхемный отладчик MPLAB® ICD 3
- Внутрисхемный отладчик MPLAB® ICD 4
- PICkit ™ 3
- Внутрисхемный отладчик MPLAB® PICkit ™ 4
- MPLAB® Snap
- MPLAB PM3 Универсальный программатор устройств
- Принадлежности
- Заголовки эмуляции и пакеты расширения эмуляции
- Пакеты расширения процессора и отладочные заголовки
- Начни здесь
- PEP и отладочных заголовков
- Требуемый список заголовков отладки
- Таблица обязательных отладочных заголовков
- AC162050, AC162058
- AC162052, AC162055, AC162056, AC162057
- AC162053, AC162054
- AC162059, AC162070, AC162096
- AC162060
- AC162061
- AC162066
- AC162083
- AC244023, AC244024
- AC244028
- AC244045
- AC244051, AC244052, AC244061
- AC244062
- Необязательный список заголовков отладки
- Список необязательных отладочных заголовков - устройства PIC12 / 16
- Дополнительный список заголовков отладки - устройства PIC18
- Необязательный список заголовков отладки - устройства PIC24
- Целевые следы заголовка отладки
- Отладочные подключения заголовков
Обзор
- SEGGER J-Link
- K2L
- Рекомендации по проектированию средств разработки
- Ограничения отладки - микроконтроллеры PIC
- Инженерно-технические примечания (ETN) [[li]] Встраиваемые платформы chipKIT ™
Внутрисхемный эмулятор
Внутрисхемный отладчик
Решения для сетевых инструментов
- Проектов
- Начни здесь
- Преобразование мощности
- AN2039 Четырехканальный секвенсор питания PIC16F1XXX
- 8-битные микроконтроллеры PIC®
- 8-битные микроконтроллеры AVR®
- 16-битные микроконтроллеры PIC®
- 32-битные микроконтроллеры SAM
- 32-битные микропроцессоры SAM
- Разработка приложений SAM MPU с MPLAB X IDE
- SAM MPU
Примеры пакетов программного обеспечения
- Запланировано дополнительное содержание...
- Продукты
- 8-битные микроконтроллеры PIC
- 8-битные микроконтроллеры AVR
- Начни здесь
- 8-битные периферийные устройства AVR®
- Осциллятор
- USART
- прерываний
- аналоговый компаратор и опорное напряжение
- Таймер / счетчики
- Внутренний датчик температуры
- Работа с низким энергопотреблением
- Сброс источников
- Начало работы с микроконтроллерами AVR®
- Использование микроконтроллеров AVR® с Atmel START
- Запланировано дополнительное содержание...
Структура 8-битного микроконтроллера AVR®
- 16-битные микроконтроллеры PIC и dsPIC DSC
.