- •Содержание
- •Введение
- •1. Системное программное обеспечение компьютера
- •1.1. Понятие системного программирования
- •1.1.1. Этапы подготовки программы
- •Следующим этапом является трансляция.
- •1.1.3. Интерпретация
- •Интерпретация ‒ реализация смысла некоторого синтаксически законченного текста, представленного на конкретном языке.
- •1.2. Прерывания
- •1.2.1. Виды прерываний
- •1.2.2. Клавиатурное прерывание
- •1.2.3. Кольцевой буфер (417h, 418h)
- •1.3. Операционные системы
- •1.3.1. Функции операционной системы
- •1.3.2. Ядро операционной системы
- •1.3.3. Операционная система ms dos
- •1.3.4. Управление задачами и памятью в операционных системах
- •1.3.5. Качество диспетчеризации и гарантии обслуживания
- •1.3.6. Диспетчеризация задач с использованием динамических приоритетов
- •1.3.6.1. Дефрагментация диска
- •1.3.6.2. Очистка диска
- •1.3.6.3. Архивация данных
- •1.3.6.4. Сведения о системе
- •1.3.6.5. Восстановление системы
- •1.3.7. Загрузчик ос, этапы загрузки ос
- •1.3.8. Системный диск
- •1.3.9. Загрузочный сектор
- •1.3.10. Функции таймера - звук и время
- •1.3.11. Генерация звука
- •1.3.12. Настройка системы
- •1.4. Файловая система компьютера
- •1.4.1. Файловая система fat
- •1.4.2. Система ntfs
- •1.4.3. Мастер-таблица
1.3.8. Системный диск
Загрузочный (системный) диск (дискета) позволит загрузить компьютер в обход установленной на жестком диске операционной системы.
Не зависимо от того где и как был изготовлен загрузочный (системный) диск (дискета) компьютер загрузится именно с него, а не с жесткого диска. Загрузочный (системный) диск может быть изготовлен на CD (лазерный диск).
Диск, содержащий рабочую версию ОС Windows XP, содержит правильную главную загрузочную запись (сектор) и блок начальной загрузки в начале раздела диска (тома), кроме этого в корне дискового тома файлы ntldr, ntdetect.com, boot.ini, bootfont.bin и каталог с системными файлами ОС, обычно указанный в boot.ini.
В отсутствие файла boot.ini загрузка будет идти в предположении о наличии каталога \WINDOWS. В самом конце загрузки Windows XP на экране монитора отображается страница приветствия. На этой странице перечислены все имена зарегистрированных пользователей. Если вы единоличный пользователь компьютера, страница приветствия может быть не нужна, а требуется, чтобы система автоматически загружалась под каким-либо пользователем, без появления окна приветствия.
Чтобы настроить это, нужно в разделе реестра
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\ CurrentVersion \ Winlogon
установить для параметра AutoAdminLogon (типа DWORD) значение 1. В том же разделе в значениях параметров DefaultUserName и BefaultPassword указать имя пользователя и пароль, под которыми должен осуществляться запуск системы, также указать имя домена в параметре DefaultDomainName, если ваш компьютер использует домен. Задать число автоматических входов можно, перейдя в раздел
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
и создав параметр AutoLogonCount типа DWORD, в качестве значения задав нужное число. Когда установленное число автоматических загрузок будет исчерпано, ключи AutoLogonCount и DefaultPassword будут удалены, параметру AutoAdininLogon будет присвоено нулевое значение.
1.3.9. Загрузочный сектор
Загрузочный сектор ‒ это особый сектор на жёстком диске, дискете или другом дисковом устройстве хранения информации (для жесткого диска ‒ первый физический сектор для каждого раздела). В процессе загрузки компьютера с дискеты он загружается в память программой POST, ему передается управление командой long jump.
Загрузочный сектор, иногда называемый stage1, то есть первым этапом загрузки операционной системы, загружает программу второго этапа загрузки операционной системы stage 2 (вторичный загрузчик). Иногда в качестве stage 2 загружается boot manager или программа авторизации и защиты доступа. В некоторых ОС роль stage1 выполняет MBR и при загрузке ОС с жесткого диска загрузочный сектор не используется.
1.3.10. Функции таймера - звук и время
Микросхема таймера генерирует импульсы частоты 1193180 гц. Эта последовательность импульсов поступает на три канала таймера. В каждом канале есть свой счетчик, работающий как делитель частоты, максимальное число которое может быть записано в счетчике (коэффициент деления) - 655357. Счетчики каналов таймера независимы друг от друга и доступны для программиста. Назначение каналов таймера следующее:
канал 0 используется для системной службы времени. При инициализации системы BIOS записывает в счетчик этого канала максимально возможное число, таким образом, импульсы на выходе делителя выдаются с частотой около 18.2 гц (период этой частоты - около 55 мсек - программисты иногда называют «тиком» таймера). Выход делителя этого канала поступает на контроллер прерываний и вызывает прерывание с номером 8;
выход канала 1 используется схемами регенерации памяти, поэтому программисты с этим каналом не работают;
выход канала 2 поступает на динамик ПЭВМ, этот канал используется для генерации звука.
Каждый канал может работать в одном из 6 режимов, но программисты, как правило, используют его в режиме 3 (генератор меандра).
Программирование канала таймера представляет собой запись числа в счетчик канала. Имеется один управляющий порт - 0x43 для всех каналов и по одному порту данных для каждого канала - 0x40, 0x41, 0x42. При программировании следует записать в порт 0x43 управляющий байт, который обычно имеет вид:
x x 1 1 0 1 1 0,
где xx - номер канала таймера, а затем послать в порт данных выбранного канала сначала младший, а затем старший байт счетчика.
Системная служба времени. Импульсы, поступающие с выхода канала 0 таймера, вызывают прерывание 8. Обработчик этого прерывания в BIOS подсчитывает количество таких импульсов в 4-байтной области памяти (два 2- байтных слова). Этот счетчик, находящийся в области памяти BIOS по адресу 0040:006C, таким образом, хранит количество тиков таймера, прошедших от полуночи (0 в счетчике соответствует полночи). При запуске системы BIOS запрашивает у оператора время дня, переводит его в количество тиков и записывает по указанному адресу. Затем в процессе работы это число модифицируется обработчиком прерывания 8. То обстоятельство, что обработчик прерывания 8 в BIOS обеспечивает работу службы времени следует учитывать при перехвате прерывания 8 и при перепрограммировании канала 0 таймера.
Доступ к счетчику времени поддерживается прерыванием 0x1A. При обращении к этому прерыванию со значением 0 в регистре AH мы получаем в CX старшую, а в DX - младшую части счетчика. При обращении со значением 1 в AH мы задаем счетчик в регистрах CX, DX, и это значение записывается в память BIOS.
DOS поддерживает службу времени функциями 0x2C (чтение времени) и 0x2D (установка времени). Для представления времени в этих функциях используются регистры: CH (часы), CL (минуты), DH (секунды), DL (сотые доли секунды).
При загрузке система запрашивает у оператора также текущую дату, которая сохраняется где-то в DOS. Доступ к дате обеспечивается функциями DOS 0x2A - чтение и 0x2B - установка (регистры: CX - год, DH - месяц, DL - число). Всякий раз, когда счетчик времени суток в области данных BIOS достигает значения, соответствующего 24 часам, он сбрасывается в 0, и устанавливает в 1 флаг наращивания даты - 1 байт по адресу 0040:0070. При запросе даты DOS анализирует этот флаг и, если он установлен, наращивает дату и сбрасывает флаг.
В AT имеются независимые часы реального времени, показания которых содержатся в CMOS-памяти. Регистры CMOS-памяти, связанные со временем и датой следующие: 0 - секунды, 2 - минуты, 4 - часы, 6 - день недели (0 - воскресенье), 7 - день месяца, 8 - месяц, 9 - год. Доступ к этим данным - либо через порты 0x70, 0x71, либо через прерывание 0x1A. Функция 2 этого прерывания (AH=2) - чтение часов реального времени, функция 3 - установка часов, функции 4, 5 - чтение и установка даты соответственно. Используются те же регистры, что и в функциях DOS 0x2C, 0x2A, но все данные представляются в двоично-десятичном коде. При загрузке системы на AT время дня и дата выбираются из этих часов, далее эти часы и системная служба времени работают независимо друг от друга.
Кроме того, в AT имеется также возможность запрограммировать прерывание на заданное время, в описаниях это часто называют сигналом тревоги (alarm). Время поступления этого сигнала заносится в регистры CMOS-памяти: 1 - секунды, 3 - минуты, 5 - часы, а прерывание по достижению заданного времени разрешается единицей в разряде 5 регистра 0x0B. При достижении заданного времени происходит прерывание 0x4A. Сигнал тревоги может быть задан при помощи функции 6 прерывания 0x1A, а отменен - функцией 7.
Работа в реальном времени. В целом ряде приложений необходима привязка действий программы к определенным моментам времени или к временным интервалам. Наиболее простой подход заключается в циклическом опросе системного счетчика времени. Если же требуется заполнить паузы ожидания какой-либо полезной работой, приходится прибегать к расширению прерывания таймера. Для этого случая создается дополнение к прерыванию таймера, которое подсчитывает тики таймера параллельно с BIOS и по истечении заданного интервала либо сама выполняет требуемые действия, либо устанавливает какой-то флаг, по которому эти действия выполнит программа переднего плана.
Характерным примером такой задачи является создание фонового музыкального сопровождения - музыка играет в то время, как программа производит вычисления. При инициировании музыки переменные N и NM устанавливаются в начальные значения и подменяется вектор прерывания 8. «Полезная» работа программы переднего плана заключается в чтении кода нажатой клавиши, получении и выводе на экран текущего времени (это дает нам возможность убедиться в том, что работа системной службы времени не нарушена). При нажатии клавиши Esc программа и музыка завершаются. При поступлении очередного прерывания 8 управление получает функция newtime. Она, прежде всего, вызывает системный обработчик прерывания 8, а затем уменьшает счетчик тиков NM. Если счетчик тиков исчерпан, то отключается звук, программный цикл обеспечивает короткую паузу между нотами, а затем выбирается коэффициент деления для очередной ноты, который используется для программирования канала 2 таймера, а ее длительность устанавливается в счетчик NM.