- •Тема 1. Общие понятия об информации и информатике.
- •Тема 2. Арифметические основы эвм.
- •Тема 3. Логические основы эвм.
- •Тема 1. Основные понятия. Элементы языка Pascal.
- •Типы данных в Pascal.
- •Операции и выражения.
- •Стандартные функции.
- •Ввод и вывод на экран.
- •Оператор присваивания.
- •Тема 2. Операторы Pascal.
- •Сложные условия.
- •Оператор выбора.
- •Операторы цикла for.
- •Оператор цикла while.
- •Оператор цикла repeat.
- •Вложенные циклы.
- •Прочие операторы Pascal.
- •Тема 3. Общая структура программ на Pascal.
- •Тема 4. Массивы. Одномерные массивы.
- •Сортировка массивов и поиск элементов в массиве.
- •Многомерные массивы.
- •Тема 5. Функции и процедуры. Описание функций.
- •Обращение к функции.
- •Процедуры.
- •Заголовок процедуры.
- •Параметры-значения и параметры-переменные.
- •Локальные и глобальные переменные.
- •Рекурсия.
- •Тема 4. Основы устройства эвм.
- •Тема 5. Устройство эвм совместимой с ibm pc.
- •Тема 6. Программные средства эвм.
- •Тема 7. Основные свойства ос семейства Windows.
- •Приложения Winl6
- •Раздел 2. Программирование на языке Pascal.
Операции в скобках выполняются в первую очередь. Пример:
Определить истинность высказывания:
Из примера видно, что любое сложное высказывание можно рассматривать, как некоторую функцию. Простые высказывания, входящие в эту функцию можно рассматривать как переменные, а значения сложного высказывания как значение функции. Такая функция называется логической , либо булевой. В двух различных формулах могут быть одинаковые таблицы истинности. Например:
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
Две различные формулы, представляющие одну и ту же булеву функцию, то есть имеющая одинаковые таблицы истинности, называются равносильными. Используя это понятие, можно установить связь между логическими операциями. Например:
Запишем несколько законов, позволяющих упростить выражения:
Законы де Моргана.
Закон снятия двойного отрицания.
Коммуникативные законы.
Ассоциативные.
Дистрибутивные.
Законы идемпотентности.
Кроме перечисленных законов полезны следующие равносильности:
Используя вышеперечисленные законы и равносильности любую сложную формулу алгебраической логики можно привести к виду, в котором будут присутствовать только базовые логические операции.
Таким образом любая булева формула может быть приведена к равносильной ей формуле следующего простого стандартного вида: дизъюнкция двух элементов, каждая из которых представляет собой конъюнкцию отдельных переменных со знаком отрицания или без него, причем ни в какой конъюнкции переменная не встречается со своим отрицанием и все конъюнктивные члены различны между собой. Такая стандартная формула булевых формул называется дизъюнктивной нормальной формой. Булева формула может быть также представлена конъюнктивной нормальной формой (предыдущие правила наоборот). Если задана некоторая произвольная функция своей таблицей истинности, то возможно подобрать формулу логики высказываний, удовлетворяющую данной таблице. Для этого необходимо:
Выделить все наборы переменных, для которых функция принимает единичное значение.
Каждому набору ставим в соответствие конъюнкцию, причем, если переменная равна нулю, то в конъюнкцию она входит с отрицанием.
Объединяем полученные конъюнкции в общую формулу при помощи дизъюнкций.
X |
Y |
Z |
F(x;y;z) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
Полученная функция имеет дизъюнктивную нормальную форму.
Пример 2. Реализация сложения одноразрядных чисел.
Представим правила сложения в виде таблицы истинности: x1 и x2 – слагаемые, S- сумма, P – перенос в старший разряд. Реализуем эти функции в дизъюнктивной нормальной форме.
x1 |
x2 |
S |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
Тема 4. Основы устройства эвм.
Рассмотрим общую схему ЭВМ:
Схема включает:
1) арифметико-логическое устройство
2) устройство управления
3) регистры
4) внутреннюю память
5) внешнюю память
6) устройства ввода/вывода (Input/Output)
7) шины передачи данных
АЛУ, устройство управления и регистры составляют процессор. Основной принцип организации ЭВМ состоит в том, что она работает под управлением хранимой в памяти программы, состоящей из набора команд. Выполнение каждой команды заключается в том, что производится отдельные действия или операции над имеющимися данными. И для представления команд, и для представления команд, и для представления данных используются двоичная система счисления.
АЛУ предназначено для выполнения всех арифметических и логических операций.
Устройство управления обеспечивает управление работой всех остальных устройств ЭВМ и их взаимодействие.
Внутренняя память хранит программы и данные для них. Память состоит из ячеек, каждая из которых имеет свой номер, называемый адресом. По этому адресу к ней можно обратиться и произвести либо запись, либо чтение. Каждая ячейка характеризуется разрядностью, каждый момент времени доступно обращение только к одной ячейке.
Внешняя память предназначена для хранения больших объемов информации, в качестве устройств внешней памяти используются магнитные и оптические диски, а также некоторые электронные накопители.
Устройства ввода служат для введения исходных данных и программ в ЭВМ. Они обеспечивают считывание информации с определенных носителей и преобразование ее в форму электрических сигналов воспринимаемых устройствами ЭВМ.
Устройства вывода используются для представления результатов работы ЭВМ в необходимом виде. Также могут обеспечивать передачу результатов на исполнительные механизмы управляемого объекта.
Шины – служат для передачи информации из одного устройства в другое.
Содержимое внутренней памяти ЭВМ разделяется на команды и данные. Команды определяют, что именно необходимо выполнить. Когда команда считывается из памяти, она поступает в устройство управления., которое анализирует команду, определяет необходимые действия и выполняет их. Например: считать данные из памяти в АЛУ, выполнить над ними некоторую арифметическую операцию и записать результат обратно в память. В общем случае существует – четырех, -трех, -двух, -одно, безадресные команды.
Код операции |
Адрес 1 |
Адрес 2 |
Адрес 3 |
Адрес 4 |
||||
Код операции |
Адрес 1 |
Адрес 2 |
Адрес 3 |
|
||||
Код операции |
Адрес 1 |
Адрес 2 |
|
|||||
Код операции |
Адрес 1 |
|
||||||
Код операции |
|
|||||||
Код операции |
Регистры |
|
||||||
Смотри на следующей странице.
Вначале рассмотрим четырехадресные команды. Код операции (КОП) определяет то действие (операцию), которую должна выполнить команда. Адрес1 и адрес2 определяют адреса ячеек памяти, из которых берутся исходные данные (операнды). Адрес3 определяет ячейку памяти, куда помещается результат. Адрес4 определяет ячейку памяти, откуда выбирается следующая команда.
Рис. 1
На рис. 4 показано, что устройство управления можно разделить на устройство определения кода операции (дешифрирующее устройство) и исполнительное устройство. Также показаны следующие регистры, входящие в состав процессора:
регистр команд, в который загружается команда, подлежащая выполнению;
два регистра данных, в которые загружаются исходные данные (операнды);
регистр результата, в котором сохраняется результат операции;
регистр состояния, в котором сохраняется определенная информация о выполненной операции (например, равенство результата нулю, отрицательность результата, наличие арифметического переполнения и т.п.).
Рассмотрим процесс выполнения четырехадресной команды по шагам.
Считаем, что подлежащая выполнению команда находится в регистре команд:
команда поступает на дешифрирующее устройство, где определяется ее код операции и адреса, где находятся данные;
исполнительное устройство считывает первый операнд из ячейки памяти с адресом Адрес1 в регистр1 данных;
исполнительное устройство считывает второй операнд из ячейки памяти с адресом Адрес2 в регистр2 данных;
арифметико-логическое устройство выполняет необходимую операцию (в зависимости от кода операции), результат сохраняется в регистре результата и регистре состояния
Содержимое регистра результата пересылается в ячейку с адресом Адрес3
Команда из ячейки с адресом Адрес4 считывается в регистр команд.
В случае трехадресных команд отсутствует Адрес4, то есть адрес следующей команды. Поэтому вводится дополнительный регистр, называемый указатель команды, в которой содержится адрес следующей команды (рис. 5)
Рис. 2
В процессе выполнения меняется только шаг 6, на котором в регистр команд считывается команда из ячейки памяти, адрес которой содержится в указателе команд и добавляется шаг 7, на котором значения указателя команд увеличением на единицу. Таким образом, следующая команда будет считана из соседней ячейки с большим адресом. Получается, что команды выполняются последовательно, одна за одной, как они записаны в памяти. Поскольку бывает необходимым нарушить этот порядок выполнения ( например, для того, чтобы организовать многократное выполнение группы одних и тех же команд – так называемый цикл), вводятся специальные команды перехода, которые позволяют нарушить этот порядок выполнения команд «одна за одной». Действие этих команд заключается в том, что они загружают в указатель команд некоторое число и тем самым обеспечивают переход к выполнению команды, расположенной в ячейке с адресом, равным этому числу. Команды перехода бывают безусловные (выполняются всегда) и условные (выполняются или нет в зависимости от содержимого регистра состояния).
Двухадресные, одноадресные и безадресные команды, как правило, используются вместе. Двухадресные команды содержат только либо адреса операндов (при этом результат должен сохраняться в памяти отдельной командой), либо адрес одного из операндов и результата (второй операнд должен быть заранее загружен в регистр данных). Одноадресная команда либо загружает один операнд, либо сохраняет результат. Безадресные команды работают с данными, заранее загруженными в регистры. Таким образом, полное выполнение операции, с загрузкой исходных данных и сохранением результата требует более чем одной команды. Однако сами команды выполняются быстрее, а также упрощается устройство управления. Поэтому современные ЭВМ используют двухадресные, одноадресные и безадресные команды.
В целом, команды ЭВМ можно разделить на следующие группы:
арифметические;
логические;
сравнения;
загрузки и сохранения данных;
перехода.
Рассмотренный способ получения данных из памяти ЭВМ получил название прямой адресации. Имеется также косвенная и непосредственная адресации. При косвенной адресации адрес в команде указывает не на ячейку памяти, где хранится операнд, а на ячейку, где находится адрес операнда. То есть после чтения числа из ячейки памяти, это число трактуется как адрес операнда и возникает необходимость еще один раз обратиться к памяти, теперь уже за самим операндом. Кроме того, возникает необходимость еще в одном регистре – адресном, в который считывается адрес операнда. На рис. 6 это показано для одноадресной команды загрузки в регистр 1 данных.
Рис. 3
Команда выполняется следующим образом:
команда поступает на дешифрирующее устройство, где определяется ее код операции и необходимость косвенной адресации;
исполнительное устройство считывает адрес операнда из ячейки памяти с адресом Адрес1 в адресный регистр;
исполнительное устройство считывает операнд из ячейки памяти с адресом, соответствующим содержимому адресного регистра в регистр1 данных;
команда из ячейки с адресом, соответствующим содержимому указателю команд, считывается в регистр команд;
Содержимое указателя команд увеличивается на единицу.
При непосредственной адресации вместо адреса в команде содержится сам операнд. На рис. 7 это показано для команды загрузки в регистр 1 данных.
Рис. 4
Команда выполняется следующим образом:
команда поступает на дешифрирующее устройство, где определяется ее код операции и необходимость непосредственной адресации;
исполнительное устройство считывает операнд из регистра команд в регистр1 данных;
команда из ячейки с адресом, соответствующим содержимому указателю команд, считывается в регистр команд;
Содержимое указателя команд увеличивается на единицу.
Соединение блоков ЭВМ осуществляется при помощи шины. Шиной называется совокупность электрических проводников, по которым передаются данные от одного блока к другому. Как правило, современные ЭВМ построены единой шиной, к которой присоединены все устройства.
Единую шину принято разделять на три.
Шина данных, по которой передаются данные между блоками
Шина адреса, на которую выставляются адреса пустых ячеек памяти или устройств
Шина управления, по которой передаются управляющие сигналы.
Устройство внешней памяти и устройства ввода/вывода подключаются к шине через контроллеры, которые непосредственно управляют работой этих устройств.
Каждый контроллер имеет свой адрес или диапазон адресов, по которому к нему можно обратиться. Эти адреса друг с другом не совпадают. Основной принцип работы ЭВМ с общей шиной заключается в том, что в каждый момент к шине может быть подключено только два устройства – передающее данные и принимающее, причем одно из них является инициатором обмена, то есть ведущим, а второе – ведомым. Для указания с каким именно ведомым устройством требуется осуществить обмен, ведущее устройство использует типы адреса и управления. Имеется три основных способа обмена данными:
Программа управляемая.
При этом способе инициатором обмена всегда выступает процессор. Обмен осуществляется в несколько шагов:
на шине управления выставляется сигнал, с чем именно будет осуществляться обмен: с внутренней памятью или с внешними устройствами, поскольку их адреса могут совпадать.
на шине адреса выставляется адрес необходимой ячейки внутренней памяти или контроллера внешнего устройства. Остальные ячейки памяти или устройства отключаются от шины.
на шине управления выставляется сигнал, определяющий направление обмена: в процессор или из него.
на шине управления выставляется сигнал готовности к обмену
по шине данных передаются данные.
Обмен по прерываниям.
При этом способе внешнее устройство при помощи специального сигнала в шине управления, который называется сигнал запроса на прерывание, информирует процессор о необходимости осуществить обмен данными. Такие прерывания называются аппаратными. При этом процессор прерывает выполнение текущей программы и начинает выполнять обмен данными с внешним устройством. После его завершения процессор возвращается к выполнению прерванной программы. Имеются также программные прерывания. Когда процессор прерывает выполнение программы при помощи специальной команды, выполняет обмен или другие действия, затем возвращается к прерванной программе.
Прямой доступ к памяти.
Такой способ обмена между внешними устройствами и внутренней памятью в котором не участвует процессор, а управление шиной осуществляет контроллер внешнего устройства.
Тема 5. Устройство эвм совместимой с ibm pc.
Персональная в ЭВМ совместимая с IBM PC является самой массовой ЭВМ. Первая IBM PC появилась в 1982 году. Конструктивно PC представляет собой настольное устройство состоящее из ряда устройств:
Системный блок
Монитор
Клавиатура
прочие устройства
Системный блок включает в себя основную (системную) материнскую плату, платы расширения, дисководы жестких, гибких, оптических дисков, блок питания.
Материнская плата содержит микропроцессор, память и ряд контроллеров.
Микропроцессор – большая интегральная схема, содержащая АЛУ, устройство управления, регистры и ряд вспомогательных устройств, необходимых для эффектной организации вычислений (например, кэш).
Под IBM PC чаще всего используются процессоры, выпускаемые фирмой Intel. Первые ЭВМ использовали микропроцессоры серии 8088 и 8086. Затем последовательно использовались 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV. Основными характеристиками микропроцессора является тактовая частота и разрядность шин адреса и шин данных. Различают внутреннюю и внешнюю частоты. Внутренняя (рабочая) – частота определяет скорость работы внутренних устройств микропроцессора, и именно она присутствует в его маркировке. На данный момент процессоры Pentium IV имеют рабочие частоты превышающие 3 ГГц.
Внешняя частота определяет скорость, с которой микропроцессор способен принимать и передавать данные. Эта частота влияет на требуемые быстродействия микросхем окружающих микропроцессор. К настоящему моменту уровень достиг 533 МГц.
Память на материнской плате можно разделить на постоянную ПЗУ и оперативную ОЗУ.
ПЗУ – первоначально информация записывалась один раз изготовителем и в процессе использования не могла быть изменена. В настоящее время при использовании специальных средств или программ такая возможность появилась. В постоянную память записываются программой простые, стандартные функции:
Запуск ЭВМ.
Тестирование.
Управления работой дисководов, монитора и т.д.
Эти программы объединятся в так называемый Basic Input/Output System.
В ОЗУ информация может многократно перезаписываться в процессе работы, при выключении питания информация теряется. В современных ЭВМ ОЗУ размещается не на системной плате непосредственно, а на модулях памяти, вставляемых в специальные слоты. ОЗУ предназначено для хранения ОС программ и данных пользователя. В ЭВМ имеется также кэш-память. Основной характеристикой которой является очень высокое быстродействие. В настоящее время кэш располагается непосредственно в процессоре и служит буфером при операциях между ОЗУ и процессором. На системной плате также размещаются микросхемы обеспечивающие взаимодействие с другими частями ЭВМ:
1. Системный контроллер (chipset).
2. Контроллер печати, дисков и т.д.
Так же имеются разъемы позволяющие подключать к системной плате платы расширения. К ним в первую очередь относятся модули памяти, видеоадаптер и др.
В ЭВМ совместимой с IBM PC выделяют системную шину и шину расширения. Системная шина связывает процессор с системным контроллером и через него с внутренней памятью. Системный контроллер служит мостом между процессором с одной стороны и остальными внутренними устройствами с другой.
Первые IBM PC имели шину расширения ISA (Industry Standard Architecture) имевшую 16 разрядов данных и 16 разрядов адреса. Тактовая частота 8 МГц. До сих пор можно встретить используемом для подключения медленных внешних устройств. После появления процессора 80386 (32-х разрядного) было разработано две шины: EISA (Extended ISA), которая являлась расширением шины ISA путем добавления разрядов данных и адреса до 32-х, совместимая с шиной ISA.
Вторая шина MCA (Micro
Channel Architecture),
разработана фирмой IBM для
серии PS/2. Имела тактовую
частоту 10 МГц. В настоящее время продолжает
широко использоваться шина PCI
(Peripheral Component
Interconnect). Имеет разрядность
64 бита и тактовую частоту 66 МГц. Упрощенную
схему системной платы можно представить
следующим образом:
Наиболее популярными устройствами внешней памяти являются магнитные и оптические диски. Магнитный диск – это запоминающее устройство, основу которого составляет вращающаяся пластина с намагниченной поверхностью, на которую может записываться и считываться информация. Магнитные диски располагаются в специальных устройствах: дисководах или накопителях. Для чтения или записи в дисководе имеются магнитные головки, которые по команде могут быть перемещены в любое место диска, поэтому также накопители называются устройством с произвольным доступом.
Существует два основных вида дисков –
гибкий диск и жесткий диск. Гибкие
магнитные диски являются сменными. Чаще
всего использовались диски размером
3,5; 5,25; 8 дюймов в диаметре. Для записи
используются обе стороны, на каждой из
которых располагается 80 концентрических
магнитных дорожек. Диски такого формата
называются дисками с высокой плотностью
записи (HD – High
Density). Полная емкость диска
рассчитывается по формуле:
,
где
-
объем информации на одной дорожке,
-
число дорожек,
-
число поверхностей. Самые распространенные
диски 3,5 дюйма имеют емкость примерно
1,44 Мб или 1457664 байт.
Жесткие магнитные диски располагаются стационарно в накопителе и не могут быть вынуты. Обычно накопитель содержит 1-го до 3-х дисков общей емкостью до 300 Гб. Также накопитель на жестких дисках часто называют винчестер.
У дискет 3,5 дюйма для облегчения работы осуществляется разбиение дисковых дорожек на 18 секторов. Размер такого сектора 512 байт. В жестких дисках, количество секторов может составлять несколько десятков. Для создания на диске дорожек и секторов применяется специальная процедура – форматирование.
Оптические диски являются сменными, принцип работы дисководов аналогичен дисководам гибких дисков. Поверхность оптического диска перемещается относительно лазерной головки с постоянной линейной скоростью. Луч лазера направляется на дорожку, фокусируясь с помощью линзы. Проходя через защитный слой пластика луч попадает на отражающий слой оптического диска, далее он может либо отразится на детектор, либо поглотится, если в данном месте отражающий слой не отражает. Если отраженный луч пошел на детектор, то этот световой импульс преобразуется в электрический, который затем трактуется как логический ноль. Если луч рассеян, то это воспринимается как логическая единица.
Монитор – устройство отображения выводимой информации в символьном или графическом виде. Изображение на экране монитора формируется из отдельных точек, каждая из которых может иметь свой цвет и яркость. Все мониторы можно разделить на два класса:
1. Мониторы с электронно-лучевой трубкой (ЭЛТ)
2. Мониторы с матричными экранами (ЖК)
Матричные экраны также можно разделить по принципу светоотдачи (пассивное или активное; пассивные – электронные часы, активные – мониторы LCD) и по лежащим в основе дискретных элементов экрана физических явлений.
ЭВМ управляет формированием изображения на экране монитора при помощи специальной платы, называемой видеоконтроллером, видеоадаптером, видеокартой. Основные две части любой видеокарты – видеопамять и схема формирования видеосигнала.
Видеоадаптер может работать в одном из двух режимов:
1) текстовом
2) графическом
В текстовом режиме каждая ячейка видеопамяти соответствует знакоместу на экране монитора, который чаще всего разбивается на 25 строк по 80 символов. В каждое знакоместо может быть выведен один из 256 заранее заданных символов. Число этих символов входят большие и малые латинские буквы, цифры, символы, а также псевдографические символы. В зависимости от того, какое число записано в ячейку видеопамяти соответствующее знакоместо монитора выводится символ. Кроме того, в видеопамять может быть записан атрибут символа (цвет, яркость и т.д.). В текстовом режиме требуется 4 Кб видеопамяти для хранения выводимых данных, еще 8 Кб для хранения образов выводимых символов.
В графическом режиме одна или несколько ячеек видеопамяти соответствуют точке на экране монитора, имеющей некоторый цвет. Количество точек по горизонтали и вертикали называется разрешающей способностью в данном режиме. Количество цветов воспроизводимых на экране зависит от количества бит отводимых для одной точки. Для черно-белого изображения достаточно 1 бита; 16 цветов – 4 бита; 256 – 8 бит; 65536 – 16 бит. Разрешающая способность может изменяться от 640 x 480 до 1600 x 1200.
На IBM PC применялись следующие видеоадаптеры:
1) MDA (Monochrome Display Adapter)
Текстовый режим 25 x 80 x 1
2) HGC (Hercules Graphics Card)
Текстовый режим 25 x 80 x 1
Графический режим 640 x 200 x 1
320 x 200 x 2
3) EGA (Enhanced Graphics Adapter)
Текстовый режим 44 x 80 x 1
Графический режим 640 x 350 x 4
3) VGA (Video Graphics Adapter)
Текстовый режим 44 x 80 x 1
Графический режим 640 x 480 x 4
4) SVGA (Super VGA). Любые режимы больше VGA.
Клавиатура служит для ввода текстовой информации в ручном режиме. Наибольшее распространение получили 2 типа клавиатур – с механическими и мембранными переключателями. В первом случае датчик клавиши представляет собой традиционный механизм с контактами, в другом случае датчик состоит из двух мембран разделенных диэлектрической прокладкой, образуя изменяемую прикосновением емкость. Внутри корпуса кроме датчиков клавиш находятся дешифратор и контроллер клавиатуры. Обмен информацией между клавиатурой и процессором осуществляется в последовательном режиме. В задачу дешифратора вместе с контроллером входит сканирование переключателей клавиш, замыканию и размыканию любого из них соответствует цифровой код (scan-code). После попадания scan-code в контроллер генерируется аппаратное прерывание и процессор обрабатывает нажатую клавишу. В случае, если этот код не является командой немедленного выполнения он помещается в буфер клавиатуры, где и хранится до обработки.
IBM PC имеет последовательный асинхронный порт используемый для связи с внешними устройствами (например, модемом или мышью). Скорость передачи составляет от 300 до 115200 бит/c. Манипулятор мышь используется для управления работой PC. Основной характеристикой является разрешающая способность, измеряемая в dpi (dots per inch).
В качестве периферийных устройств чаще всего используются принтеры и сканеры.
Можно выделить следующие основные типы принтеров:
1) матричные
2) струйные
3) плазменные
4) термопечатающие.
Матричные принтеры работают с помощью управляемых электромагнитами игольчатых матриц, располагаемых в перемещающейся по горизонтали печатающей головке. Каждый элемент выводимой информации образуется при помощи ударов иголок в определенные моменты времени по красящей ленте, находящейся над поверхностью бумаги. Матричные принтеры различаются количеством иголок в печатающей головке. Обычно их количество равно 9 или 24.
Принцип работы струйных принтеров заключается в следующем: струя чернил поступает из пишущей головки под большим давлением через сопла, диаметром менее 0,1 мм. Сопла постоянно вибрируют в продольном направлении с ультразвуковой частотой. В результате чего из струи образуется непрерывный поток капель, который, проходя через блок управления, электризуется и ускоряется, затем данным потоком можно управлять подобно потоку электронов в ЭЛТ.
Для формирования на бумаге изображения в лазерных принтерах используют свойства фоточувствительных материалов изменять поверхностный электростатический заряд в зависимости от освещенности. Основными частями принтера является лазерный излучатель, способный фокусировать луч в электростатическую точку, вращающееся зеркало и фоточувствительный барабан. С помощью вращающегося зеркала импульсными вспышками излучателя на барабане формируется изображение в виде электрического потенциала. По окончании этого процесса на барабан поступает красящий мелкодисперсный порошок – тонер. Тонер прилипает к барабану в тех местах, которые были засвечены и обладают потенциалом. Затем по барабану прокатывается бумага, и тонер прилипает к ней, затем лист проходит через нагревательный участок (печка), где тонер припекается к листу.
Термопечатающие принтеры. Принцип работы заключается в следующем – бумага для такого принтера изготовляется с использованием специальной технологии и она покрыта термочувствительны элементом. Бумажный лист, проходя через печатающий блок формирует на своей поверхности изображение, в зависимости от температуры конкретных участков печатающего термовала. Эти принтеры используются в кассовых аппаратах.
Сканером называется устройство, позволяющее водить в ЭВМ образы изображений. Принцип работы заключается в следующем – сканируемое изображение освещается светом. Отраженный свет через уменьшающую линзу попадает на фоточувствительный полупроводниковый элемент. Каждая строка сканирования соответствует определенным значениям напряжения на этом элементе, затем эти значения преобразуются в цифровую форму с помощью аналого-цифрового устройства (АЦП).
BIOS – это записанный в ПЗУ набор программ, управляющих работой стандартных устройств ЭВМ. Кроме того BIOS содержит программу тестирования при включении питания компьютера (POST – Power On Self Test) и программу начального загрузчика, который с точно определенного места на диске (жестком или гибком) загружает операционную систему. Кроме того, в BIOS’е есть участок оперативной памяти (CMOS – Complimentary Metal Oxide Semiconductor) в которой хранятся некоторые данные. CMOS представляет собой оперативную память выполненную на специальных структурах, потребляющих небольшие количества энергии, способную при помощи внутреннего аккумулятора сохранять данные после выключения компьютера. В ней содержится информация о текущем времени и дате, конфигурации компьютера и других параметров. В связи с этим в BIOS хранится программа с помощью которой можно изменять конфигурацию CMOS-памяти. Доступ к встроенным в BIOS программам осуществляется при помощи механизма прерываний. Процессами прерывания программ управляет вектор процессора, который можно определить как совокупность информационных элементов, отображающих критические состояния выполняемой программы. В этом векторе содержится информация, достаточная для принятия решения о прерывании или выходе из прерывания. Этот вектор формируется некоторыми регистрами процессора и изменяется после выполнения каждой команды. В процессе выполнения программ вектор состояния процессора определяет необходимость выполнения той или иной функции BIOS. Каждому устройству соответствует определенное прерывание, в рамках которого путем выполнения соответствующих микропрограмм реализуются функции управления устройствами, каждое из которых имеет свой порядковый номер.
Тема 6. Программные средства эвм.
Эффективность использования ЭВМ в значительной мере определяется наличием и возможностями имеющегося программного обеспечения, которое, в свою очередь, зависит от технических характеристик ЭВМ. ПО можно условно разделить на 3 группы:
1) прикладное
2) системное
3) инструментальное.
Прикладное – множество программ, при помощи которых пользователь непосредственно решает свои задачи.
Системное – множество программ, необходимых для обеспечения эффективной работы ЭВМ.
Инструментальное – множество программ, при помощи которых можно разрабатывать другие программы.
Прикладное ПО, в свою очередь, можно разделить на пакеты прикладных программ и оригинальные программы.
Пакет прикладных программ – это совокупность программ решающих набор связанных задач общего назначения и представляющих интерес для широкого круга пользователей.
Оригинальные программы решают задачи узкого круга пользователей.
Основными областями использования прикладных программ является: обработка текстовой, графической информации, обработка информации табличного типа, системы управления базами данных (СУБД), системы автоматизации проектирования (САПР), экспертные системы – системы представления знаний и базы знаний, моделирование, математические и статистические расчеты, коммуникации между ЭВМ, расширение функций системного прикладного обеспечения, интегрированные пакеты общего назначения, автоматизированные рабочие места (АРМ).
ОС – комплекс программ, обеспечивающий эффективную работу ЭВМ. Она должна обладать следующими свойствами:
1) надежность: должна быть в состоянии производить определение и диагностирование ошибок, а также восстановление после большинства характерных ошибок.
2) защита: система должна защищать выполняющиеся задачи пользователей от взаимного влияния друг на друга.
3) предсказуемость: система должна отвечать на запросы пользователей предсказуемым образом. Время реакции системы не должно быть слишком велико.
4) удобство: система должна облегчать работу пользователя, освобождая его от задач распределения ресурсов и управления ими.
5) эффективность: должна максимально обеспечивать системными ресурсами задачи пользователя, при этом сама система должна использовать минимальное количество ресурсов.
6) гибкость: система должна быть настраиваемой под потребности конкретного пользователя.
7) расширяемость: ОС должна поддерживать новые устройства и программы.
Основные функции ОС:
1) управление устройствами
2) управление процессами
3) управление памятью
4) управление файлами и их взаимодействие с пользователями
1. Основная функция – управление устройствами.
- слежение за состоянием устройства. Система должна постоянно отслеживать имеется ли устройство или отсутствует, готово к работе или нет, занято или свободно.
- управление доступом к устройству. При работе с несколькими пользователями система должна определять, какой пользователь получит доступ к устройств, на сколько времени и когда.
- управление устройством. Система должна обеспечивать отображение общего набора управляющих команд в специфические команды конкретного устройства.
2. Под процессом будем понимать выполняемую в ЭВМ программу. Одновременно может выполняться несколько программ, то есть существовать несколько процессов, следовательно, возникает задача управления ими таким образом, чтобы они не мешали друг другу и при необходимости могли взаимодействовать. Процессы могут находиться в различных состояниях, обуславливаемых использованием системных ресурсов. Можно выделить следующее:
- пассивное состояние – программа загружена в память, однако не выполняется;
- готовность – процесс стоит в очереди процессора на выполнение;
- выполнение – в любой момент времени, когда процесс имеет контроль над ЦП.
- ожидание – процесс, выполнение которого было прервана и который ожидает освобождения необходимого ему ресурса или завершения выполнения другого процесса.
За время своего существования процесс может многократно переходить из одного состояние в другое. Наличие в системе нескольких процессов приводит к возникновению следующих задач и ситуаций:
- взаимное исключение возникает при попытке какого-либо процесса использовать системные ресурсы конфликтным образом. Некоторые ресурсы могут быть доступны нескольким процессам, в то время как другие только одному.
- синхронизация – многие процессы находятся в зависимости от других. Процесс может оказаться не в состоянии продолжить свою работу, пока не будут получены результаты от другого результаты от другого процесса. Синхронизация подразумевает обмен сигналами между процессами по определенному протоколу, такой сигнал обычно рассматривается переменная типа событие (event), вызывающее у получающего этот сигнал процесса соответствующие действия.
- взаимоблокировка. Конкуренция из-за ресурсов может привести к состоянию известному, как взаимоблокировка или клинч. Клинч возникает, когда один процесс занимает какой-либо ресурс и не освобождает пока не освободится другой ресурс. При этом другой ресурс занят вторым процессом, который ожидает освобождения первого ресурса. В результате возникает взаимоблокировка, когда несколько или все процессы в системе оказываются не в состоянии продолжать работу.
- коммуникации между процессами. Часто возникает необходимость в обмене информацией между процессами. Обмен этот имеет сложную структуру, обеспечивающую защищенность процесса, при этом решаются проблемы адресации процессов, блокировки областей памяти и так далее.
3. Современные ОС различают два вида памяти:
- физическая;
- логическая.
Логическая память соответствует набору ссылок и адресов, по которым может обращаться программа. ОС адресуется физической памятью. Существует механизм отображения адресных ссылок к логической памяти процессов пользователя на физическую. Условно говоря, каждый процесс считает , что отведенная ему память начинается с нулевого адреса и является непрерывной. Ясно, что несколько процессов, находящихся в памяти, не могут одновременно занимать память с нулевого адреса, таким образом ОС в совокупности с аппаратной поддержкой ЦП обеспечивает возможность распределения физических адресов среди параллельных процессов. Управление памятью включает в себя:
- отображение адресов логической памяти на адреса физической памяти.
- расширение границы логического пространства памяти за границу физического пространства.
- разделение физической памяти между несколькими процессами.
- защита информации пользователя и ОС друг от друга.
4. Файл – некоторый логически-цельный набор данных, размещаемый на устройстве внешней памяти и имеющий имя. Основные требования к системе управление файлами:
- каждый пользователь должен быть в состоянии создавать, удалять, изменять файл.
- каждый пользователь может иметь контролируемый доступ к файлам других пользователей.
- каждый пользователь может контролировать типы доступа к его файлам.
- каждый пользователь должен быть в состоянии переструктурировать свои файлы к необходимой ему форме.
- каждый пользователь должен быть в состоянии перемещать данные между файлами.
- каждый пользователь должен быть в состоянии копировать и восстанавливать свои файлы в случае повреждения.
- каждый пользователь должен иметь возможность доступа к своим файлам по имени.
Файлы распределяются по каталогам. Каталоги также могут содержать другие каталоги. Каждый файл обладает следующими характеристиками:
- имя файла, состоящее из букв, цифр и других разрешенных символов.
- расширение файла – добавляемые после точки к имени файла символы, указывающие назначение файла.
- атрибуты файла. Файл может быть защищен от записи, быть скрытым, системным. В многопользовательских системах каждый файл имеет своего владельца, который может назначать типы доступа к своим файлам. Определены следующие типы доступа:
- доступ на чтение;
- доступ на обновление;
- доступ на запись;
- доступ на удаление;
- доступ на выполнение;
- доступ на изменение атрибутов;
- доступ к содержимому каталога;
- доступ на копирование.
Поскольку к настоящему моменту широко используется несколько типов ЭВМ, разработано множество ОС. Для ЭВМ совместимой с IBM PC наибольшую популярность получило семейство Windows компании Microsoft. Исторически сложилось, Microsoft была первой компанией написавшей ОС для IBM PC. До 1995 года наиболее распространенной ОС была MS-DOS. Рассмотрим структуру MS-DOS.
Рассмотрим структуру операционной системы MS-DOS. Ее основные части:
блок начальной загрузки;
модуль ввода-вывода (файл IO.SYS);
модуль DOS (файл MSDOS.SYS);
командный процессор (файл COMMAND.COM);
внешние команды (утилиты).
Блок начальной загрузки служит для загрузки самой операционной системы вначале работы.
Модуль ввода-вывода служит для управления устройствами ПЭВМ (через базовую систему ввода-вывода - BIOS, размещенную в ПЗУ ПЭВМ). Состоит из постоянного модуля, управляющего стандартными устройствами и дополнительных драйверов, при помощи которых можно обеспечить управление любым внешним устройством.
Модуль DOS служит для управления процессом хранения и доступа к информации, хранящейся на устройствах внешней памяти.
Командный процессор служит для взаимодействия с пользователем. Состоит из резидентной (то есть постоянно находящейся в памяти ПЭВМ) и нерезидентной частей.
Внешние команды – это набор программ, предназначенный для выполнения различных задач, возложенных на операционную систему.
При работе операционная система MS-DOS располагается в памяти ПЭВМ следующим образом:
Таблица векторов прерываний |
60 кбайт |
640 кбайт |
1 Мбайт |
Системные переменные MS-DOS |
|||
Модуль ввода-вывода |
|||
Модуль DOS |
|||
Буфер для обмена с дисками |
|||
Дополнительные драйвера устройств |
|||
Резидентная часть командного процессора |
|||
Прикладная программа
|
|
||
Нерезидентная часть командного процессора |
|||
Память для организации ввода-вывода |
|
|
Жесткие магнитные диски в MS-DOS делятся на разделы, которые называются логическими дисками. MS-DOS обращается с логическим диском как с отдельным устройством. Накопители на гибких магнитных дисках и оптических дисках также считаются логическими дисками. Логические диски обозначаются буквами латинского алфавита с последующим двоеточием: A:, B:, C:, D:, F:, E: и так далее. Принято, что буквами A: и B: обозначаются накопители на гибких магнитных дисках, начиная с буквы C: обозначаются разделы жесткого магнитного диска, а затем следует накопитель на оптических дисках.
Для организации размещения информации на устройствах внешней памяти служит файловая система.
Длина имени файла в MS-DOS может достигать 8 символов. В имени допустимы латинские буквы, цифры и некоторые другие символы. Кроме имени файл имеет так называемое расширение длиной до трех символов. Расширение служит для того чтобы указать назначение файла. Расширение следует за именем файла и отделяется от него точкой. Поскольку на магнитном диске может быть много файлов, то необходимо их упорядочение. Для этого файлы разделяются по каталогам (другое название - директория). Каталог – это группа файлов и каталогов, имеющий имя. Каталог может содержать как файлы, так и другие каталоги. Таким образом, может быть получена система вложенных друг в друга каталогов. Другими словами, формируется иерархическая структуру каталогов.
Рис.
5
Каталог верхнего уровня называется корневым или главным. Остальные каталоги могут называться подчиненными или подкаталогами.
Перечень всех каталогов, которые нужно пройти, начиная с корневого, чтобы дойти до файла называется путем к файлу. Путь записывается перечислением всех каталогов, отделенных друг от друга обратной косой чертой («слешем»). Например путь к файлу
arc\zip\new
означает, что файл находится в каталоге new, который находится в каталоге zip, который в свою очередь находится в каталоге arc. Полное имя файла включает имя логического диска, путь к файлу (отделяется от имени диска слешем) и собственно имя файла. Например
c:\arc\zip\new\filename.ext
На диске формируется четыре основных области данных:
блок начальной загрузки;
таблица размещения файлов (File Allocation Table – FAT);
главный каталог;
файлы и подкаталоги.
Рассмотрим эти области применительно к 3.5” дискете объемом 1.44 Мбайта с размером сектора 512 байт.
Блок начальной загрузки занимает один самый первый сектор (с нулевым номером).
Далее с секторах с 1 по 18 размещаются две одинаковые копии FAT.
В секторах с 19 по 32 размещается главный каталог.
Если на дискете имеется ОС MS-DOS, то далее сразу следует файл IO.SYS, содержащий модуль ввода-вывода, затем файл MSDOS.SYS, содержащий модуль DOS.
Далее в произвольном порядке размещаются файлы и подкаталоги.
Номер сектора |
|||||||
0 |
1 |
|
18 |
19 |
|
32 |
33 |
Блок начальной загрузки |
Таблица размещения файлов |
Главный каталог |
Файлы и подкаталоги |
||||
Каждая запись в каталоге содержит информацию об одном файле и имеет длину 32 байта. Структура записи следующая:
Номер байта |
|||||||
0 – 7 |
8 – 10 |
11 |
12 – 21 |
22 – 23 |
24 – 25 |
26 – 27 |
28 – 31 |
Имя файла |
Расширение |
Атрибут |
Резерв (не используется) |
Время создания |
Дата создания |
Номер первого кластера |
Размер файла в байтах |
Кластером называется группа секторов, которые читаются и записываются за один раз. Для гибких дисков размер кластера составляет один сектор.
Байт атрибутов содержит указание на ряд свойств файла. Каждый бит отвечает за свое свойство. Если бит равен единице, это свойство имеется у файла, если нулю – отсутствует. Состав байта атрибута приведен в табл. 18
Таблица 1
Номер бита |
Свойство |
0 |
Только для чтения |
1 |
Скрытый |
2 |
Системный |
3 |
Имя файла является меткой диска |
4 |
Файл является подкаталогом |
5 |
Архивный ( обновлялся после последнего резервного копирования) |
6 |
Не используется |
7 |
Не используется |
Различие между главным каталогом и подкаталогом только в расположении на диске. Структуры записи о файлах в них одинаковы.
Байты 26 – 27 содержат номер кластера, в котором находиться начало файла (то есть номер первого кластера файла). Для определения, в каких кластерах размещается продолжение файла, служит таблица размещения файлов. Эта таблица представляет собой просто последовательно записанные 16-разрядные целые числа, соответствующие номерам кластеров диска. Ее можно рассматривать следующим образом: позиция таблицы соответствует номеру кластера диска, содержащего часть файла, а число, записанное в этой позиции - номер кластера диска, содержащего следующую часть файла.
Например, в записи каталога указан кластер номер 10. Файл начинается в 10-м кластере диска. Необходимо смотреть 10 позицию таблицы. Пусть там записано число 20. Значит файл продолжается в 20-м кластере диска. Далее необходимо смотреть 20 позицию таблицы. Пусть там записано число 46. Значит файл продолжается в 46-м кластере диска. и так продолжается, пока в таблице не встретиться число FFFF (шестнадцатеричное), которое означает, что данный кластер – последний для файла. Кроме того, возможна запись в таблице число FFF7 (шестнадцатеричное), которое означает, что данный кластер – плохой и не должен использоваться.
При помощи командного процессора пользователь может давать «задания» MS-DOS на выполнения определенных действий. Командный процессор определяет место для ввода команд, выводя «подсказку» – имя текущего диска и каталога и символ «больше». Например
A:>
или
C:\WORK>
Вводимые пользователем команды имеют вид
имя_команды [ключи] [параметры] [ключи]
Квадратные скобки означают, что параметры или ключи могут отсутствовать.
Например, команда
dir c:
выведет текущий каталог диска c:
а команда
del *.doc /P
будет удалять файлы с расширением doс, запрашивая пользователя об удалении каждого файла (запрос задается ключом /Р).
Все команды MS-DOS делятся на внутренние и внешние. Внутренние выполняются самим командным процессором, а внешние соответствующими утилитами.
Перечень и примеры использования наиболее часто используемых внутренних команд приведен ниже
CD [диск:] [путь]
ФУНКЦИЯ: Изменить pабочий каталог или вывести на экpан pабочий путь по деpеву каталогов
ПРИМЕРЫ:
cd \su1\su2
cd d:\sus1
cd
Рабочий каталог - это каталог, находящийся в активном состоянии
в данный момент вpемени. На каждом устpойстве в текущий момент может быть только один pабочий каталог. Команда CD (CHange DIRectory) изменяет pабочий каталог. Она также используется для получения на экpане pабочего пути по деpеву каталогов на заданном устpойстве.
CLS
ФУНКЦИЯ: Очищает экpан
ФОРМАТ: CLS
ПРИМЕР: cls
COPY
ФУНКЦИЯ: Копиpование файлов. Объединение нескольких файлов в один. Обмен данными между внешними устpойствами и файлами
ФОРМАТ: COPY [/A][/B] [диск:] [путь]имя_файла[.расш][/A][/B]
[+[диск:] [путь]имя_файла[.расш][/A][/B]...]
[диск:] [путь][имя_файла[.расш]][/A][/B][/V]
ПРИМЕРЫ: copy file1 d:
copy file1+file2 b:file3
copy con file4.txt
Команда COPY используется как для копирования файлов так и для объединения файлов или для обмена информацией между файлами и внешними устройствами.
Чтобы скопировать файл, наберите copy, затем спецификацию копируемого (исходного) файла и спецификацию файла-копии (выходного файла). Файл будет скопирован и на экране появится сообщение о количестве сделанных копий:
C>copy file.txt b:file.txt
1 File(s) copied
Если опущено имя копии, то файл копируется с исходным именем. В этом случае копию необходимо записать на другой диск или в другой каталог того же диска. В следующем примере файл "file.txt" копируется на диск А:
C>copy file.txt а:
1 File(s) copied
Если диск и путь не указаны, то COPY обpабатывает pабочий каталог.
C>copy file.txt\data
1 File(s) copied
Файл можно скопировать в тот же каталог, но, обязательно, с дpугим именем:
C>copy file.txt file2.txt
1 File(s) copied
При введении имени файла допускается использование замещаемых символов. Например, все файлы каталога LETTERS на диске C: с расширением ".DOC" скопируем запишем в каталог BACKUP на диске D. В процессе копирования на экран выводится список откопированных файлов (файлы копируются с исходным именем). Также выдается сообщение о количестве скопированных файлов:
C>copy \letters *.doc d:\backup
TOHOME.DOC
FROMHOME.DOC
TODIRECT.DOC
3 File(s) copied
Команда COPY можно использовать для объединения файлов. В командной строке спецификации файлов разделяются знаком "+". Файл, получающийся в результате объединения, представляет собой комбинацию файлов, располагающихся в порядке их следования в командной строке. В следующем примере два файла "list1.txt" и "list2.txt" объединяют в файл "biglist.txt". Исходные файлы сохраняются. На экране появляется сообщение о количестве сделанных копий:
C>copy list1.txt+list2.txt biglist.txt
1 File(s) copied
Если имя нового файла не указано, то результат копируется в первый файл. Его содержимое заменяется содержимым конечного файла.
Команда COPY имеет три ключевых параметра. Два из них (/a и /b) определяют способ чтения/записи файлов, третий используется для проверки произведенной операции. Параметр /a означает, что обрабатываемые файлы - текстовые. при копировании в новый файл не включается конечный маркер старого файла (шестнадцатеричное значение 1A). Если исходный файл является копией, то в конец выходного файла добавляется текстовый маркер конца файла (символ ^Z). Параметр /b обозначает двоичные файлы. при копировании старый файл переписывается целиком. Если исходный файл является копией, то в конец выходного файла маркер конца файла не добавляется.
При введении параметра /v производится проверка произведенной данной командой операции.
DATE
ФУНКЦИЯ: Выводит дату в фоpмате mm-dd-yy. Задает новую дату.
ФОРМАТ: DATE [mm-dd-yy]
ПРИМЕРЫ: date
date 12-6-88
DEL (ERASE)
ФУНКЦИЯ: Удаление файлов
ФОРМАТ: DEL [диск:] [путь][имя_файла[.расш]]
ПРИМЕРЫ: del badfile.txt
erase badfile.txt
Команда DEL (или ERASE) служит для удаления файлов с диска. Чтобы удалить файл, набеpите del (или erase) и спецификацию ненужного файла. Если спецификация не содеpжит шифp устpойства и спецификатоp пути, то файл выбиpается из pабочего каталога pабочего диска.
C>del badfile.txt
Пpи использовании замещаемых символов в паpаметpах имя_файла или .расш, одной командой можно удалить гpуппу файлов.
C>del a:\*.doc
DIR
ФУНКЦИЯ: Вывод содеpжимого каталога
ФОРМАТ: DIR [диск:][путь][имя_файла[.расш]][/P][/W]
ПРИМЕРЫ: dir
dir c:
dir d:\subdir1\*.doc/w
Команда DIR выводит на экpан содеpжимое каталога, то есть список содеpжащихся в каталоге подкаталогов и файлов. Список включает имя и pасшиpение файла, pазмеp, и дату и вpеменя создания.
Вывод текущего каталога текущего диска
C>dir
Вывод текущего каталога диска А:
C>dir а:
Ключевой паpаметp /p обычно используется пpи пpосмотpе содеpжимого больших каталогов. Введение паpаметpа /p позволяет упpавлять выводом. Пpи полном заполнении стpаницы экpана, вывод пpекpащается и возобновляется пpи нажатии любой клавиши.
Ключевой паpаметp /w pасполагает инфоpмацию во всю шиpину экpана. Паpаметpы "имя файла" и "pасшиpение" выводятся по пять pаз в каждой стpоке. Паpаметpы "pазмеp файла", " дата и " вpемя" в этом pежиме не выводятся.
MD
ФУНКЦИЯ: Создание подкаталога
ФОРМАТ: MD [диск:]путь
ПРИМЕРЫ: mkdir\write
md c:\programs\business
Команда MD (MaKe DIRectory) используется пpи создании подкаталогов. Если имя диска опущено, то подкаталог будет оpганизован на pабочем диске.
PATH
ФУНКЦИЯ: Опpеделяет пути для подкаталогов
ФОРМАТ: PATH [[диск:][путь]; [диск:][путь]...]]
ПРИМЕРЫ: path \program1\business
path a:\program2\write1;c:\program2\write2
Команда PATH определяет подкаталоги, в которых командный процессор ищет программы для исполнения (включая внешние команды MS-DOS).
RD
ФУНКЦИЯ: Удаление подкаталога
ФОРМАТ: RD [диск:]путь
ПРИМЕРЫ: rd \write
rd с:\programs\business
Команда RD (ReMove DIRectory) служит для удаления подкаталога. Перед удалением подкаталога необходимо удалить все имеющиеся в нем файлы. В командной строке можно указать диск, на котором находится удаляемый подкаталог. При отсутствии имени диска считается, что подкаталог находится на рабочем диске.
REN
ФУНКЦИЯ: Пеpеименование файла
ФОРМАТ: REN [диск:][путь]имя_файла[.расш]имя_файла[.расш]
ПРИМЕРЫ: rename file1 file2
ren newfile.txt oldfile.txt
Команда REN (или RENAME) служит для изменения имени и/или pасшиpения файла. Чтобы изменить имя файла, набеpите rename, спецификацию файла и его новое имя. Напpимеp, для замены имени файла "oldfile.txt" на "newfile.txt" вводится команда:
C>rename oldfile.txt newfile.txt
SET
ФУНКЦИЯ: Вводит указанную символьную переменную в операционную среду MS-DOS
ФОРМАТ: SET [переменная=[строка]]
ПРИМЕР: set xyz=abc
Операционная среда - это область памяти, выделяемая для хранения группы символьных переменных в коде ASCII. Каждая переменная представлена в виде символьной строки, левая часть которой отделяется от правой знаком равенства (=). Символы в левой части строки являются именем переменной, символы в правой части - собственно параметром. Эти строки группируются так, чтобы к ним обеспечивался удобный доступ операционной системы и программ, работающих под управлением MS-DOS.
TIME
ФУНКЦИЯ: Выводит значение текущего времени. Устанавливает новое значение
ФОРМАТ: TIME [bb:mm:ss:xx]
ПРИМЕРЫ: time
time 11:30
TYPE
ФУНКЦИЯ: Вывод на экран монитора текстового файла
ФОРМАТ: TYPE [диск:][путь]имя_файла[.расш]
ПРИМЕР: type d:letter.txt
VER
ФУНКЦИЯ: Выдать номеp pаботающей веpсии MS-DOS
ФОРМАТ: VER
ПРИМЕР: ver
В MS-DOS имеется много внешних команд (утилит), выполняющих те или иные системные функции. Названия и назначения некоторых из них приведены в таблице
Название внешней команды |
Выполняемое действие |
ATTRIB |
Отображение и изменение атрибутов файлов |
FDISK |
Конфигурирование жесткого диска для работы с MS-DOS
|
FIND |
Поиск текстовой строки в одном или нескольких файлах |
FORMAT |
Форматирование диска для работы с MS-DOS |
MODE |
Конфигурирование системных устройств |
SORT |
Сортировка файла с выводом результатов в файл, на экран или другое устройство |
XCOPY |
Копирование файлов и структур каталогов |
Справку по любой команде MS-DOS можно получить введя
имя_команды /?
При этом на экран будет выданы все форматы команды с ключами и с кратким описанием их действий.
Командный файл состоит из группы последовательно выполняемых команд MS-DOS. Должен иметь расширение bat. Может включать в себя как вышерассмотренные команды, так и команды, специально предназначенные для использования в командных файлах. Названия и назначения этих команд приведены в таблице
Название внешней команды |
Выполняемое действие |
CALL |
Вызов другого командного файла |
CHOICE |
Предложение пользователю нескольких вариантов на выбор |
ECHO |
Вывод сообщений и переключение режима отображения команд на экране |
FOR |
Запуск указанной команды для нескольких файлов |
GOTO |
Передача управления в отмеченную строку командного файла |
IF |
Условное выполнение команд в командном файле |
PAUSE |
Приостановка выполнения командного файла и вывод сообщения «Нажмите любую клавишу....» |
REM |
Помещение комментариев в командные файлы и файл CONFIG.SYS |
Для подключения дополнительных драйверов служит файл CONFIG.SYS, который обрабатывается MS-DOS в процессе загрузки и в котором указываются те драйвера, которые необходимо загрузить.
Для этого используется команда DEVICE
DEVICE=[диск:][путь]имя_файла[.расш]
Указанный в команде файл должен быть драйвером устройства.
Например команда
DEVICE=C:\MOUSE.SYS
загрузит драйвер «мыши».
Кроме команды DEVICE в файле CONFIG.SYS могут использоваться и другие
Команда BUFFERS определяет количество буферов диска, выделяемых после загрузки MS-DOS. Имеет формат:
BUFFERS=xx
где: хх - это число в интеpвале значений 1-99.
Например:
buffers=5
Буфер диска - это область памяти, выделяемая для хранения данных, участвующих в дисковых операциях ("запись на диск" или "чтение с диска"). Буфер является областью связи работающей программы с диском. Пересылка данных из буфера на диск и обратно осуществляется блоками по 512 байт. Например, если программе потребуется хранящаяся на диске 128-байтовая запись, то операционная система считает с диска порцию данных файла в 512 байт, внутри которой находятся требуемые 128. Затем эти 128 байт пересылаются в область данных программы, расположенную в памяти. Если программе потребуется следующая запись в 128 байт, то MS-DOS сначала проверит, не находится ли она в буфере. Если запись в буфере, то не нужен повторный доступ к диску.
Команда BUFFERS определяет количество буферов диска, выделяемых операционной системой при загрузке. Увеличение числа буферов может сократить время выполнения программы. Чем больше буферов, тем больше секторов диска может находиться в памяти, и следовательно, тем реже производятся непосредственные обращения к диску.
Команда FILES опpеделяет количество файлов, с котоpым одновременно может работать MS-DOS. Имеет формат:
FILES=xx
Например:
files=25
После обработки файла CONFIG.SYS в процессе загрузки выполняется командный файл с именем AUTOEXEC.BAT. Он представляет собой обычный командный файл и в него помещаются команды, которые необходимо выполнить перед началом работы пользователя с MS-DOS, например загрузить программу русификации ПЭВМ.
Инструментальное ПО предназначено для создания оригинальных программ в любой проблемной области, включая системное прикладное обеспечение, поэтому в его состав входят компиляторы и интерпретаторы с языков программирования различного уровня, библиотеки стандартных программ, средства редактирования, отладки, тестирования и загрузки.
Под языком программирования можно понимать алфавит, систему записей и набор правил, определяющих синтаксис правильной программы. Текст алгоритма задачи, записанный средствами языка программирования, называется исходным модулем, который может находится на носителя любого вида и быть пригодным для ввода в ЭВМ.
Средством, предназначенным для перевода модуля в последовательность команд ЭВМ, служит специальная программа. Имеется два основных типа таких программ – компиляторы и интерпретаторы. Компилятор переводит весь текст исходного модуля в машинный код, называемый объектным модулем, за один проход. Объектный модуль выполнятся не может, так как внутри могут присутствовать ссылки на другие модули, поэтому объединенный модуль обрабатывается специальной программой – редактором связей, после работы которого, получается программа, которая может выполнятся. Таким образом, схема преобразования исходного текста в выполняемый модуль имеет вид:
В настоящее время широкое распространение получили интегрированные средства программирования, включающие в себя редактор, загрузчик, компилятор, трассировщик, отладчик и т.д.
В отличие от компилятора, интерпретатор выполняет исходный модуль в режиме «оператор за оператором». По ходу работы переводя каждый оператор в машинные команды.
Оба типа программ – компиляторы и интерпретаторы – имеют существенные различия. Присутствие в оперативной памяти компилятора после получения объектного модуля необязательно, в то время как для интерпретаторов это необходимо. Оба подхода имеют свои преимущества и недостатки.
Тема 7. Основные свойства ос семейства Windows.
Основные свойства Windows 95.
Windows 95 – современная операционная система для персональных ЭВМ (ПЭВМ), совместимых с IBM PC. Основными особенностями Windows 95, отличающими её от предыдущих версий Windows, являются: использование всех возможностей современных микропроцессоров, применяемых в ПЭВМ (80386, 486, Pentium), более высокая защита ОС от ошибок пользователя и некорректной работы выполняемых программ, возможность параллельного выполнения нескольких программ, возможность использовать длинные имена файлов, удобство взаимодействия пользователя с ОС, возможность объединять данные, созданные разными программами в единое целое.
Виртуальные машины Windows 95
Среда, создаваемая Windows 95, может рассматриваться как серия виртуальных машин Виртуальная машина представляет собой логический компьютер внутри физического компьютера. Когда в Windows 95 выполняется приложение, то оно выполняется на виртуальной машине. С точки зрения программы она имеет полный контроль над компьютером. В действительности же программа управляет лишь частью компьютера, а всем компьютером операционная система. Можно иметь несколько виртуальных машин, выполняющихся внутри одного компьютера. Программа, которая выполняется на виртуальной машине, ничего «не знает» о программах, выполняющихся на других виртуальных машинах.
В операционной системе Windows 95 могут создаваться два типа виртуальных машин. Машина первого типа работает постоянно, иназывается системной виртуальной машиной (System virtual machine). В этой виртуальной машине выполняются приложения Windows. Второй тип виртуальных машин – это виртуальные машины DOS. Они используется для выполнения приложений MS-DOS. Под управлением Windows 95 может создаваться только одна системная виртуальная машина, зато хотя виртуальных машин DOS может быть много. Взаимосвязь виртуальных машин показана на рисунке .
|
||||
|
Системная виртуальная машина |
|
Виртуальная машина DOS DOS |
|
|
Виртуальная машина DOS DOS |
|
||
|
|
|
||
Виртуальная машина DOS DOS |
|
|||
Виртуальная машина DOS DOS |
|
|||
Среда пользователя Windows 95
|
||||
Необходимость в виртуальных машинах DOS вызвана тем, что большинство программ DOS требуют монопольного владения ресурсами ЭВМ.
СИСТЕМНОЕ УПРАВЛЕНИЕ В WINDOWS 95
Две основные части операционной системы — это подсистема менеджер виртуальных машин (Virtual Machine Manager - VMM) и подсистема файловый менеджер (File Manager). VMM несет ответственность за общее функционирование Windows 95 Он управляет разными ресурсами системы, делая их по мере необходимости доступны ми для разных виртуальных машин. С точки зрения задач администрировании система VMM имеет несколько основных обязанностей:
Управление памятью;
Планирование процессов;
Управление драйверами;
Работа в режиме MS-DOS.
Управление памятью
Каждая виртуальная машина в системе владеет адресным пространством размером в 4Гб. Они разделяются между выполняющейся nporpамой и операционной системой. Первые 2Гбайт могут непосредственно использоваться программой, оставшиеся 2Гбайт принадлежат операционной системе.
Memory Pager — что часть VMM, которая обрабатывает перемещение памяти внутри Windows 95. Используется технологию, называющейся подкачкой страниц памяти по запросу (demand paging). Когда часть программы или ; данных больше не нужны, они перемешаются в файл обмена на жестком диске. Когда позже данные или программа становятся нужными, то они перемещаются назад во внутреннюю память.
Планирование процессов
На языке Windows 95 процесс — это выполняющаяся в системе программа. Каждый процесс может выполнять множество независимых процедур, называющихся потоками (thread). Поток используется для выполнения предварительно определенной функции, которая нужна для всей программы.
Потоки могут выполняться только 32-разрядными программами, разработанными специально для Windows 95 или Windows NT. Потоки не могут создаваться 16-разрядными программами.
Во время выполнения процессы и потоки нуждаются ч ресурсах. Process Scheduler (Планировщик процесса) является той частью VMM, которая отвечает не только за поочередное выполнение разных процессов, но и за их доступ к ресурсам.
Распределение ресурсов
Ресурс – это устройство или возможность, представляемая вычислительной системой.
Системные ресурсы распределяются для различных процессов Process Scheduler. Когда требует доступ к ресурсу, то запрос процесса обрабатывается Process Scheduler. Если ресурс свободен, он распределяется процессу. Если другой процесс требует тот же ресурс, то Process Scheduler должен решить, какой процесс будет иметь доступ к ресурсу и кoгда этот доступ произойдет. Доступ к ресурсу можно получить тремя способами
Разделенный доступ (shared access). Это означает, что ресурс может разделяться двумя или более процессами одновременно. Примеры включают память (RAM) или жесткий диск.
Последовательный доступ (sequential access). Данный тип доступа означает, что ресурс должен разделяться процессами поочередно. Примером является принтер.
Исключительный доступ (exclusive access). Это означает, что ресурс может использовать только один процесс. Примеры включают порт ввода-вывода, клавиатуру и модем.
Process Scheduler несет ответственность за то, чтобы каждый ресурс в системе использовался способом, соответствующим как ресурсу, так и процессу, которому данный ресурс требуется.
Мультизадачность
Мультизадачность — это способность одновременного выполнения нескольких процессов. Windows 95 использует два метода выполнения параллельных процессов. Это — кооперативная мультизадачность (cooperative multitasking) и вытесняющая мультизадачность (preemptive multitasking).
При выполнении 16-разрядной программы (программа, созданная для Windows З.х) используется кооперативная мультизадачность. Данный тип мультизадачности включен в Windows 95 только из соображений совместимости. Кооперативная мультизадачность предполагает, что параллельно выполняющиеся процессы будут обрабатывать переключение друг на друга,
Например, при кооперативной мультизадачности, если процесс нуждается в доступе к диску, он помещает в очередь сообщение, указывающее, что ему требуется этот доступ. Управляющий процесс должен периодически проверять очередь и смотреть, есть ли в ней что-то нуждающееся в управлении. Если сообщение обнаружено, то управляющий процесс должен отдать управление, после чего сможет выполняться второй процесс.
Проблема подобного подхода заключается в том, корректность взаимодействия процессов обеспечивается прикладными программами.
Другой тип мультизадачности, вытесняющая мультизадачность, гораздо более совершенен. При таком типе мультизадачности операционная система не зависит от "желания" приложения отказаться от управления. Она может захватить управление, забрать его у приложения и отдать другому приложению или системному процессу. 32-разрядные приложения, написанные специально для Windows 95, пользуются преимуществами вытесняющей мультизадачности Поскольку операционная система сама решает, кто и когда получит управление, то накладные расходы, включенные и приложения для старых версий Windows, больше не нужны.
Управление драйверами
Еще одной задачей, которую выполняет VMM, является управление драйверами устройств системы. Это имеет смысл, поскольку VMM несет ответственность и за планирование ресурсов, управляемых драйверами устройств. Для создания коммуникационного слоя между операционной системой и системным аппаратным и программным обеспечением Windows 95 использует виртуальные драйверы устройств.
Виртуальный драйвер устройства — это слой кода, который управляет ресурсом так, чтобы этот ресурс мог параллельно использоваться более чем одним процессом. Одной из обязанностей подобного драйвера является отслеживание состояния или контекста устройства в течение мультизадачности.
Драйверы защищенного режима обеспечены для большинства устройств, используемых Windows 95.
Работа в режиме MS-DOS
VMM управляет системой тогда, когда она выполняется в режиме MS-DOS. Режим MS-DOS относится к использованию системой исключительно для выполнения программ MS-DOS. Данный режим не является мультизадачным и похож на выполнение DOS..
При работе в режиме MS-DOS в системе не могут выполняться никакие другие приложения. Когда происходит переключение в режим MS-DOS, VMM заботится о завершении любых других процесса, которые могли выполняться в системе. При завершении программы, выполняющейся в MS-DOS, единственным способом повторной инициализации системы является системный рестарт - перезагрузка.
СРЕДА WINDOWS
Системная виртуальная машина обеспечивает среду Windows для выполнения Windows-программ. Организация системной виртуальной машины показана на рисунке.
Системная виртуальная машина ая машина
|
||||||||
|
Приложение Win32 |
|
Приложение Winl6
Приложение Winl6
Приложение ; Wn16 |
|
||||
|
Приложение Win32 |
|
||||||
|
Приложение Win32 |
|
||||||
|
||||||||
|
Системные службы |
|
||||||
|
Пользователь |
Ядро |
Графический интерфейс устройств |
|
||||
|
|
|
||||||
Системная виртуальная машина .содержит адресные пространства, созданные для приложений Win32 и Winl6. Кроме того, имеются системные службы, которые обеспечивают общее программное обеспечение для приложений, выполняющихся в системной виртуальной машине.
Приложения Win32
Win32 — это сокращенная запись, относящаяся к 32-разрядным приложениям, разработанным для работы в Windows 95 или Windows NT. Каждое из приложений выполняется в своем собственном адресном пространстве внутри системной виртуальной машины. Использование индивидуальных адресных пространств означает, что приложения практически полностью изолированы друг от друга и, следовательно, более стабильны. Если одно из приложений Win32 производит ошибку, это не влияет на другие приложения Win32, которые выполняются в другом адресном пространстве.
Когда запускается приложение Win32, VMM создает адресное пространство для нового приложения и размещает это адресное пространство и f системной виртуальной машине.
Приложения Winl6
Приложения Winl6- это программы, написанные для старых версий Windows.
Все приложения Winl6 работают в одном адресном пространстве. Если одна из программ Winl6 разрушается, это может повлиять на другие программы, выполняющиеся в том же самом адресном пространстве. Однако, это не может повлиять на приложения Win32, каждое из которых выполняется в своем адресном пространстве.
Системные службы
Приложениям Windows, выполняющимся под управлением Windows 95, доступны три службы. Они работают вместе и обеспечивают то, что носит название интерфейса прикладной программы (application program interface) или API. Это User (Пользователь), Kernel (Ядро) и Graphical Device Interface – GDI (Интерфейс графического устройства).
User
Служба User операционной системы управляет асинхронным вводом и выводом. Обработчик прерывании подсистемы User преобразует прерывания устройств и соответствующие сообщения и посылает их в очередь. Каждое родное приложение Win32 имеет смою собственную очередь сообщений. Приложения Winl6 имеют общую разделяемую очередь сообщении.
Ввод с таких устройств ввода, как клавиатура и мыть, и вывод и интерфейс, такой как окна, пиктограммы и меню управляется службой User. User также управляет вводом-выводом коммуникационных портов, таймера,
Системная служба User обеспечивает промежуточный уровень управления вводом и выводом. Приложения Windows взаимодействуют с User, который, и спою очередь, сообщается с VMM. User и VMM работают вместе для обеспечения услуг ввода-вывода, в которых нуждается приложение.
Kernel
Kernel - это ядро системных служб. Kernel обеспечивает базовые операции ввода-вывода файлов, управление виртуальной памятью и планирование задач. Kernel загружает выполняемые (ЕХЕ) файлы и DLL (dynamic link library – динамически компонуемые библиотеки). Когда возникает ошибка, то Kernel выполняет программу, разработанную специально для решения проблемы. Kernel разрешает ссылки импорта (import references) для приложения и выполняет потоки процесса. Kernel поддерживает разделение (thunking) или смешивание 16- и 32-разрядного кодов.
GDI
Graphical Device Interface — GDI (Интерфейс графического устройства) — это системная служба, управляющая выводом на экран и поддержкой других устройств, таких как принтеры. С помощью обращения к GDI можно манипулировать битовыми картинками. Механизм битовых изображений, не зависящих от устройства является методом, поддерживающим и управляющим записью на графический экран. Содержимое GDI включает т общие функции рисования, поддерживающие монохромный вывод, 16-цветный вывод, а также 256-цветные и 24-разрядные устройства с реальными цветами.
СРЕДА DOS
программы DOS могут Выполняться в двух средах: в оконной среде или и режиме исключительно DOS.
0кна MS-DOS
Программа DOS в Windows 95 выполняется в окне на рабочем столе. VMМ создаст виртуальную машину для приложения. Каждая выполняющаяся программа DOS «считает», что полностью управляет системой. VMM действует как промежуточное звено, перехватывающее функции программы DOS низкого уровня и обеспечивающее их выполнение способом, корректным для Windows 95.
Режим MS-DOS
Режим MS-DOS является режимом, исключающим выполнение любой другой программы, кроме одной программы DOS.
Режим MS-DOS похож на выключение Windows 95, загрузку предыдущей версии DOS и выполнении программы DOS. Системная (которая используется для среды Windows) выключается полностью, а доступной оказывается единственная виртуальная машина для DOS.
Файловая система windows 95
Предыдущие версии Windows использовали файловую систему MS-DOS, известную под названием FAT (File Allocation Table). Windows 95 использует новую файловую систему, обеспечивающую однако совместимость с FAT.
В Windows 95 обеспечиваются дна драйвера файловой системы, используемых для доступа к традиционным магнитным дискам и к оптическим дискам (CD-ROM) Драйвер, обеспечивающий доступ к CD- ROM, называется CDFS (compact disk file system –файловая система компакт-дисков). Часть системы, используемая для доступа к магнитным дискам, известна как 32-разрядная файловая система FAT защищенного режима, но часто ее называют VFAT или виртуальной системой FAT.
VFAT обеспечивает лучшую производительность по сравнению с FAT системой, функционирующей в DOS и предыдущих версиях Windows, поскольку VFAT реализована в 32-разрядном коде защищенного режима, и ее команды на современных 32-разрядных процессорах выполняются быстрее.
Длинные имена файлов являются наиболее существенным преимуществом VFAT по сравнению с FAT. Допустимо использовать имена файлов длиной до 255 символов. Наряду с новыми длинными именами поддерживаются ч старые короткие имена файлов. Под управлением Windows 95 длинные имена рассматриваются как правильные, тогда как короткие, считаются псевдонимами (aliases).
FAT использовала 32-байтныс записи каталога. Для сохранения совместимости со структурой FAT в VFAT также используются 32-байтные записи, однако для описания одного файла может использоваться до 22 записей. На рисунке показаны различные записи каталога, используемые VFAT.
Первичная запись
Номер байта |
|||||||||
0 – 7 |
8 – 10 |
11 |
12–17 |
18–19 |
20–21 |
22 – 23 |
24 – 25 |
26 – 27 |
28 – 31 |
Имя файла |
Расширение |
Атрибут |
Резерв (не используется) |
Дата последнего доступа |
Поддержка доступа |
Время создания |
Дата создания |
Номер первого кластера |
Размер файла в байтах |
Вторичная запись
Номер байта |
|||||||
0 |
1 – 10 |
11 |
12 |
13 |
14 – 25 |
26 – 27 |
28 – 31 |
Последовательность |
Имя файла |
Атрибут |
Тип |
Контрольная сумма |
Имя файла |
Установлено в ноль |
Имя файла |
Информация класса
Номер байта |
||||||||
0 |
1 – 10 |
11 |
12 |
13 |
14 – 19 |
20–25 |
26 – 27 |
28 – 31 |
Последовательность |
Информация класса |
Атрибут |
Тип |
Контрольная сумма |
Информация класса |
Резерв |
Установлено в ноль |
Имя файла |
VFAT использует три вида записей. Первичная запись содержит псевдоним файла (8-баитовое имя файла вместе с расширением), а длинное имя файла составляется из вторичных записей VFAT, которых может быть до 20
Чтобы определить, что имеются вторичные записи, используется байт атрибутов первичной записи VFAT. Некоторые комбинации битов атрибутов недопустимы и традиционной среде FAT. Одна из таких недопустимы комбинаций используется Windows 95 для сигнала, что данная запись каталога является первой в серии записей. Если биты с 0 по 3 установлены (что означало бы файл только для чтения, скрытый, системный и метка тома - невозможная комбинация при нормальной работе), то VFAT узнает, что с первичной записью ассоциируются вторичные записи каталога.
Когда Windows 95 определяет необходимость наличия вторичных записей каталога, начинается их сборка, после чего образуется длинное имя файла. Первый байт во вторичных записях VFAT представляет индикатор последовательности и гарантирует, что записи каталога соединяются правильным образом. Кроме того, в каждой вторичной записи VFAT есть контрольная сумма, которая обеспечивает целостность длинного имени файла
Запись третьего типа может появиться в последовательности записей каталога для конкретного файла только один раз. Запись каталога с информацией класса используется для хранения данных, связанных с объектами. Байт типа (со смещением 12 как во вторичной записи, так и в записи информации класса каталога VFAT) указывает, должна ли запись каталога обрабатываться как информация класса или как вторичная запись. .Данные в записи информации класса позволяют информации в файле обрабатываться как объекту.
Псевдонимы файлов
Для поддержки совместимости со старыми программами каждый файл, имеющий длинное имя, имеет и короткое имя, известное как псевдоним. Это короткое имя файла автоматически создастся Windows 95 на основе длинного. Псевдоним хранится в первичной записи каталога и использует MS-DOS формат именования файлов. Псевдоним создается путем сокращения длинного имени файла следующим образом:
Недопустимые в FAT символы (исключая пробелы) заменяются символом подчеркивания.
Пробелы удаляются с уплотнением имени.
Если в имени файла есть несколько точек, то расширением считаются первые три символа после последней точки.
Имя урезается до шести символов.
В конец имени файла добавляются два символа ~ и 1.
Имя файла преобразуется к прописным буквам.
Если в результате получается файл с именем, которое уже существует, то число в конце имени увеличивается на единицу. После этого имя вновь проверяется. Если конфликт по-прежнему имеет место, то число в конце имени увеличивается еще на единицу, и так далее.
Память windows 95
В Windows 95 есть дна типа памяти - физическая и виртуальная.
Физически» память - это название для внутренней памяти, которая физически установлена и систему.
Виртуальная память представляет собой память, которую программное обеспечение использует, но которой на физически нет Под управлением Windows 95 можно иметь до 4Гбайт виртуальной памяти, хотя физической памяти при этом будет гораздо меньше.
Virtual Memory Manager несет ответственность за создание среды, в которой оперируют программы. Одна из основных задач VMM - автоматическое переключение страниц памяти. Это означает, что VMM несет ответственность за необходимые перемещения информации между физической и виртуальной памятью. Кроме того. переключение страниц связано и с перемещением информации внутри физической памяти, когда это необходимо.
Адресное пространство, создаваемое для приложения VMM, имеет размер 4Гбайт. Оно состоит в основном из виртуальной памяти, поскольку физической памяти в ПЭВМ намного меньше. Половина адресного пространств предназначено для приложения, другая половина - для самого Windows 95.
Адресные пространства системной VM |
|||||||||
|
0
2Гб |
Адреса программы
|
|
0
2Гб |
Адреса программы |
|
0
2Гб |
Адреса программы |
|
4Гб |
Адреса системы
|
4Гб |
Адреса системы
|
4Гб |
Адреса системы
|
||||
|
|||||||||
VMM может создавать множество адресных пространств. О необходимом перемещении информации заботится программа Memory Pager, которая делает доступными программы или данные. Реально доступ к программам или данным можно получить только и физической памяти. Другими слонами, программы или данные должны физически присутствовать во внутренней памяти ПЭВМ. Информация, не нужная в настоящий момент, хранится на жестком диске в файле обмена.
Memory Pager использует технологию, называющуюся подкачка страниц памяти по запросу (demand paging). Это означает, что страницы памяти (каждая размером 4К) перемещаются в физическую память и из нее по требованию операционной системы или программы. Страницы по мере необходимости перемещаются в и из адресного пространства программы. Активными страницами называются те, которые физически размещены во внутренней памяти. Неактивные страницы переведены в файл обмена на диск.
Windows 95 следит за всеми страницами памяти, программами и данными с помощью таблиц, размещенных в памяти. Windows 95 регистрирует, находится ли страница в памяти или в файле обмена, изменялось ли содержимое страницы или нет и как давно была ссылка на страницу. Если страница уже находится в памяти в момент, когда она нужна программе, то время на ее загрузку из файла обмена не тратится.
Страничная ошибка происходит тогда, когда система нуждается в странице данных, отсутствующей в памяти. В этом случае с нужная страница должна быть загружена и память до того, как система сможет ее использовать. Обработчик страничного прерывания, являющийся отдельным механизмом и операционной системе, определяет, есть ли в памяти пустая страница, в которую можно загрузить из файла обмена нужные данные. Если все страницы заняты, то обработчик страничного прерывания определяет, какую страницу можно удалить из памяти для того. чтобы загрузить новую.
Перегрузка системы управления страничной памятью имеет место тогда, когда обмен страницами между физической памятью и дисковым файлом чрезмерно увеличивается. Подобное происходит при недостатке в системе оперативной памяти для выполнения всех загруженных приложений.
Процесс начальной загрузки windows 95
Процесс начальной загрузки и Windows 95 имеет четыре определенные фазы:
Bootstrapping (самозагрузка)
Драйверы MS-DOS
Реальный режим
Защищенный режим
Первая фаза — что bootstrapping,, или фаза инициализации BIOS. Здесь процессом загрузки управляет BIOS. Команды, управляющие этой фазой, содержатся в ПЗУ BIOS самой ПЭВМ. Выполняет предварительная проверка аппаратного обеспечения и, затем загружается с магнитного диска загрузчик операционной системы. В нем содержатся команды загрузки остальных файлов операционной системы
Вторая фаза начальной загрузки — это фаза драйверов MS-DOS. Здесь выполняется файл 10.SYS. Для поддержания совместимости с MS-DOS- приложениями система загружает драйверы MS-DOS. В этот момент Windows 95 определяет текущую конфигурацию системы, конструируя так называемый профиль аппаратного обеспечения.Он создается путем сбора информации об аппаратуре, такой как последовательные и параллельные порты, использование прерываний и т.д. После того, как профиль аппаратного обеспечения создан, Windows 95 ищет файл CONFIG.SYS. Если CONFIG.SYS найден, то Windows 95 изучает его содержимое на предмет разрешения любых конфликтов между ним и профилем аппаратного обеспечения. Конфигурационные установки в CONFIG.SYS имеют преимущество перед профилем аппаратного обеспечения. После того, как операционная система обработала CONFIG.SYS, она ищет файл AUTОЕХЕС.ВАТ и если находит, то обрабатывает его содержимое. Эти два файла нужны Windows 95 только из соображений обратной совместимости с приложениями MS-DOS. Система загружает все драйверы, предназначенные для работы в реальном режиме и указывает на любые ошибки реального режима в процессе обработки CONFIG.SYS и АUTОЕХЕС.ВАТ - точно так же, как это делает DOS.
Фаза реального режима начинается после обработки файлов CONFIG.SYS и AUTOEXEC ВАТ. В ходе этой фазы загружаются файлы WIN.COM, VMM32.VXD и SYSTEM.INI.
WIN.СОМ выполняет начальные проверки системы и загружает компоненты ядра Windows 95. VMM32.VXD — это менеджер виртуальных машин (Virtual Machine Manager). VMM начинает загрузку драйверов виртуальных устройств и создает все нужные системе виртуальные машины. Когда загружается файл SYSTEM.INI, он проверяется на записи, отличные от соответствующих записей реестра Windows 95. Любые записи в файле SYSTEM.INI имеют приоритет, и система загружает то, что указано в них вместо соответствующих драйверов из реестра. После того, как все драйверы реального режима загружены, фаза реального режима выполнена. Система теперь готова к переходу в фазу защищенного режима.
В фазе защищенного режима загружаются драйвера Windows 95 и системные службы , а также остальные необходимые системные ресурсы Windows 95, например, шрифты. Затем загружаются компоненты рабочего стола и выдается приглашение зарегистрироваться в Windows 95, после чего система готова к нормальной работе.
Раздел 2. Программирование на языке Pascal.
Тема 1. Основные понятия. Элементы языка Pascal.
Язык Pascal является языком программирования высокого уровня. К его достоинствам можно отнести четкую структуру программ, простоту и ясность используемых конструкций. Наибольшее распространение получила версия языка фирмы Borland. Под названием Turbo Pascal.
Алфавит языка включает:
1) большие и маленькие латинские буквы от a до z и от A до Z;
2) знак «подчеркивание» _, который также считается буквой;
3) русские буквы, допускаемые внутри символьных констант и комментариев;
4) цифры от 0 до 9;
5) некоторые специальные символы.
Символы языка объединяются в слова, которые можно разделить:
1) зарезервированные или ключевые слова. Имеют фиксированное написание и значение, определяемое разработчиками языка;
2) целые числа и числа с плавающей точкой;
3) символьные строки и отдельные символы, заключенные в апострофы;
4) идентификаторы и имена.
Идентификаторы применяют для обозначения программ, процедур, функций, переменных, констант, меток, типов данных, модулей и полей записей, определенных в программе. Идентификатор может состоять из любого количества букв и цифр, начинаться должен с буквы, в имя можно включать знак подчеркивания. Различаются первые 63 символа идентификатора. Они могут быть стандартные и определенные пользователем. Слова друг от друга отделяются пробелами, большие и малые символы не различаются.
Пример простой программы: ввести два числа с клавиатуры, вычислить сумму, вывести на экран.
Program Summa;
Var x, y, z : Integer;
Begin
Read(x, y);
Z := x + y;
Write(z);
End.
Из примера видны особенности записи программ на Pascal:
всякая программа начинается с заголовка: слово program и название программы;
после заголовка располагается описательная часть программы;
между ключевыми словами begin и end находятся исполнительная часть программы – раздел операторов;
предложения языка отделяются «;»;
текст программы оканчивается точкой.
Между символами { } и (* *) можно располагать комментарии. В программе описаны 3 переменные, их описания находятся после ключевого слова var. Слово Integer – означает, что переменная целого типа. В программе использованы стандартные процедуры ввода и вывода – read и write. С клавиатуры вводится значение x и y, вычисляется их сумма. Результат при помощи оператора присваивается к переменной z. Затем выводится на экран.
Типы данных в Pascal.
Любая константа или переменная, использованная в программе принадлежит к определенному типу. Тип данных определяет:
множество значений, которые может принимать элемент данных;
множество операций, допустимых над элементами данных;
В Pascal типы данных делятся на скалярные и структурные.
В стандартном Pascal имеется четыре предопределенных скалярных типа:
1. Integer. Числа записываются в виде последовательности цифр со знаком или без него. Диапазон значений от -32768 до 32767. Переменные перечисляются в разделе описаний предложений:
var name : Integer;
В Turbo Pascal имеется несколько дополнительных целых типов.
2. Real – действительные. Переменные данного типа хранятся в формате с плавающей точкой. Числа могут записываться или с десятичной точкой или в показательной форме. Например:
var name : Real;
3. Boolean – логический. Принимает два значения: либо True, либо False. Считается, что True > False (т.е. 1 > 0).
var name : Boolean;
4. Char – символьный. Значениями являются отдельные символы заключенные в апострофы. Например ‘A’.
var name : Boolean;
Символы кодируются в памяти 8-битными целыми числами, т.е. всего 256 символов. Коды определяются стандартом ASCII(American Standard Code Information Interchange). Первая половина кодовой таблицы является международным стандартом, во второй половине описываются национальные символы.
Операции и выражения.
Операция – это символ или последовательность символов, задающая действия над элементами данных, связанное с получением значения.
Операнд – элемент данных для которого выполняется операция. Операция может применятся к данным определенного типа и давать результат такого же или другого типа.
В Pascal имеются следующие арифметические операции: +; -; *; /; div(целочисленное деление); mod(остаток от целочисленного деления). Операции сравнения <; >; <>; =>; <=; = и логические операции not, and, or, xor. Последовательность выполнения операций определяется приоритетом операции. Приоритет может быть изменен при помощи скобок, операции равного приоритета выполняются слева направо. Поскольку тип результата может отличаться от типов операндов возможны ситуации, когда в выражении два операнда одной операции будут иметь различный тип. Иногда Pascal автоматически выполняет преобразование типов. Например при арифметических операциях между целым и действительным операндами. Целый будет преобразован к действительному, и результат будет действительным.
Стандартные функции.
Вместе с переменными и константами в выражения можно включать функции, аргументы которых заключаются в пустые скобки. При определении значения выражения прежде всего вычисляются значения входящих в него функций. В Pascal имеются следующие функции: abs(x), sin(x), cos(x), exp(x), ln(x), sqr(x), sqrt(x), arctan(x). Преобразование действительного операнда в целый выполняется функциями:
Trunk(x) – целая часть аргумента;
Round(x) – возвращает аргумент, округленный до ближайшего целого;
Frac(x) – возвращает часть аргумента после запятой;
Так же имеются символьные функции:
Chr(x) – возвращает в программу символ с кодом N.
Ord(x) – возвращает код символа N.
Ввод и вывод на экран.
Ввод данных с клавиатуры осуществляется процедурами:
Read (список переменных);
Readln (список переменных);
Где список переменных – последовательность имен переменных разделенных запятыми. При выполнении процедуры, программа останавливается и ждет, пока нужное количество символов не будет введено с клавиатуры. При вводе числа разделяются пробелом либо Enter. Процедура ReadLn отличается тем, что после ввода всех переменных курсор перемещается на строку вниз.
Вывод на экран осуществляется процедурами
Write (список переменных);
Writeln (список переменных);
Выражения в списке переменных разделяются запятыми, значения выражений вначале вычисляются, затем выводятся. После выражения можно указать ширину поля экрана, в котором разместится выражение. Например:
Writeln(x:6:3);
Выведет значение ч в поле из 6-ти знакомест, отведя для дробной части 3 знакоместа.
В список выражений можно помещать строки любых символов, заключенных в апострофы. Например:
Writeln(‘ответ’,x:4,’км’).
Оператор присваивания.
Придает переменной конкретное значение, значение другой переменной или результат вычисления выражения. Формат оператора:
имя_переменной := выражение;
Вычисляет значение выражения справа и присваивает его переменной слева. Старое значение переменной теряется.
Тема 2. Операторы Pascal.
Оператор – конструкция языка, задающая определенные действия над выражениями и другими операторами. С самим оператором не связывается никакого значения. Разделяет операторы «;». Кроме оператора присваивания имеются следующие:
1. Составной оператор.
2. Условный оператор.
3. Оператор выбора.
4. Три оператора цикла.
5. Оператор перехода.
6. Пустой оператор.
7. Оператор вызова процедуры.
Составной оператор объединяет несколько операторов в один. Формат:
Begin
Оператор_1
Оператор_2
……………
Оператор_N
End;
Составной оператор позволяет рассматривать несколько операторов как один, которые выполняются в том порядке, в котором записаны в тексте программы.
Следует отметить, что Pascal не накладывает ограничений на величину отступа от края экрана, поэтому принято для удобства чтения программ операторы, расположенные внутри составного оператора, располагать лесенкой.
Условный оператор позволяет выполнять или пропускать операторы программы в зависимости от некоторого условия, выражения логического типа. Формат:
If условие then оператор_1
Else оператор_2;
Если условие истинно выполняется оператор_1, иначе выполняется оператор_2. Допускается запись без части else. Пример:
If x<>0 then z := y/x
Else write(‘ошибка’);
В качестве операторов оператор_1 и оператор_2 может выступать составной оператор, что дает возможность делать выбор между сколь угодно длинными последовательностями операторов. Также в качестве этих операторов может выступать другой условный оператор, что позволяет получать вложенные логические операторы. Пример: ввести 3 числа и вывести в порядке возрастания:
Var x; x1; x2; x3 : Real;
Begin
Write(‘Введите числа’);
Readln(x1,x2,x3);
If x1>x2 then begin
X := x1; x1 := x2; x2 := x;
End;
If x2>x3 then begin
X := x2; x2 := x3; x3 := x;
End;
If x1>x2 then begin
X := x1; x1 := x2; x2 := x1;
End;
Writeln(x1,x2,x3);
End.
Сложные условия.
Сложные условия составляются из простых при помощи логических операций.
(A > 0) and (B < 3)
not (X=Y) и т.д.
Истинность сложных условий вычисляется при помощи таблиц истинности.
Оператор выбора.
Позволяет выбрать одну из нескольких альтернатив, по которой пойдет выполнение программы. Формат:
Case селектор of
Список_констант_1 : оператор_1;
Список_констант_1 : оператор_1;
…
end;
Селектор – выражение скалярного типа, списки констант – того же типа что и селектор. Никакие два списка не имеют общих констант. В качестве операторов могут использоваться составные. Значения селектора вычисляются, затем отыскиваются в одном из списков констант. После этого выполняется оператор соответствующий списку. Оператор выбора может быть заменен последовательностью условных операторов. Пример: вводится цифра и печатается прописью:
Var N: Integer;
Begin
Write(‘введи цифру’);
Read(N);
Case N of
0: Writeln(‘Ноль’);
1: Writeln(‘Один’);
2,3,4,5,6,7,8,9: Writeln(‘много’);
end;
end.
Операторы цикла for.
Обеспечивает повторение цикла, управляемое параметрами цикла, фиксированное число раз. Формат:
For параметр_цикла := начальное_значение to конечное_значение do
оператор;
В качестве оператора может выступать составной оператор, параметр цикла – переменная скалярного типа, кроме действительного, начальное значение и конечное значение – выражение того же типа, что и параметр цикла. Выполнение оператора начинается с вычисления значений выражений, начальное и конечное значение. Затем переменной «параметр_цикла» присваивается начальное значение и делается проверка, не превышает ли оно конечное значение. Если нет, то выполняется тело цикла. После завершения выполнения, параметр цикла получает следующие по порядку значения и процесс повторяется начиная с проверки. Когда значение параметра цикла становится равным конечному значению, тело цикла выполняется последний раз. Пример: вычислить сумму чисел от 1 до 100.
Var s, i : Integer;
Begin
s := 0;
for i := 1 to 100 do begin
s := s + i;
Writeln(S);
end;
Следует иметь ввиду, что изменение параметра цикла в теле цикла каким-либо другим способом недопустимо, так как это может привести к изменению числа повторений и ошибке. Возможен вариант оператора for, когда параметр цикла принимает последовательно убывающие значения. Формат:
For параметр_цикла := начальное_значение downto конечное_значение do
оператор;
Пример: напечатать латинский алфавит в обратном порядке:
var c: Char;
begin
for c := ‘z’ downto ‘a’ do
write(c);
end.
В том случае, когда необходимо обеспечить изменение какой-либо переменной в теле цикла с постоянным числом, отличным от единицы, можно вычислить значение этой переменной через параметр цикла. Пример: вычислить сумму четных чисел от 2 до 100.
var s, i, j : Integer;
begin
c := 0
for i := 1 to 50 do begin
j := 2*i;
s := s + j;
end;
writeln(s);
end.
Оператор цикла while.
Формат: while условие оператор;
В качестве оператора может использоваться составной. Условие представляет собой логическое выражение. Тело цикла будет повторно повторятся, пока логическое выражение истинно. Перед каждым повторением оператора, значение условия вычисляется заново. Если условие изначально ложно, тело цикла не выполняется ни разу. В основном цикл while применяется, когда заранее не известно число повторений. Пример: определить сколько нужно членов ряда 1+1/2+1/3+…+1/n чтобы сумма превысила 10.
var s: Real;
n: Integer;
begin
s := 0; n := 0;
while s <= 10 do begin
n := n+1;
s := s + 1/n;
end;
write(n);
end.
Оператор цикла repeat.
Формат:
repeat
оператор_1;
оператор_2;
…
оператор_n;
until условие;
Часть программы заключенная между ключевыми словами repeat и until выполняется до тех пор, пока условие не станет истинно. В отличие от оператора while, вычисление логического выражения происходит после очередного повторения цикла, поэтому цикл repeat обязательно выполнится хотя бы один раз. Использовать составной оператор нет необходимости. Пример: определить сколько нужно членов ряда, чтобы сумма превысила 10.
var s: Real;
n: Integer;
begin
s := 0; n := 0;
repeat n := n + 1;
s := s + 1/n;
until s > 10;
write(n);
end.
Вложенные циклы.
Оператор повторяемый в цикле, сам может являться циклом. Ограничение на количество и глубину вложения в Pascal нет. Пример: вывести таблицу факториалов целых чисел от 1 до n.
var i, j, n : Integer;
f : Real;
begin
read(n);
for i := 1 to n do begin
for f := 1 to i do
for j := 1 to i do
f := f*j;
writeln(‘Факториал’, i, ‘=’, f);
end;
end.
Прочие операторы Pascal.
Оператор перехода позволяет изменить естественную последовательность выполнения программы. Оператор к которому осуществляется переход должен иметь метку, которая ставится перед оператором и отделяется от него двоеточием. В качестве метки может выступать или идентификатор или целое число от 0 до 9999. Все метки должны быть описаны в разделе описания меток. Этот раздел располагается обычно сразу за заголовком и имеет вид:
label метка_1, метка_2, метка_3…
Формат: goto метка;
Пример: ввести целые числа и определить их сумму. Завершить ввод после числа 0.
label 1;
var s, n : integer;
begin
s := 0;
1: read(n);
if n <> 0 then begin
s := S + n; goto 1;
end;
writeln(s);
end.
Следует отметить, что использование оператора перехода считается дурным тоном, так как его применение делает программу запутанной и сложной для понимания. Любой алгоритм можно модифицировать таким образом, чтобы избавится от необходимости использовать оператор перехода.
Пустой оператор не содержит никаких символов и ничего не делает. Применяется в тех случаях, когда по правилам записи должен быть оператор, но по смыслу его нет. Обозначается «;»
Тема 3. Общая структура программ на Pascal.
Программа на языке Pascal состоит из следующих разделов:
1. Заголовок программы.
2. Раздел указания используемых модулей.
3. Раздел описания меток.
4. Раздел описания констант.
5. Раздел описания типов данных.
6. Раздел описания переменных.
7. Раздел описания процедур и функций.
8. Раздел операторов.
Любой из этих разделов, кроме раздела операторов, может отсутствовать.
1. Заголовок программы: program имя_программы;
2. Модули используются в Turbo Pascal и представляют собой библиотеки процедур и функций. Раздел указания используемых модулей(вид): uses имена_модулей;
3. Раздел описания меток: label список_меток.
4. Константы – элементы данных, значения которых заданы заранее и не изменяются в процессе работы программы. Вид: const перечень_констант; {где каждое описание константы имеет вид имя_константы = значение_константы;}
5. Раздел описания типов данных служит для описания типов данных, определяемых пользователем. Имеет вид:
type перечень_объявлений_типов;
имя_типа = задание_типа;
6. Раздел описания переменных.
var перечень_объявления_переменных;
имя_переменной: тип_переменной;
7. Раздел описания процедур и функций.
8. Раздел операторов.
begin
оператор;
end.
Тема 4. Массивы. Одномерные массивы.
Массив – тип данных, объединяющий фиксированное число элементов данных одного и того же типа, называемого базовым типом. Каждый элемент массива имеет свой индекс, который используется для доступа к этому элементу, поэтому можно выделить любой элемент массива и обращаться с ним, как с переменной базового типа. Массив описывается в разделе описания типов следующим образом:
type
имя = array[минимальное_значение .. максимальное_значение] of базовый тип;
Где array и of – ключевые слова, минимальное значение и максимальное значение - константы целого типа, указывающие диапазон изменения индекса. Допускается сокращенное объявление массива в разделе описания переменных:
var имя_переменной : array [min .. max] of базовый тип;
Отдельный элемент массива записывается в виде:
имя_переменной[index], где index – константа переменной или выражения целого типа, значение которой лежит в диапазоне от минимального значения индекса до максимального.ъ
Одномерный массив – массив, базовым типом которого является скалярный тип, одномерный массив также называют вектором, количество элементов массива называют его длинной ил размером. Пример
type mas = array [0..99] of Real;
var x: mas;
y: array[-110..-1] of Integer;
Единственная операция, допустимая над массивом, как единым целым – операция присваивания значения одного массива другому, того же типа. Все остальные действия, включая ввод и вывод, необходимо выполнять над отдельными элементами массива. Пример: ввести значение в массив, присвоить их другому массиву и вывести оба массива.
var M1, M2 : array[1..10] of Integer;
i: Integer;
begin
i := 0;
repeat
i := i+1;
readln(M1[i]);
until i=10;
M2 := M1;
for i := 1 to 10 do
writeln(M1[i], ‘ ’, M2[i]);
end.
Найти наибольший элемент в заданном массиве:
const N = 100;
var a: array[1..N] of Integer;
x, imax, i: Integer;
begin
for i := 1 to N do Read(a[i]);
x := a[1]; imax := 1;
for i := 1 to N do
if a[i]>x then begin
x:= a[i]; imax := i;
end;
writeln(x,’ ‘, imax);
end.
Сортировка массивов и поиск элементов в массиве.
Сортировка – перестановка элементов массива в порядке их возрастания или убывания. Существует множество алгоритмов сортировки, одним из самых простейших является сортировка выбора. Чтобы отсортировать элементы массива в порядке возрастания необходимо выполнить следующие шаги:
1. Установить в массиве номер наименьшего элемента.
2. Поменять местами наименьший и первый элементы массива.
3. Выполнить пункты 1 и 2 над остатком массива, без первого элемента.
4. Повторять шаг 3, пока остаток массива не сократится до одного элемента.
Пусть имеется массив из пяти элементов. Действия:
40 50 10 20 30
10 50 40 20 30
10 20 40 50 30
10 20 30 50 40
10 20 30 40 50
На каждом проходе алгоритма наименьший элемент области поиска перемещается в уже отсортированную часть массива, за счет этого упорядоченная часть массива растет, а неупорядоченная сокращается на 1 элемент. Для сортировки массива из N элементов потребуется N-1 шагов повторения алгоритма.
const N = 100;
var a: array [1..N] of Integer;
tmp, min, i, j, jmin: Integer;
begin
for i := 1 to N do read(a[i]);
for i := 1 to N-1 do begin
min := a[i]; jmin := i;
for j := i to N do
if a[i] < min then begin
min := a[i]; jmin := j;
end;
tmp := a[jmin];
a[jmin] := a[i];
a[i] := tmp;
end;
for i:= 1 to N do
writeln(a[i]);
end.
Время выполнения одного прохода алгоритма пропорционально размеру неупорядоченной части массива. Размер неупорядоченной части массива равен N в начале работы и 2 в конце. Общее время сортировки выбора:
T = K*N + K(N-1) + … + K*3 + K*2 = , где K – коэфицент пропорциональности, не зависящий от N.
=
,
где e = const,
не зависящая от N,
характеризующаяся скорость выполнения
отдельных шагов алгоритма на конкретной
ЭВМ. Полученная формула показывает, как
изменяется продолжительность сортировки
при изменении размера массива. Зависимость
вида T = f(N),
где N – объем входных
данных, называется временной сложностью
алгоритма, у сортировки выбора она
квадратичная, т.е. время пропорционально
квадрату количества сортируемых
элементов.
Рассмотрим еще один способ сортировки: обменная или пузырьковая сортировка. На каждом шаге алгоритма проходит массив от начала к концу, сравнивая пары соседних элементов, если очередная пара нарушает требуемый порядок, ее элементы меняют местами. Шаги повторяют до тех пор, пока очередной проход не вызовет ни одного обмена.
40 50 10 20 30
40 10 20 30 50
10 20 30 40 50
В отличие от сортировки выбора количество
шагов обменной сортировки зависит от
первоначального вида массива. В лучшем
случае, когда массив уже отсортирован,
потребуется всего один проход алгоритма;
в худшем случае, когда массив отсортирован
в обратном порядке, потребуется N-1
проходов алгоритма для сортировки
массива из N элементов. В
данном случае за каждый проход алгоритма
на свое место будет ставится один элемент
массива, следовательно, сложность
обменной сортировки T =
(N-1)*t(N),
где t(N) –
временная сложность одного шага
пропорциональная N, т.е.
t(N) = K*N,
где k зависит от ЭВМ.
Следовательно,
,
т.е. в худшем случае сложность обменной
сортировки – квадратичная. Пример
программы:
const N = 100;
var a: array[1..N] of Integer;
tmp, i, j: Integer; flag: Boolean;
begin
for i := 1 to N read(a[i]);
flag := tmp; i := 1;
while (i<N) and flag do begin
flag := false;
for j := 1 to N-1 do
if a[j] > a[j+1] then begin
tmp := a[j];
a[j+1] := tmp;
flag := true;
end;
i := i+1;
end;
for i := 1 to N do writeln(a[i]);
end.
Кроме сортировки массивов часто возникает задача поиска заданного элемента в массиве. При этом необходимо определить имеется ли такой элемент в массиве, и если да, то каков его индекс. Пример:
const N = 100;
var a: array[1..N] of Integer;
i, b: Integer;
flag: Boolean;
begin
for i := 1 to N do read(a[i]);
read(b); flag := false;
while (i < N) and not(flag) do begin
i := i+1;
if a[i] = b then flag := true;
end;
if flag then writeln(i) else writeln(‘Отсутствует’);
end.
Многомерные массивы.
Если элементы массива сами являются массивами, получается структура данных, называемая двумерным массивом. Описывается двумерный массив следующим образом:
array [мин.зн.инд.1 .. макс.зн.инд.1, мин.зн.инд.2 .. макс.зн.инд.2]
of Базовый тип;
Обращаются к элементам массива, указывая два индекса, если указан один индекс, то это будет расценено, как имя вектора. Первый индекс обозначается как номер строки, второй – номер столбца.
Пусть дана матрица, определить сумму измеряемых элементов:
const Max_elem1 = 10;
Max_elem2 = 12;
var m: array [1..Max_elem1, 1..Max_elem2] of Real;
p, s : Real;
i, j : Integer;
begin
for i := 1 to Max_elem1 do
for j := 2 to Max_elem2 do read(m[i,j]);
s := 0;
for i := 1 to Max_elem1 do begin
p := 1;
for j := 1 to Max_elem2 do p := p*m[i,j];
s := s + p;
end;
writeln(‘Сумма’, S);
end.
Подобным образом можно использовать 3-х, 4-х и т.д. –мерные массивы.
Тема 5. Функции и процедуры. Описание функций.
Функция – часть программы, имеющая собственное имя, по которому она может быть вызвана для выполнения. С именем функции связывается определенное значение, т.е. функция возвращает некоторое значение, поэтому имя функции может быть использовано в выражениях. Кроме стандартных функций можно воспользоваться собственными, предварительно описав их в программе. Описание функции располагается в разделе описания процедур и функций, до исполняемой части программы, и является подобием подпрограммы. Начинается описание с заголовка:
function имя (формальные параметры): Тип;
Где имя – имя функции, формальные параметры – список переменных (с указанием типов), тип – тип значения вычисляемого функцией, должен быть скалярным.
Замечание: типы в заголовке функции можно обозначать только именами, поэтому тип массива требует предварительного описания в разделе type.
Вслед за заголовком располагается тело функции, по структуре не отличающееся от программы и включающее те же самые разделы (label, var, type …). Заканчивается функция «;». В теле функции должен присутствовать оператор присваивания, в левой части которого стоит имя функции, в правой - выражение для возвращаемого значения. Пример: описание функции выбора большего из 2- х аргументов.
function Max (a, b : real): real;
begin
if a > b then Max := a else Max := b;
end;
Обращение к функции.
После описания функции ее можно использовать в выражениях, наряду со стандартными функциями. При вызове, вслед за именем, в круглых скобках указываются аргументы функции, то есть ее фактические параметры. Порядок следования и типы фактических параметров должны быть такими же как у формальных параметров в заголовке функции. Вычисление выражений, содержащих обращения функции происходит по алгоритму:
Вычисляются выражения для аргументов функции.
Значения аргументов присваиваются формальным параметрам из заголовка описания.
Выполняется тело функции и вычисляется ее значение.
Значение функции подставляется в исходное выражение на место обращения к функции.
Вычисление исходного выражения продолжается.
Пример: ввести 2 числа, вывести большее.
var x, y: Real;
function Max (a, b : real): real;
begin
if a > b then Max := a else Max := b;
end;
begin
write(‘Введите 2 числа’);
readln(x, y);
writeln(‘Больше: ’, Max(x, y));
end.
Процедуры.
Процедура, также как и функция – это часть программы, имеющая собственное имя, по которому она может быть вызвана для выполнения. Однако, с этим именем не связывается никакого значения и оно не может быть использовано в выражениях.
Заголовок процедуры.
procedure имя (формальные параметры);
В конкретном месте программы, где необходимо вычислить действия, предусмотренные в процедуре, ставят оператор вызова процедуры:
имя (фактические параметры);
При вызове процедуры происходит следующее:
1. В памяти размещаются параметры, передаваемые процедуре (исключая параметры-переменные).
2. В другом месте памяти сохраняются значения локальных переменных вызывающей процедуры или программы.
3. Заполняется место возврата в вызывающую процедуру или программу.
4. Управление передается вызванной процедуре.
5. После выполнения происходит возврат в заполненное место.
Пример: вывести на экран сумму N1 элементов вещественного массива.
type arr = array[1..100] of Real;
var a: arr;
i: integer;
procedure PrintSum(R: arr; N: Integer);
var Summa: Real;
i: Integer;
begin
Summa := 0;
for i:=1 to N do
Summa := summa + R[i];
writeln(Summa);
end;
begin
for i:=1 to 20 do read (A[i]);
PrintSum(A, 20);
end.
Параметры-значения и параметры-переменные.
В Pascal имеется 2 способа установления соответствия между формальными и фактическими параметрами процедуры или функции. Передача параметров по значению и передача параметров по ссылке. Реализация того или иного способа зависит от вида задания формальных параметров они могут быть 2-х видов:
1. Параметры-значения. В этом случае фактические параметры передаются по значению.
2. Параметры-переменные. Фактические параметры передаются по ссылке.
Параметры значения задаются следующим образом:
имя: тип;
В этом случае в качестве фактического параметра может выступать константа, переменная, выражение, все, что имеет значение; и при вызове процедуры будет создана специальная локальная переменная, которой будет присвоено это значение. При выполнении процедуры будет использоваться эта локальная переменная, причем ее значение может изменятся, но это никак не проявится в вызывающей процедуру программе. Таким образом параметры значения подходят для задания только входных данных процедуры или функции. Однако, процедура способна возвращать в программу новые значения. Для этого используются параметры-переменные, задаваемые следующим образом:
var имя: тип;
В этом случае в качестве фактического параметра может выступать только переменная и при вызове процедуры или функции будет создана ссылка на эту переменную под новым именем. Все преобразования, выполненные в процедуре над параметром-переменной выполняются таким образом непосредственно над аргументом. Поэтому параметры-переменные могут использоваться как для задания входных, так и выходных данных процедур и функций. Пример: ввести 2 числа, вывести большее используя процедуру.
var r, x, y: Real;
procedure Max(a, b: Real; var M: real);
begin
if a>b then M := a else M := b;
end;
begin
write(‘Enter 2 counts’);
readln(x, y);
Max(x, y, r);
writeln(‘Больше’, r);
end.
Возможно также использование параметров-переменных не меняющих значение в процедуре. Они задаются следующим образом:
const имя: тип;
Передача параметров по ссылке часто используется при задании в качестве входных параметров структур большого размеров. Так как при использовании параметров-значений потребуется дополнительный объем памяти для копирования структур.
Локальные и глобальные переменные.
Переменная, объявленная в процедуре или функции называется локальной для данной процедуры или функции. Это означает, что она может использоваться только в данной процедуре и не может в вызвавшей ее программе. Переменная объявленная в программе называется глобальной. Она может быть использована как в самой программе, так и во всех ее процедурах и функциях. В случае, когда внутри процедуры имеется другая процедура, то переменная, объявленная во внешней процедуре, может использоваться и во внутренней, обратное неверно. Областью видимости переменной называют часть программы в которой данная переменная может использоваться. Таким образом область видимости глобальной переменной – вся программа; область видимости локальной – та процедура или функция, в которой она объявлена и все процедуры и функции входящие в данную. Если глобальная переменная имеет то же имя, что и локальная, то она в области видимости локальной доступна не будет.
Рекурсия.
Понятие, которое частично определяется через самого себя, называется рекурсивным. Например, о факториале числа n, можно сказать что:
Любое рекурсивное определение состоит из двух частей: одна часть определяет понятие через него же, другая через иные понятия. Рекурсивный алгоритм – алгоритм, который при вычислениях обращается сам к себе. Например, вычисление функции F(M) может потребовать вычисления F(M-1) и еще каких-то операций. То есть частью алгоритма вычисления функции будет вычисление этой же функции с другими аргументами. Процедура или функция является рекурсивной, если вызывает сама себя прямо или косвенно через другие процедуры. Пример: рекурсивное функция вычисления факториала.
function Factorial(N: Integer): integer;
begin
if N = 1 then Factorial := 1 else Factorial := Factorial(N-1)*N;
end;
Следует иметь в виду, что в рекурсивной процедуре обязательно должна быть предусмотрена возможность прекращения дальнейшего самовызова и начала обратного процесса. Как правило это осуществляется с помощью условного оператора. Пример: возведение действительно числа в целую степень.
procedure Power(x: Real; N: Integer; var y: Real);
begin
if N = 0 then y := 1 else begin
Power(x, N-1, y);
y := y*x;
end;
end;
Количество вызовов процедурой самой себя называется глубиной рекурсии. Если рекурсивная процедура имеет локальные переменные, то они сохраняют свои значения для каждого вызова процедуры самой себя. Пример: ввести строку символов и вывести ее в обратном направлении используя рекурсию.
program Reverse_string;
procedure reverse;
var ch: Char;
begin
while not(eoln) do begin
read(ch);
reverse;
write(ch);
end;
end;
begin
reverse;
end.
Процедура reverse считывает один символ, если строка не закончена вызывает себя снова, при этом в памяти будет сохранено столько нашей локальной переменной «ch», какова глубина рекурсии. Каждая копия будет хранить один символ из строки, и в процессе выхода из рекурсии они будут хранить один символ из строки, и в процессе выхода из рекурсии они будут выведены на экран. При этом символ введенный последним выведется первым, предпоследний второй и т.д. Таким образом при рекурсивных вызовах процедур и функций в память автоматически сохраняются все наборы локальных переменных. С одной стороны это упрощает программирование, т.к. не нужно заботится о сохранности переменных. С другой стороны это ведет к повышенному расходу памяти. Любую задачу можно решить без применения рекурсии.
В отличие от Basic, при введении новой переменной, особенно локальной Pascal не заботится об обнулении конкретных ячеек памяти. Поэтому желательно любую переменную при ее использованием инициализировать, задав ей начальное значение.
