1. Дайте определение следующим терминам: «Учетная запись», «Входное имя»
2. Перечислите составляющие пространства имён
3. Объясните алгоритм работы компоновщика
4. Изложите основные идеи модели безопасности, принятой в системах Windows
1 Дайте определение следующим терминам: «Учетная запись», «Входное имя».
Учётная запись – хранимая в компьютерной системе совокупность данных о пользователе, необходимая для его опознавания (аутентификации) и предоставления доступа к его личным данным и настройкам
Для использования учётной записи (другими словами, для входа в систему под чьим-то именем) обычно требуется ввод имени и пароля. Также может требоваться другая дополнительная информация.
Пользователи интернета могут воспринимать учётную запись как личную страничку, профиль, кабинет, место хранения личных и других сведений, которые пользователь сообщает о себе, на определённом интернет-ресурсе.
Учётная запись, как правило, содержит сведения, необходимые для опознания пользователя при подключении к системе, сведения для авторизации и учёта. Это идентификатор пользователя (login) и его пароль. Пароль или его аналог, как правило, хранится в зашифрованном или хэшированном виде для обеспечения его безопасности.
Для аутентификации могут также использоваться специальные файлы-ключи (которые можно сохранять на разных носителях информации) либо аппаратные средства (вырабатывающие одноразовые ключи, считывающие биометрические характеристики и т. п.), а также одноразовые пароли.
Для повышения надёжности, наряду с ключом или паролем могут быть предусмотрены иные средства сверки – например, особый потайной вопрос (или несколько вопросов) такого содержания, что ответ может быть известен только пользователю. Такие вопросы и ответы также хранятся в учётной записи.
Учётная запись может содержать также дополнительные опросные данные о пользователе: имя, фамилию, отчество, псевдоним, пол, народность, расовую принадлежность, вероисповедание, группу крови, резус-фактор, возраст, дату рождения, адрес e-mail, домашний адрес, рабочий адрес, нетмейловый адрес, номер домашнего телефона, номер рабочего телефона, номер сотового телефона, номер ICQ, идентификатор Skype, ник в IRC, другие контактные данные систем мгновенного обмена сообщениями, адрес домашней страницы и/или блога в интранете, сведения об увлечениях, о круге интересов, о семье, о перенесённых болезнях, о политических предпочтениях, о партийной принадлежности, о культурных предпочтениях, об умении общаться на иностранных языках и т. п.
2. Перечислите составляющие пространства имён.
Если не принимать во внимание программирование на машинном языке (эта технология практически не используется уже очень давно), то можно сказать, что программист обращается к памяти с помощью некоторого набора логических имен, которые чаще всего являются символьными, а не числовыми и для которого отсутствует отношение порядка. Другими словами, в общем случае множество переменных не упорядочено, хотя отдельные переменные и могут иметь частичную упорядоченность (например, элементы массива). Имена переменных и входных точек программных модулей составляют пространство имен. С другой стороны, существует понятие физической оперативной памяти, собственно с которой и работает процессор, извлекая из неё команды и данные и помещая в неё результаты вычислений.
Физическая память представляет собой упорядоченное множество ячеек, и все они пронумерованы, то есть к каждой из них можно обратиться, указав её порядковый номер (адрес). Количество ячеек физической памяти ограничено и фиксировано. Системное программное обеспечение должно связать каждое указанное пользователем имя с физической ячейкой памяти, то есть осуществить отображение пространства имён на физическую память компьютера. В общем случае это отображение осуществляется в два этапа, как показано на рисунке 1: сначала системой программирования, а затем операционной системой (с помощью специальных программных модулей управления памятью и использования соответствующих аппаратных средств вычислительной системы). Между этими этапами обращения к памяти имеют форму виртуального или логического адреса. При этом можно сказать, что множество всех допустимых значений виртуального адреса для некоторой программы определяет её виртуальное адресное пространство или виртуальную память. Виртуальное адресное пространство программы прежде всего зависит от архитектуры процессора и от системы программирования и практически не зависит от объёма реальной физической памяти, установленной в компьютер. Можно ещё сказать, что адреса команд и переменных в готовой машинной программе, подготовленной к выполнению системой программирования, как раз и являются виртуальными адресами.
3. Объясните алгоритм работы компоновщика
В большинстве современных языков программирования программа состоит из отдельных слабо связанных модулей. Как правило, каждому такому модулю соответствует отдельный файл исходного текста. Эти файлы независимо обрабатываются языковым процессором (компилятором), и для каждого из них генерируется отдельный файл, называемый объектным модулем. Затем запускается программа, называемая редактором связей, компоновщиком или линкером (linker – тот, кто связывает), которая формирует из заданных объектных модулей цельную программу.
Компоновщик (или редактор связей) предназначен для связывания между собой объектных файлов, порождаемых компилятором, а также файлов библиотек, входящих в состав системы программирования.
Объектный файл (или набор объектных файлов) не может быть исполнен до тех пор, пока все модули и секции не будут в нем увязаны между собой. Это и делает редактор связей (компоновщик). Результатом его работы является единый файл (часто называемый «исполняемым файлом»), который содержит весь текст результирующей программы на языке машинных кодов. Компоновщик может порождать сообщение об ошибке, если при попытке собрать объектные файлы в единое целое он не смог обнаружить какой-либо необходимой составляющей.
Функция компоновщика достаточно проста. Он начинает свою работу с того, что выбирает из первого объектного модуля программную секцию и присваивает ей начальный адрес. Программные секции остальных объектных модулей получают адреса относительно начального адреса в порядке следования. При этом может выполняться также функция выравнивания начальных адресов программных секций. Одновременно с объединением текстов программных секций объединяются секции данных, таблицы идентификаторов и внешних имен. Разрешаются межсекционные ссылки.
Процедура разрешения ссылок сводится к вычислению значений адресных констант процедур, функций и переменных с учетом перемещений секций относительно начала собираемого программного модуля. Если при этом обнаруживаются ссылки к внешним переменным, отсутствующим в списке объектных модулей, редактор связей организует их поиск в библиотеках, доступных в системе программирования. Если же и в библиотеке необходимую составляющую найти не удается, формируется сообщение об ошибке.
Обычно компоновщик формирует простейший программный модуль, создаваемый как единое целое. Однако в более сложных случаях компоновщик может создавать и другие модули: программные модули с оверлейной структурой, объектные модули библиотек и модули динамически подключаемых библиотек (работа с оверлейными и динамически подключаемыми модулями в ОС описана в первой части данного пособия).
4. Изложите основные идеи модели безопасности, принятой в системах Windows.
При разработке всех операционных систем семейства Windows NT/2000/XP компания Microsoft уделяла самое пристальное внимание обеспечению информационной безопасности. Как следствие, эти системы предоставляют надежные механизмы защиты, которые просты в использовании и легки в управлении.
В отличие от операционных систем семейства Windows 9x, как, впрочем, и от системы OS/2, в разработке первой версии которой Microsoft тоже принимала участие, системы класса Windows NT имеют совершенно иную модель безопасности. Средства защиты изначально глубоко интегрированы в операционную систему. Подсистема безопасности осуществляет контроль за тем, кто и какие действия совершает в процессе работы, к каким объектам пытается получить доступ. Все действия пользователя, в том числе и обращения ко всем объектам, как нетрудно догадаться, на самом деле могут быть совершены только через соответствующие запросы к операционной системе. Операционная система использует этот факт и имеет все необходимые механизмы для тотального контроля всех запросов к ней. Запрашиваемые у операционной системы операции и обращения к конкретным объектам разрешаются, только если у пользователя для этого имеются необходимые права и/или разрешения. При этом обязательно следует различать эти понятия.
Права (rights) определяют уровень полномочий при работе в системе. Например, если нет права форматировать диск, то выполнить это действие пользователь не сможет. Кстати, конкретно таким правом при работе с Windows NT/2000/XP обладают только члены группы администраторов. Можно говорить и о праве изменения настроек дисплея, и о праве работать на компьютере. Очевидно, что перечень прав является достаточно большим. Права могут быть изменены посредством применения соответствующих политик.