Лекция
Привет, сегодня поговорим про аппаратное обеспечение компьютера, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое аппаратное обеспечение компьютера, системные вызовы , настоятельно рекомендую прочитать все из категории Операционные системы и системное программировние.
Рис. 2.1. Некоторые компоненты персонального компьютера
Процессор. Процессор: собственный набор команд + собственные регистры + РОН.
Одним из РОН является PSW(Processor Status Word) . Содержит служебную информацию.
Пользовательские программы могут читать весь регистр PSW, но записывать могут только в некоторые из его полей. Важен для системных вызовов и операций ввода-вывода. Большинство центральных процессоров, кроме очень простых (во встроенных системах), имеют два (четыре Intel) режима работы: режим ядра и пользовательский. Режим задается битом слова-состояния процессора (PSW). Процессор, запущенный в режиме ядра, может выполнять все команды и использовать все возможности аппаратуры. В пользовательском режиме: подмножество команд, часть аппаратных средств. Установка бита режима вручную недоступна.
Для связи с операционной системой пользовательская программа должна сформировать системный вызов, который обеспечивает переход в режим ядра и активизирует функции ОС. После завершения работы управление возвращается к пользовательской программе, к команде, следующей за системным вызовом.
Кроме системных вызовов, есть и другие прерывания : деление на ноль, переполнение а операциях с плавающей точкой. Все эти случаи разрешает ОС.
Процессоры: выборка(n+2 команда), декодирование(n+1 команда) и выполнение(n – команда) одновременно – конвейер.
Супер-скалярная архитектура – за один такт считывается две или более команды, сбрасываются в буфер хранения. Выбираются не в порядке следования, но аппаратура должна гарантировать результат тождественный последовательной схеме. Эти усложнения касаются и операционной системы.
Память. Идеал памяти : быстрая, достаточно большая и дешевая. Память представляет собой иерархию слоев.
Верхний слой - внутренние регистры центрального процессора, Программы сами могут управлять регистрами без вмешательства аппаратуры. Размер 32 *32 бит (32 разрядный процессор), 64*64 бита (64-разрядный ).
Следующий слой – кэш-память. Разделена на кэш-строки, по 64 байта. Высокоскоростная кэш-память расположена внутри центрального процессора или очень близко к нему. При чтении слова кэш-микросхема проверяет наличие нужной строки, если есть, то обращение занимает два такта, если нет, то значительные потери времени (зависящие от скорости процессора).Два уровня кэша, причем каждый последующий медленнее и больше предыдущего. Первый кэш – для выборки команд процессора, второй – для пользовательских программ.
Последний слой в пирамиде – магнитная лента – хранение резервных копий жесткого диска. Процесс перемотки (доступа) минуты. Дешевы.
ОЗУ. RAM. Главная рабочая область запоминающего устройства машины.
Дисковая память на два порядка дешевле ОЗУ в пересчете на бит и зачастую на два порядка больше по величине.
ПЗУ программируется в процессе производства . Быстрая и дешевая память.
Электрически стираемое ПЗУ и флэш ОЗУ - энергонезависимы, с их помощью можно исправить ошибки, содержащиеся в программах. Запись медленнее, ч ем в ОЗУ
CMOS-память – энергонезависима, используется для хранения текущих даты и времени. CMOS-память + часовая микросхема, отвечающая за отсчет времени получают питание от маленького аккумулятора. CMOS-память также может содержать конфигурационные параметры, указывающие с какого диска производить загрузку.
Главные программы удобнее держать в памяти целиком. Что касается управления ОЗУ, то при одновременном нахождении нескольких программ возникает необходимость решения двух проблем:
1) Защита программ друг от друга , а ядра от них;
2) Управление перемещением программ в памяти.
В процессе компилирования и компоновки компилятор и компоновщик не знают, в какую область физической памяти будет загружена программа после завершения процесса компиляции. Предполагают, что с 0 –го адлреса начнется и помещают туда первую инструкцию. Решение проблемы: снабжение процессора специальным оборудованием. Простейшее решение: базовый и предельный регистры. В базовый регистр загружается начало исполняемого модуля программы, а предельный регистр – сколько занимает программный модуль вместе с данными, он запрещает ссылаться на любую область после программы. В результате проверки и преобразования данный адрес, сформированный программой называется виртуальным, переводится в адрес, используемый памятью и называемый физическим. Проверку и преобразование адресов выполняет MMU.
Может быть более сложный диспетчер, который состоит из двух пар базового и предельных регистров: одна пара для текста и другая для данных. Командный регистр и все другие ссылки на текст программы работают с парой 1, а ссылки на данные используют пару 2. Появляется возможность делить эту программу между разными пользователями и хранить в памяти только одну копию программы, что было невозможно в первой схеме.
Итак, управление диспетчером памяти должно быть функцией операционной системы.
На характеристики памяти влияет два аспекта. Во-первых, кэш скрывает относительно низкую скорость памяти. Проработавшая некоторое время программа заполняет кэш. Однако при переключении от одной программы к другой, кэш заполнен данными первой программы. Если такая операция происходит часто, то является причиной низкой производительности.
Во-вторых, при переключении о одной программы к другой регистры управления памятью должны меняться. Во втором случае требуется перезагрузка только четырех регистров, но в реальных диспетчерах их обычно намного больше. Переключение занимает время, называется переключением контекста.
Устройство ввода-вывода. Устройства ввода-вывода обычно состоят из контроллера и самого устройства. Контроллер – это микросхема или набор микросхем, на вставляемой в разъем плате, физически управляющая устройством.
В работу контроллера входит представление простого интерфейса для операционной системы. Контроллер диска принимает команду прочесть сектор 11206 с диска 2. При этом контроллер должен преобразовать линейный номер сектора в номер цилиндра, сектора и головки и т.д. Для осуществления этой работы контроллеры содержат маленькие встроенные запрограммированные компьютеры.
Следующей частью является само устройство. Об этом говорит сайт https://intellect.icu . Устройства имеют интерфейсы, например, стандарт IDE (Е IDE)– встроенный интерфейс накопителей для компьютеров с процессоромPentium. Настоящий интерфейс устройства скрыт с помощью контроллера, ОС видит только интерфейс контроллера.
Программа, которая общается с контроллером, называется драйвером устройства. Каждый производитель контроллеров должен поставлять драйверы, структура драйвера зависит от структуры, поддерживаемой им ОС. Поэтому для сканера могут быть драйвера для ОС Windows 98, 2000 UNIX . Драйвер устанавливается в ОС так, чтобы он мог работать в режиме ядра. Есть три способа установки драйвера в ядро. Первый: заново скомпоновать ядро и затем перезагрузить систему UNIX. Второе: сделать во входящем в ОС файле запись о том, что требуется драйвер и затем перезагрузить систему. Во время начальной загрузки ОС сама находит нужные драйверы и загружает их. Это работа Windows. Третий способ: операционная система сама принимает нужные драйверы, не прерывая работы, оперативно устанавливает их, не нуждаясь в перезагрузке. Способ становится все более и более распространенным. Такие устройства как шины USBIEEE 1394 нуждаются только в динамически загружаемых драйверах.
Для связи с каждым контроллером существует небольшое количество регистров. Например, минимальный контроллер диска может иметь регистры для определения адреса на диске, адреса в памяти, номер сектора и направление операции: чтение или запись.
Ввод-вывод данных можно осуществлять тремя различными способами. Простейший метод состоит в том, что пользовательская программа выдает системный запрос, который операционная система транслирует в вызов процедуры соответствующего драйвера. Затем драйвер начинает процесс ввода-вывода. В это время драйвер начинает короткий программный цикл, постоянно опрашивая готовность устройства, с которым он работает (обычно есть некий бит, который указывает, что устройство все еще занято). По завершении операции ввода –вывода драйвер помещает данные туда, куда требуется, и возвращается в исходное состояние. Затем операционная система возвращает управление программе, осуществляющей вызов. Метод называется ожиданием готовности или активным ожиданием и имеет один недостаток: процессор должен опрашивать устройство до тех пор, пока оно не завершит свою работу.
При втором способе драйвер запускает устройство и просит его выдать прерывание по окончании ввода-вывода. После этого драйвер предает данные, операционная система блокирует программу вызова, если это нужно, и начинает выполнять другие задания. Когда контроллер обнаружит окончание передачи данных, он генерирует прерывание, чтобы сигнализировать о завершении операции.
Трехшаговый процесс ввода-вывода. На первом шаге драйвер передает команду контроллеру, записывая информацию в регистры устройства. Затем контроллер запускает устройство.Когда контроллер заканчивает чтение или запись того количества байтов, которое было указано ему передать, он посылает сигнал микросхеме контроллера прерываний, используя определенные провода шины, - это шаг 2. На шаге 3, если контроллер прерываний готов к приему прерывания ( а этого может и не быть, если он занят прерыванием более высокого приоритета, он подает сигнал на определенный контакт процессора, таким образом информируя центральный процессор. На шаге 4 контроллер прерываний выставляет номер устройства на шину так, чтобы ЦП мог прочесть и узнать какое устройство только что завершило свою работу ( ведь в одно и то же время могут работать несколько устройств). Номер устройства может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний.
Третий метод ввода-вывода заключается в использовании специального контроллера прямого доступа к памяти (DMA), который управляет потоком битов между оперативной памятью и некоторым контроллерами без постоянного вмешательства центрального процессора. Процессор вызывает микросхему (DMA), говорит ей, сколько байтов нужно передать, сообщает адреса устройства и памяти, а также направление передачи и позволяет дальше действовать самой. По завершении работы DMA инициирует прерывание, которое обрабатывается так же, как было описано выше.
Прерывания часто происходят в очень неподходящие моменты, например, во время обработки другого прерывания. По этой причине центральный процессор обладает возможностью запрещать прерывания и разрешать их позже. Пока прерывания запрещены, все устройства, завершившие работу, продолжают посылать свои сигналы, но работа процессора не прерывается, пока все прерывания не будут разрешены. Если несколько устройств одновременно заканчивают работу, контроллер прерываний решает, какое из них должно быть обработано первым, обычно основываясь на статических приоритетах, назначенных для каждого устройства.
Шины. Структура, показанная на рис 2.1 в течение многих лет использовалась на миникомпьютерах, а также на первых моделях IBM PC. Машины стали быстрее работать возможностей, одной шины стало явно недостаточно. Дополнительные шины для ускорения общения с устройствами ввода-вывода, для пересылки данных между процессором и памятью. Вследствие этой эволюции большая система Pentium выглядит следующим образом.
Восемь шин (шина кэша, локальная шина , шина памяти, PCI, SCSI, USB, IDE, ISA) каждая со своей скоростью и со своими функциями. В ОС для управления компьютером и его конфигурации должны собираться сведения обо всех этих шинах. Две основные ISA (Industry Standart Architecture – промышленная стандартная архитектура) –8,3 МГц -16,67 Мб/с, и PCI(Peripherial Component Interconnect –интерфейс периферийных устройств) – 66 МГц -528 Мбайт/с – высокоскоростные устройства ввода-вывода.
При такой конфигурации ЦП передает данные по локальной шине схеме PCI- моста, который, в свою очередь обращается к выделенной шине памяти- 100 МГц.
Системы Pentium имеют кэш первого уровня, встроенный в процессор, и намного больший кэш второго уровня, подключенный к процессору отдельной шиной кэша.
Три специализированные шины: IDE, USB и SCSI.
IDE – диски и CD-ROM.
USB – (Universal Serial Bus – универсальная последовательная шина) – медленные устройства ввода-вывода (клавиатура, мышь) -загрузка данных со скоростью 1,5 Мбайт/с.USB –централизованная шина, по которой главное устройство каждую секунду опрашивает устройства ввода-вывода, чтобы узнать есть ли у них данные.
Все USB-устройства используют один драйвер, поэтому их можно присоединять к системе без перезагрузки.
SCSI (Small Computer System Interface –системный интерфейс для малых компьютеров) – высокопроизводительная шина, применяемая для быстрых дисков, сканеров, и др. 160 Мбайт/с.
Есть еще одна шина – IEEE 1394 Fire Wire 50 Мбайт/с .Цифровые видеокамер, мультимедийные устройства, не имеет центрального контроллера.
До появления стандарта «plag and play» каждая плата имела фиксированные адреса регистров ввода-вывода и уровень запроса прерывания. Например, клавиатура использовала прерывание 1 и адреса в диапазоне 0х60..0х64, контроллер гибкого диска прерывание 6 и адреса в диапазоне 0х3F0 .. 0x3F7 и так далее.
Если пользователь случайно покупал звуковую карту и модем оба устройства случайно использовали, например, 4-е прерывание. Они конфликтовали. Возникала необходимость встроитьDIP – переключателей (джамперы), в каждую плату и объяснять пользователю необходимость настройки каждой платы таким образом, чтобы адреса портов и номера прерываний различных устройств не конфликтовали друг с другом.
Работая в этом окружении Рис 2. ОС должна распознавать аппаратные средства и уметь их настраивать. Стандарт «plag and play» позволяет системе автоматически собирать информацию об устройствах ввода-вывода, централизованно назначать уровни прерываний и адреса ввода-вывода, а затем сообщать плате эту информацию каждой плате эту информацию.
При начальной загрузке стартует система BIOS. BIOS находится на материнской плате во флэш-ОЗУ. Сначала она проверяет размер ОЗУ, наличие основных устройств(клавиатура,…).BIOS начинает проверку с шин ISA и PCI, чтобы определить все устройства, которые присоединены к ним. Регистрируются унаследованные устройства (фиксированные адреса прерывания и адреса порта ввода-вывода), регистрируются устройства «plag and play».
Затем BIOS определяет устройство, с которого будет происходить загрузка, по очереди проверяя список из CMOS-памяти (гибкий диск, компакт, жесткий).
После этого ОС запрашивает BIOS, получая информацию о конфигурации. Проверяется наличие драйверов для каждого устройства. Если все драйверы на месте, то ОС загружает их в ядро, если нет, то запрашивает с гибкого диска или с компакта. Затем инициализируются таблицы драйверов, создаются необходимые фоновые процессы, запускается программа ввода пароляили графический интерфейс на каждом терминале.
Системные вызовы - интерфейс между операционной системой и программами пользователя. СВ – сердце операционной системы, они говорят о том, что реально может сделать ОС. Системные вызовы, доступные в интерфейсе, меняются от одной операционной системы к другой, хотя концепция их одинакова.
Системные вызова похожи на реализацию процедур, только системный вызов выполняется в адресном пространстве ядра, а, значит, и в режиме ядра.
Пример: count= read(fd, buf, nbytes);
Системные вызовы выполняются за серию шагов. Сначала при подготовке к вызову библиотечной процедуры read вызывающая программа помещает параметры в стек (шаги 1-3). Затем :собственно вызов библиотечной процедуры (шаг 4).
Библиотечная процедура помещает номер системного вызова в регистр (где его ожидает операционная система) (шаг 5). Затем переход в режим ядра (шаг 6). Запускаемая программа ядра использует таблицу указателей на обработчики системных вызовов, индексированную по номерам вызовов.(шаг 7). Затем начинает функционировать обработчик вызовов (шаг 8). Как только он завершит свою работу, управление возвращается в пространство пользователя (шаг 9) к команде, следующей за системным вызовом.(шаг 10).
Чтобы закончить работу, программа пользователя должна очистить стек, как это и делается после каждого вызова процедуры (11). Стек растет вниз, значит указатель стека нужно увеличить настолько, чтобы удалить параметры, помещенные в стек под запросом read.
Теперь программа может продолжать свою работу.
Интерфейсы системы UNIX Можно рассматривать в виде пирамиды у основания пирамиды – аппаратура. Функция ОС управление аппаратным обеспечением, предоставление всем программам интерфейса системных вызовов. Системные вызовы позволяют программам создавать процессы, файлы, прочие ресурсы, а так же управлять ими.
Программы обращаются к системным вызовам, помещая аргументы в регистры центрального процессора (или в стек), выполняя команду эмулирования прерывания для передачи управления ОС и перехода из пользовательского режима в режим ядра. На С невозможно написать команду эмулированного прерывания, этим занимаются библиотечные функции, по одной на системный вызов. Каждая такая процедура помещает аргументы в нужное место и выполняет команду эмулированного прерывания TRAP. Таким образом, чтобы обратиться к системному вызову read, программа на С должна вызвать библиотечную функцию read. В стандарте POSIX определен именно интерфейс библиотечных функций, а не интерфейс системных вызовов, там даже не упоминаются фактические системные вызовы.
Помимо ОС и библиотеки системных вызовов все версии содержат большое количество стандартных программ, некоторые описаны в стандарте POSIX 1003.2, многие могут различаться вразных версиях. К этим программам относится программный процессор (оболочка), компиляторы , редакторы, утилиты для работы с файлами.
Таким образом, три интерфейса в системе UNIX:
1) интерфейс системных вызовов;
2) интерфейс библиотечных функций;
3) интерфейс, образованный стандартным набором обслуживающих программ (который не имеет никакого отношения к системе и может быть легко заменен).
Рис. 1.2. Уровни операционной системы UNIX
Windows Win 32 API. Windows и UNIX - принципиально разные модели программирования. Программы UNIX выполняют те или иные действия, обращаясь к системе для предоставления тех или иных услуг. Программы в Windows приводятся в действие событиями. Основной модуль ждет, когда произойдет какое-либо событие, затем вызывает процедуру для его обработки, например, передвижение мыши, нажатие клавиатуры, появление гибкого диска в дисководе. Затем обработчики событий переписывают содержимое экрана и внутреннее состояние программы. Следствие – совершенно отличный от UNIX стиль программирования.
В Windows тоже есть системные вызовы. Однако, если в UNIX вызовы почти один к одному идентичны библиотечным процедурам, например, read. Кроме того, в стандарте POSIX около 100 процедурных вызовов. То в Windows, фактические системные вызовы и запускающиеся для их выполнения библиотечные вызовы полностью разделены. Для того, чтобы изменять системные вызовы от одной версии к другой, не делая недействительными существующие программы. Корпорация Microsoft определила набор процедур Win32 API, предполагается, что программисты должны использовать его для вызова служб операционной системы. Количество Win32 API – тысячи. Существенное число работает целиком в пространстве пользователя, какие – невозможно определить.
Если в UNIX графический интерфейс пользователя выполняется в пользовательском пространстве, то в Windows есть огромное количество вызовов для управления окнами, пунктами меню, другими элементами графики, и все это – системные вызовы, так как графическая подсистема запускается в режиме ядра. Однако, несмотря на то, что эти вызовы выполняются ядром, они не связаны с функциями операционной системы.
Примеры Win32 API : CreateProcess, CreateFile, ReadFile, CloseHandle.
Win32 API не является полностью единообразным и последовательным интерфейсом. Причина: необходимость совместимости c 16- разрядным интерфейсом Windows 3.х.
10. Назначение технологии «plag and play» при подключении периферии.
Надеюсь, эта статья про аппаратное обеспечение компьютера, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое аппаратное обеспечение компьютера, системные вызовы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционные системы и системное программировние
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Операционные системы и системное программировние
Термины: Операционные системы и системное программировние