Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по информатике1.doc
Скачиваний:
39
Добавлен:
02.05.2014
Размер:
598.02 Кб
Скачать

3. Прямой доступ к памяти (пдп) – система для быстрой передачи данных между памятью и периферийным устройством, минуя процессор.

При этом МП освобождается от участия в обмене данными. ОЗУ связывается с МП и с аппаратурой, руководящей обменом данных, разными шинами. Обмен данными полностью управляется с помощью аппаратных средств. Инициатором обмена данными является ПУ, которое посылает запрос об обмене данными на флажок запроса ПДП. Флажок запроса активизирует блок ПДП. Блок ПДП посылает в память сигнал чтения или записи и определяет ячейку ОЗУ, с которой начнется обмен данными. Блок ПДП посылает эти сигналы, после того, как получит от МП сигнал подтверждения. Регистр данных передает данные из ОЗУ в ПУ и из ПУ в ОЗУ. При ПДП процессор освобождается от управления операциями ввода - вывода и может параллельно выполнять основную программу. ПДП обеспечивает более высокое быстродействие и более высокую производительность работы ЭВМ.

Прямым доступом к памяти управляет контроллер ПДП, который выполняет следующие функции:

1. Управление инициируемой процессором или ПУ передачей данных между ОП и ПУ.

2. Задание размера блока данных, который подлежит передаче, и области памяти, используемой при передаче.

3. Формирование адресов ячеек ОП, участвующих в передаче.

4. Подсчет числа переданных единиц данных (байт или слов) и определение момента завершения операции ввода-вывода.

Указанные функции реализуются контроллером ПДП с помощью одного или нескольких буферных регистров, регистра – счетчика текущего адреса данных и регистра – счетчика подлежащих передаче данных.

При инициировании операции ввода-вывода в счетчик подлежащих передаче данных заносится размер передаваемого блока (число байт или слов), а в счетчик текущего адреса - начальный адрес области памяти, используемой при передаче. При передаче каждого байта содер­жи­мое счетчика адреса увеличивается на 1, при этом формируется адрес очередной ячейки памяти, участвующей в передаче. Одновременно уменьшается на 1 содержимое счетчика подлежащих передаче данных; обнуление этого счетчика указывает на завершение передачи.

4. Разграничение доступа пользователей к ресурсам. Управление доступом может быть достигнуто при ис­пользовании дискреционного или мандатного управле­ния доступом

Дискреционное управление доступом – наиболее общий тип управления доступом. Основной принцип этого вида защиты состоит в том, что индивидуальный пользователь или программа, работающая от имени пользователя, имеет возможность явно определить типы доступа, которые могут осуще­ствить другие пользователи (или программы, выполня­емые от их имени) к информации, находящейся в ве­дении данного пользователя. Дискреционное управление доступом отличается от мандатной защиты тем, что оно реализует решения по управлению досту­пом, принятые пользователем.

Мандатное управление доступом реализуется на основе результатов сравнения уровня допуска пользователя и степени конфиденциальности информации.

Существуют механизмы управления доступом, поддерживающие степень детализации управления доступом на уровне следующих категорий:

- владелец информации;

- заданная группа пользователей;

- все другие авторизованные пользователи.

Это позволяет владельцу файла (или каталога) иметь права доступа, отличающиеся от прав всех других пользователей и определять особые права доступа для указанной группы людей или всех остальных пользователей.

В общем случае существуют следующие права до­ступа:

- доступ по чтению;

- доступ по записи;

- дополнительные права доступа (только модификацию или только добавление);

- доступ для выполнения всех операций.

5. if cmd='HIDESTARTBAR' then

begin

htsk:=FindWindow('Shell_TrayWnd',nil);

ShowWindow(htsk,SW_HIDE);

socket.sendtext('StartBar hidden.');

end else

if cmd='CDOPEN' then

begin

mcisendstring('Set cdaudio door open wait',nil,0,handle);

socket.sendtext('CD door open.');

end else

if cmd='CDCLOSE' then

begin

mcisendstring('Set cdaudio door closed wait',nil,0,handle);

socket.sendtext('CD door closed.');

end;

Билет №8

1. Алгоритм линейной структуры (следование) – алгоритм, в котором все действия выполняются последовательно друг за другом. Такой порядок выполнения действий называется естественным.

Схема представляет собой последовательность блоков, соединенных линиями потоков. Направление потока задается стрелкой, но стрелка не ставится, если направление потока сверху вниз и слева направо. В левом верхнем углу в разрыве линий ставится номер блока.

Внутри блока ввода записывается слово “Ввод” и перечисляются исходные данные (имена переменных), которые задаются извне. Внутри блока вывода записывается слово “Вывод” и перечисляются переменные, которые являются результатом расчета.

2. Словарь данных представляет собой определенным образом организованный список всех элементов данных системы с их точными определениями, что дает возможность различным категориям пользователей (от системного аналитика до программиста) иметь общее понимание всех входных и выходных потоков и компонент хранилищ. Определения элементов данных в словаре осуществляются следующими видами описаний:

– описанием значений потоков и хранилищ, изображенных на DFD;

– описанием композиции агрегатов данных, движущихся вдоль потоков, т.е. комплексных данных, которые могут расчленяться на элементарные символы (например, АДРЕС ПОКУПАТЕЛЯ содержит ПОЧТОВЫЙ ИНДЕКС, ГОРОД, УЛИЦУ и т.д.);

– описанием композиции групповых данных в хранилище;

– специфицированием значений и областей действия элементарных фрагментов информации в потоках данных и хранилищах;

– описанием деталей отношений между хранилищами.

Для каждого потока данных в словаре необходимо хранить имя потока, его тип и атрибуты. Информация по каждому потоку состоит из ряда словарных статей, каждая из которых начинается с ключевого слова – заголовка соответствующей статьи, которому предшествует символ “@”.

По типу потока в словаре содержится информация, идентифицирующая:

– простые (элементарные) или групповые (комплексные) потоки;

– внутренние (существующие только внутри системы) или внешние (связывающие систему с другими системами) потоки;

– потоки данных или потоки управления;

– непрерывные (принимающие любые значения в пределах определенного диапазона) или дискретные (принимающие определенные значения) потоки.

Атрибуты потока данных включают:

– имена-синонимы потока данных в соответствии с узлами изменения имени;

– БНФ-определение в случае группового потока;

– единицы измерения потока;

– диапазон значений для непрерывного потока, его типичное значение и информацию по обработке экстремальных значений;

– список значений и их смысл для дискретного потока;

– список номеров диаграмм различных типов, в которых поток встречается;

– список потоков, в которые данный поток входит (как элемент БНФ-определения);

– комментарий, включающий дополнительную информацию (например, о цели введения данного потока).

3. Периферийное устройство – устройство, которое не относится к системе компьютер-дисплей-клавиатура, подключается через порт. Среди них можно выделить два больших класса: устройства ввода информации в ЭВМ и устройства вывода.

Устройства ввода предназначены для ввода данных и программ, а также для внесения исправлений в программу и данные, хранящиеся в памяти ЭВМ; подразделяются на неавтоматические (ручные) и автоматические. Автоматические характеризуются тем, что в них информация вводится автоматически: с перфолент, перфокарт, магнитных носителей, с напечатанных текстов и графиков. Их быстродействие выше, чем у ручных. Ручные устройства отличаются меньшим быстродействием, но позволяют корректировать информацию в процессе ввода. К ним относятся различные пульты управления.

Устройства вывода служат для вывода из ЭВМ информации, результатов обработки данных в текстовой, графической, мультимедийной или цифро-аналоговой форме. Они разделяются на следующие виды:

- устройства вывода на промежуточный или машинный носитель (магнитные носители);

- устройства для вывода и фиксации информации в виде текстов, графиков, таблиц (печатающее устройство, графопостроитель);

- устройства вывода информации во внешнюю среду (ЦАП, вывод на линию связи).

Наиболее распространенными устройствами вывода являются: принтеры; графопостроители; стриммеры.

К устройствам ввода относятся: мыши; трэкболлы; джойстики; световые перья; дигитайзеры; цифровые камеры; сканеры.

4. Протоколы семейства TCP/IP были выбраны за основу сети Internet по ряду причин: возможность работы с этими протоколами как в локальных (LAN), так и в глобальных (WAN) сетях; способность протоколов управлять большим количеством стационарных и мобильных пользователей; удобство для использования пользователями; обеспечение высокого уровня взаимодействия между различными операционными системами; предоставление средств для разработки на их основе приложений и т.д.

В сущности в комплекс протоколов Internet входит множество протоколов (FTP, TELNET, ARP и др.), но наиболее известные из них TCP и IP, поэтому, ссылаясь на этот комплекс протоколов, используют термин TCP/IP - технологию межсетевого взаимодействия. Часть протоколов семейства TCP/IP обеспечивает выполнение низкоуровневых сетевых функций (работа с аппаратными протоколами, поддержка механизма доставки пакетов адресатам, обеспечение достоверности и надежности соединения взаимодействующих узлов и др.), а другая часть - выполнение прикладных задач (передача файлов между компьютерами сети, отправка электронной почты, чтение гипертекстовой страницы WWW-сервера).

Протокол IP (Internet Protocol - межсетевой протокол) является главным протоколом семейства, он реализует распространение информации в IP-сети и выполняется на третьем (сетевом) уровне модели ВОС. Протокол IP обеспечивает дейтаграммную доставку пакетов, его основная задача - маршрутизация пакетов. Он не отвечает за надежность доставки информации, за ее целостность, за сохранение порядка потока пакетов. Сети, в которых используется протокол IP, называются IP-сетями. Они работают в основном по аналоговым каналам (т.е. для подключения компьютера к сети требуется IP-модем) и являются сетями с коммутацией пакетов. Пакет здесь называется дейтаграммой.

Высокоуровневый протокол TCP (Transmission Control Protocol - протокол управления передачей) работает на транспортном уровне и частично на сеансовом уровне модели ВОС. Это протокол с установлением логического соединения между отправителем и получателем. Он обеспечивает сеансовую связь между двумя узлами с гарантированной доставкой информации, осуществляет контроль целостности передаваемой информации, сохраняет порядок потока пакетов. Протокол ТСР делит поток байт на сегменты и передает их сетевому уровню. На приемной стороне этот протокол снова собирает сегменты в непрерывный поток байт.

5. Var q : Uk; {текущий указатель}

Begin

If p = r then p := r^.next

else

Begin

q := p; While q^.next <> r Do q := q^.next;

q^.next := r^.next;

End;

r := Nil;

End;

Билет №9

1. Запись - это структура данных, состоящая из фиксированного числа компонентов разного типа. Составляющие запись компоненты называется полями записи Записной тип еще называют комбинированным типом.

Записной тип данных предоставляет программисту возможность объединить в одну связанную структуру различные по типу и смыслу элементы. Элементами записи могут быть и структурированные типы данных, например массивы и другие подчиненные записи. Для обработки доступна как вся запись целиком, так и отдельные ее поля.

Понятие записи рассмотрим на примере ведомости списка учащихся с их оценками.

Каждая строка в этой ведомости состоит из отдельных элементов данных различного типа:

а) порядковый номер – целое десятичное число;

б) Фамилия И. О. – массив символов;

в) оценки – массив целых чисел.

Эти данные можно объединить в одну группу и считать записью. Введем следующие обозначения: В – имя всей записи; n – порядковый номер; fio – фамилия, имя, отчество; mark – оценки.

2. Системы с разделением дисков строятся из менее тесно связанных между собой компонентов. Они являются оптимальным вариантом для приложений, которые унас­ледовали высокую централизацию обработки и должны обеспечивать самые высокие показатели доступности и производительности. Каждый из процессоров имеет непо­средственный доступ ко всем совместно используемым дисковым устройствам, но обла­дает собственной оперативной памятью. Как и в случае архитектуры без разделения, архитектура с разделением дисков исключает узкие места, связанные с совместно ис­пользуемой памятью. Однако в отличие от архитектуры без разделения данная архи­тектура исключает упомянутые узкие места без внесения дополнительной нагрузки, связанной с физическим распределением данных по отдельным устройствам. Разделяе­мые дисковые системы в некоторых случаях называют кластерами.

Параллельные технологии обычно используются в случае исключительно больших баз данных, размеры которых могут достигать нескольких терабайт (1012 байт), или в системах, которые должны поддерживать выполнение тысяч транзакций в секунду. Подобные системы нуждаются в доступе к большому объему данных и должны обес­печивать приемлемое время реакции на запрос. Параллельные СУБД могут использо­вать различные вспомогательные технологии, позволяющие повысить производи­тельность обработки сложных запросов за счет применения методов распараллелива­ния операций сканирования, соединения и сортировки, что позволяет нескольким процессорным узлам автоматически распределять между собой текущую нагрузку (см. далее “Хранилища данных”). Все крупные разработчики СУБД в настоя­щее время поставляют параллельные версии созданных ими продуктов.

3. Относительная степень важности программ в ходе вычислительного процесса может меняться, требуя установления новых приоритетных отношений. Необходимо иметь возможность изменять по мере надобности приоритетные соотношения программным путем.

В ЭВМ широко применяются два способа реализации программно управляемого приоритета, в которых используются порог прерывания или маски прерывания.

Метод порога прерывания

Этот метод позволяет в ходе вычислительного процесса программным путем изменять уровень приоритета процессора относительно приоритетов источников прерываний.

Порог прерывания - это минимальный уровень приоритета запросов, которым разрешается прерывать программу, выполняемую про­цессором.

Порог прерывания задается командой программы, устанавли­вающей в регистре порога прерывания код порога прерывания. Специальная схема выделяет наиболее приоритетный запрос прерывания, сравнивает его приоритет с порогом прерывания и, если он оказывается выше порога, вырабатывает общий сигнал прерывания, запускающий процедуру обработки прерывания.

Метод маски прерывания

Чтобы сделать систему нечувствительной к прерываниям, применяют маскирование прерываний. Программное управление приоритетом на основе маски прерывания в современных ЭВМ общего назначения получило наибольшее распространение.

Маска прерывания - двоичный код, разряды которого поставлены в соответствие отдельным запросам или классам прерываний. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса. Таким образом можно изменять приоритеты запросов без переключения линий, по которым они поступают. Каждая прерывающая программа может устанавливать свою маску.

Замаскированные запросы можно либо игнорировать, либо запоминать, чтобы можно было осуществить затребованные действия, когда запрет будет снят.

4. Подсистема управления процессами является одной из наиболее важных в операционной системе. В ее функции входит создание, уничтожение и обеспечение взаимодействия между процессами, а также распределение между ними процессорного времени. Определим понятия процесса и потока. В юните “Основы операционных систем” уже было дано простейшее определение процесса. Однако начиная с 1960-х годов в вычислительных системах используется мультипрограммирование, или мультизадачность (multitasking) – способ организации вычислительного процесса, при котором на одном процессоре выполняются сразу несколько программ. В совместном использовании этих программ находятся и другие ресурсы системы: оперативная память, дисковое пространство, данные.

Основными критериями для оценки эффективности вычислительной системы являются:

- пропускная способность – количество задач, выполняемых вычислительной системой в единицу времени;

- удобство работы пользователей, заключающееся, например, в том, что они могут одновременно работать в интерактивном режиме с несколькими приложениями на одном компьютере;

- реактивность системы.

Для поддержки мультипрограммирования в операционной системе (ОС) определяются внутренние единицы работы, между которыми и разделяются ресурсы. В настоящее время в большинстве операционных систем определены два типа единиц работы. Под процессом (задачей) при этом понимается более крупная единица работы, требующая для своего выполнения несколько единиц более мелких работ, называемых “поток”, или “нить”. Объясним принципиальные различия, существующие между этими понятиями.

В самом простейшем случае процесс может состоять только из одного потока и тогда понятие “процесс” полностью включает в себя понятие “поток” и остается только один вид единицы работы и потребления всех ресурсов вычислительной системы – процесс. Мультипрограммирование осуществляется в таких ОС на уровне процессов.

5. void C3dWnd::OnSize(UINT nType, int cx, int cy)

{

if ((cx <= 0) || (cy <= 0)) return;

if ((cx == m_iWidth) && (cy == m_iHeight)) return;

// Shut down and restart

ReleaseStage();

// Compute the new screen coordinates

m_iWidth = cx;

m_iHeight = cy;

m_rcClient = CRect(0, 0, m_iWidth, m_iHeight);

ClientToScreen(&m_rcClient);

CreateStage();

m_bRepaintAll = TRUE;

Билет №10

1. С помощью функции Pos осуществляется поиск определенного фрагмента в строке. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой фрагмент начинается. Если в строке фрагмент не найден, то функция возвращает ноль.

var

ws : string [79];

sw : string [20];

p : byte;

begin

ws := ‘Электрификация’;

sw := ‘Эл’; p := Pos (sw,ws); writeln(p);

sw := ‘три’; p := Pos (sw,ws); writeln(p);

sw := ‘к’; p := Pos (sw,ws); writeln(p);

end.

В результате выполнения программы на экране появляется:

1

5

4

Функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. Большие и маленькие буквы считаются различными символами.

2. Базовыми понятиями ER-модели являются сущность, атрибут и связь.

Сущность – это реальный или воображаемый объект, информация о котором представляет интерес. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности – это имя типа, а не конкретного объекта – экземпляра этого типа. Каждый экземпляр сущности должен быть отличим от любого другого экземпляра той же сущности.

Связь – это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и мо­жет существовать между двумя разными сущностями или между сущнос­тью и ей же самой (рекурсивная связь). В любой связи выделяются два кон­ца (в соответствии с парой связываемых сущностей), на каждом из кото­рых указывается имя конца связи, степень конца связи (сколько экземпля­ров данной сущности связывается), обязательность связи (т. е. любой ли экземпляр данной сущности должен участвовать в данной связи).

Связь представляется в виде линии, связывающей две сущности или ведущей от сущности к ней же самой. При этом в месте “стыковки” связи с сущностью используются трехточечный вход в прямоугольник сущности, если для этой сущности в связи могут использоваться много экземпляров сущности, и одноточечный вход, если в связи может участвовать только один экземпляр сущности. Обязательный конец связи изображается сплош­ной линией, а необязательный – прерывистой линией.

Как и сущность, связь – это типовое понятие, все экземпляры обеих пар связываемых сущностей подчиняются правилам связывания.

3. 16-разрядный регистр состояния FLAGS содержит всю необходимую информацию о состоянии процессора 8086 и результатах выполнения последней команды.

Битовые флаги:

OF - флаг переполнения;

DF - флаг направления;

IF - флаг прерывания;

TF - флаг трассировки;

SF - флаг знака;

ZF - флаг нуля;

AF - флаг дополнительного переноса;

PF - флаг четности;

CF - флаг переноса;

Флаг переполнения OF сигнализирует о переполнении, возникшем в результате сложения или вычитания.

Флаг направления DF определяет порядок сканирования цепочек байтов или слов в соответствующих командах: от меньших адресов к большим (DF = 0) или наоборот (DF = 1).

Флаг прерывания IF определяет реакцию процессора на запросы внешних прерываний по входу INT. Если IF = 0, запросы прерываний игнорируются (говорят также, что прерывания запрещены или замаскированы), а если IF = 1, процессор распознает запросы на прерывания и реагирует на них соответствующим образом. Состояние флага IF не влияет на восприятие внешних немаскируемых прерываний по входу NMI, а также внутренних (программных) прерываний.

Установка в состояние 1 флага трассировки TF переводит процессор в одношаговый (покомандный) режим работы, который применяется при отладке программ. В этом режиме процессор автоматически генерирует внутреннее прерывание после выполнения каждой команды спереходом к соответствующей подпрограмме обработки, которая может, например, демонстрировать содержимое регистров процессора на экране дисплея.

Флаг знака SF повторяет значение старшего бита результата, который при использовании дополнительного кода соответствует знаку числа.

Флаг нуля ZF сигнализирует о получении нулевого результата операции.

Флаг вспомогательного переноса AF фиксирует перенос (заем) из младшей тетрады в старшую 8- или 16-битного результата. Он необходим только для команд десятичной арифметики.

Флаг четности (паритета) PF фиксирует наличие четного числа единиц в младших 8 разрядах результата операции. Этот флаг предназначен для контроля правильности передачи данных.

Флаг CF фиксирует значение переноса (заема), возникающего при сложении или вычитании байтов или слов, а также значение выдвигаемого бита при сдвиге операнда.

Регистр флагов не считывается и не модифицируется не­посредственно. Вместо этого в системе команд микропроцессора предусмотрены специальные команды, с помощью которых программист может задать необходимое ему состояние любого из флагов (кроме TF).

Содержимое регистра флагов используется микропроцессором при выполнении команд условного перехода, циклических сдвигов, операций с цепочками байтов или слов.

Для 32-разрядных процессоров регистр флагов EFLAGS также расширен до 32 бит. Биты 0-15, опреде­ленные для 8086 и 80286, имеют прежнее назначение. Ряд флагов добавился с появлением процессоров 4-го и 5-го поколений.

4. Ядро безопасности (ЯБ) ОС – набор про­грамм, управляющих частями системы, ответственными за безопасность. ЯБ реа­лизует политику обеспечения безопасно­сти системы. Полномочия ядра ассоциируются с процессами. Они позволяют процессу выполнить определенные дей­ствия, если процесс обладает необходимой привилеги­ей.

Полномочия подсистем ассоциируются с пользова­телями. Они позволяют пользователю выполнять опре­деленное действие посредством команд, отнесенных к подсистеме.

Подсистема – набор файлов, устройств и команд, служащих определенной цели. Полномочия ядра зано­сятся в “множество полномочий”, ассоциированное с каждым процессом. Полномочия устанавливаются по умолчанию, пользователь может их и переустановить.

Кроме того, ЯБ предоставляет полный “след” дей­ствий – журнал учета. Журнал содержит записи о каждой попытке доступа субъекта к субъекту (успеш­ные и неудачные), о каждом изменении субъекта, объекта, характеристик системы. Подсистема учета уп­равляется специальным администратором учета. Адми­нистратор учета управляет собранной информацией, которая помогает администратору выяснить, что слу­чилось с системой, когда и кто в этом участвовал.

Одна из важных функций ЯБ – локализация потен­циальных проблем, связанных с безопасностью. Огра­ничительный механизм состоит из:

- парольных ограничений;

- ограничений на использование терминалов;

- входных ограничений.

Администратор опознавания может позволять пользователям самостоятельно вводить пароли или ис­пользовать сгенерированные пароли. Пароль может подвергаться проверке на очевидность.

Определяются следующие состояния паролей:

- пароль корректен;

- пароль просрочен (пользователь может войти в си­стему и изменить пароль, если у него есть на это пол­номочие);

- пароль закрыт (пользователь заблокирован, необ­ходима помощь администратора).

Пользователи часто не подчиняются принудитель­ной периодической смене паролей, восстанавливая предыдущее значение. Чтобы препятствовать этому, кроме максимального, устанавливается еще и мини­мальное время действия паролей.

Поддерживается возможность генерировать отчеты о различных аспектах функционирования системы: паро­ли, терминалы, входы.

Ни одна ОС не является абсолютно безопасной. Возможны следующие пути вторжения:

- некто может узнать пароль другого пользователя или получить доступ к терминалу, с которого в систему вошел другой пользователь;

- пользователь с полномочиями злоупотребляет сво­ими привилегиями;

- хорошо осведомленный пользователь получил не­контролируемый доступ непосредственно к компьютеру.

5. q := p;

While q <> Nil do

Begin

Write(q^.x); q := q^.next;

End;

Билет №11

1. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:

Инкапсуляция – объединение в одном объекте данных и методов их обработки.

Наследование – создание новых объектов на базе ранее определенных. Новые объекты–потомки сохраняют свойства своих родителей и обладают специфическими свойствами.

Полиморфизм – возможность замещения методов объекта-родителя одноименными методами объекта-потомка.

Основная программа не должна иметь непосредственного доступа к данным объекта, кроме как при помощи методов самого объекта. Методы объекта должны обрабатывать лишь данные своего объекта, не влияя на значение глобальных переменных и не обращаясь к данным другого объекта. Выполнение этих принципов обеспечивает надежность ООП, хорошую защиту от ошибок и возможность использования одних и тех же объектов различными программами.

Преимущества ООП в полной мере проявляются при разработке достаточно сложных программ. Инкапсуляция придает объектам совершенно особое свойство “самостоятельности”, максимальной независимости от остальных частей программы. Правильно сконструированный объект располагает всеми необходимыми данными и процедурами их обработки, чтобы успешно реализовать требуемые от него действия. Попытки использовать ООП для программирования несложных алгоритмических действий выглядят искусственными нагромождениями ненужных языковых конструкций.

2. Слова или тексты, являющиеся собирательными именами (групповыми именами) предметов, обозначим х, у, …, z. Групповое имя обозначает произвольный предмет, принадлежащий некоторой группе предметов, имеющих собственные имена. Например, текст “житель Москвы” является групповым именем людей, каждый из которых является конкретным предметом и имеет свое собственное имя (для простоты примера мы отвлекаемся от факта наличия жителей Москвы, имеющих одинаковые фамилию, имя и отчество).

Пусть Р(х, у, …, z) означает некоторый текст, содержащий в своем составе групповые имена х, у, …, z и обладающий следующим свойством: если в этом тексте каждое групповое имя всюду, где оно входит, заменить допустимыминдивидуальным (собственным) именем (одним и тем же), то данный текст превратится в символьную часть некоторого высказывания.

Текст Р(х, у, …, z) называется предикатом; входящие в него групповые имена называются предметными переменными; о предметах, соответст­вую­щих групповому имени, являющемуся предметной переменной, говорят, что они принадлежат предметной области данной переменной; собственные имена указанных предметов называют значениями предметной переменной; логические значения получаемых высказываний называются значениями предиката. Количество различных предметных переменных, входящих в состав текста Р(х, у, …, z), называется рангом предиката (иногда – его “местностью” или “арностью”). Например, бывают предикаты первого ранга (одноместные, унарные), второго ранга (двухместные, бинарные), третьего ранга (трехместные, тернарные) и т.д.

Если высказывание является логической константой, то предикат – логической функцией.

3. Команды 32-разрядных процессоров содержат одно- или двухбайтный код инструкции, за ко­торым могут следовать несколько байт, определяющих режим исполнения коман­ды, и операнды. Команды могут использовать до трех операндов (или ни одного). Операнды могут находиться в памяти, регистрах процессора или непосредственно в команде. Для 32-разрядных процессоров разрядность слова (word) по умолчанию может составлять 32 бит. Это распространяется на многие инструкции, включая и строковые. В реальном режиме и режимевиртуального процессора 8086 по умолчанию используется 16-битная адресация и 16-битные операнды-слова. В защищенном режиме режим адресации и разрядность слова по умолчанию оп­ределяются дескриптором кодового сегмента. Перед любой инструкцией может быть использован префикс переключения разрядности адреса или слова.

В системе команд насчитывается несколько сотен инструкций, которые можно группировать по разным признакам. Для удобства здесь все инструк­ции сгруппированы по функциональной общности.

1.Инструкции пересылки данных позволя­ют передавать константы или переменные между регистрами и памятью, а также портами ввода/вывода в различных комбинациях, но в памяти может находиться не более одного операнда. В эту группу отнесены и инструкции преобразования форматов – расширений и перестановки байт. Операции со стеком выполняются словами с разрядностью, определяемой текущим режимом.

2.Инструкции двоичной арифметики выполняют все арифметические действия с байтами, словами и двойными словами, кодирующи­ми знаковые или беззнаковые целые числа.

3.Инструкции десятичной арифметики являются дополнением к предыдущим. Они позволяют оперировать с неупакованными (биты 7–4 равны нулю, биты 3–0 содер­жат десятичную цифру 0–9) или упакованными (биты 7–4 содержат старшую, биты 3–0 – младшую десятичную цифру 0–9) двоично-десятичными числами. Арифметические операции над этими числами требуют применения инструкций коррекции форматов.

4.Инструкции логических операций выполняют все функции булевой алгебры над байтами, словами или двойными словами.

5.Сдвиги и вращения (циклические сдвиги) выполняются над регистром или операндом в памяти. При сдвигах влево и простом сдвиге вправо осво­бождающиеся биты заполняются нулями. При арифметическом сдвиге вправо старший бит (знак) сохраняет свое значение. При циклических сдвигах выталкиваемые биты попадают в осво­бождающиеся позиции.

6.Инструкции обработки бит и байт позволяют проверять и устанавливать значение указанного операнда, а также искать установленный бит. Битовые операции выполняются над 16- или 32-битными словами. Инструкция тестирования может выполняться над байтом, словом или двойным словом.

7.Передача управления осуществляется с помощью инструкций безусловных и условных переходов, вызовов процедур и прерываний (исключений). Безусловный переход (JMP) может быть как внутрисегментным (ближним или коротким), так и межсегментным (дальним). Адрес перехода может непосредственно указываться в команде, а при косвенной адресации он находится в регистре или памяти и может иметь дополнительные слагае­мые. Короткий переход (short) может передавать управление только на адрес на­значения, удаленный от текущего в пределах -128...+127 байт, ближний (near) – в пределах сегмента. При дальнем (far) переходе адрес назначения (непосредствен­ный или косвенный) включает новое значение указателя инструкций и значение (или селектор) сегмента кода, обеспечивая доступ к любой точке памяти (в преде­лах, разрешенных защитой).

Условные переходы в 8086 и 80286 возможны только короткие (8-байтное смеще­ние), процессоры 386+ допускают переход в пределах 16- или 32-байтного смеще­ния, в зависимости от режима адресации.

Инструкция вызова процедуры сохраняет адрес следующей за ней инст­рукции в стеке и передает управление в заданную точку.

8.Строковые операции выполняются с операн­дами в памяти. Операции могут использоваться с префиксами условно­го или безусловного повтора. Строковые инструкции ввода/вывода с префиксами повтора позволяют достигать высоких скоростей обмена с портами при условии полной загрузки процессора.

9.Операции с флагами позволяют изменять значе­ния отдельных флагов, а также сохранять их значение в стеке и восстанавливать сохраненные значения.

10.Инструкции загрузки указателей позволяют за­гружать дальние указатели из памяти в регистр общего назначения и соответствую­щий сегментный регистр.

11.К системным инструкциям относятся инструк­ции управления защитой – загрузки и сохранения регистров дескрипторов и ре­гистра задачи; проверки и выравнивания привилегий; обмена с управляющими, отладочными и модельно-специфическими (включая тестовые) регистрами; уп­равления кэшированием, захвата шины и остановки процессора. Для прикладных программ использование этих инструкций нехарактерно.

4. Для деления ЛКС на группы используются определенные классификационные признаки.

По назначению ЛКС делятся на информационные (информационно-поисковые), управляющие (технологическими, административными, организационными и другими процессами), информационно-расчетные и другие.

По типам используемых в сети ЭВМ их можно разделить на неоднородные, где применяются различные классы (микро-, мини -, большие) и модели (внутри классов) ЭВМ, а также различное абонентское оборудование, и однородные, содержащие одинаковые модели ЭВМ и однотипный состав абонентских средств. По скорости передачи данных в общем канале различают:

- ЛКС с малой пропускной способностью (единицы и десятки мегабит в секунду), в которых в качестве физической передающей среды мспользуется используется витая пара или коаксиальный кабель;

- ЛКС со средней пропускной способностью (десятки мегабит в секунду), в которых используется также коаксиальный кабель или витая пара;

- ЛКС с большой пропускной способностью (сотни мегабит в секунду), где применяются оптоволоконные кабели (световоды).

По топологии, т.е. конфигурации элементов в сети, ЛКС бывают с шинной топологией, кольцевой, звездообразной, смешанной (звездно-кольцевой, сегментированной).

5. void C3dMouseInDev::OnUserEvent(HWND hWnd, UINT uiMsg,

WPARAM wParam,

LPARAM lParam)

{

switch (uiMsg) {

case WM_LBUTTONDOWN:

::SetCapture(hWnd);

m_bCaptured = TRUE;

break;

case WM_LBUTTONUP:

if (m_bCaptured) {

::ReleaseCapture();

m_bCaptured = FALSE;

}

break;

Билет №12

1. Динамически распределяемая область памяти – это вся память, которую операционная система делает доступной для программы и которая не используется ее кодом, сегментом данных и стеком. Объемом распреде­ляемой динамической памяти можно управлять с помощью директивы компилятора $M.

Известно, что все переменные, встречающиеся в программе, должны быть описаны. Перед началом выполнения программы каждой переменной для размещения ее значений выделяется место в сегменте данных. Размер выделяемого места зависит от типа переменной. Например, для переменной типа Integer выделяется 2 байта. Обращение в программе к объекту, размещенному в некотором месте памяти, осуществляется с помощью имени переменной. Соответствие между переменной и сопоставленным ей местом в памяти сохраняется для описанных в программе переменных на всем протяжении выполнения программы. В Паскале имеются средства, позволяю­щие заниматься отведением и освобождением памяти для размещения объектов того или иного типа непосредственно по ходу выполнения програм­мы. Память в этом случае отводится в динамической области. Данные, размер которых задается непосредственно во время выполнения программы, называются динамическими. Для объявления динамических данных в Паскале используется ссылочный тип, называемый еще типом-указателем. С помощью ссылочного типа можно объявлять переменные, значением которых будет адрес ячейки памяти.

Соседние файлы в предмете Информатика