Шпаргалка по "Программированию и компьютерам"

Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка

Краткое описание

Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"

Содержимое работы - 12 файлов

1 алгоритмич языки и программирование.doc

— 79.00 Кб (Открыть файл, Скачать файл)

2 Технология программирования.doc

— 81.00 Кб (Открыть файл, Скачать файл)

3 базы данных. управл бд ..doc

— 227.00 Кб (Открыть файл, Скачать файл)

4 информационные технологии.doc

— 131.50 Кб (Открыть файл, Скачать файл)

5 проектирование АСОИУ.doc

— 861.00 Кб (Открыть файл, Скачать файл)

6 Дискретная математика.doc

— 91.50 Кб (Открыть файл, Скачать файл)

6 Математическая логика и теория алгоритмов.doc

— 92.50 Кб (Открыть файл, Скачать файл)

7 МО+ТПР.doc

— 177.50 Кб (Открыть файл, Скачать файл)

8 системное программное обеспечение. операц системы.doc

— 140.00 Кб (Скачать файл)

 Программным каналом могут пользоваться только создавший его процесс и его потомки (необязательно прямые).

 Для создания программного канала существует специальный  системный вызов pipe (исторически  более ранний). Системный вызов pipe имеет следующий синтаксис:

 pipe(fdptr);

 где fdptr - это указатель на массив из двух целых чисел, в который после создания неименованного программного канала будут помещены дескрипторы, предназначенные для чтения из программного канала (с помощью системного вызова read) и записи в программный канал (с помощью системного вызова write). Дескрипторы программного канала - это обычные дескрипторы файлов, т.е. такому программному каналу соответствуют два элемента таблицы открытых файлов процесса. Поэтому при последующем использовании системных вызовов read и write процесс совершенно не обязан отличать случай использования программных каналов от случая использования обычных файлов (собственно, на этом и основана идея перенаправления ввода/вывода и организации конвейеров).

 2) FIFO-каналы в отличие от программных каналов – именованные каналы (FIFO-каналы) имеют собственное имя, которое позволяет обратиться к ним независимым (произвольным) процессам, а не только к родственным.

 Для создания FIFO используется системный вызов mKnod(). Может содержать следующие параметры:

 Int mKnod( char * pathname, - имя канала

 Int mode, – права доступа и владения

 Int dev) – при создании FIFO это поле игнорируется.

 Канал может  быть создан прямо из оболочки Shell с  использованием соответствующей команды mknod MYFIFO p.

 3) Сообщения. Очереди сообщений представляют собой связный список в адресном пространстве ядра. Сообщения могут посылаться в очередь по порядку и доставаться из очереди несколькими разными путями.

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

 - Тип сообщения;

 - Длина  данных сообщения;

 - Непосредственно  данные.

 Очередь сообщения хранится в виде однонаправленного  стека. Для создания новой очереди  используется команда msgget().

 4) Одним  из первых механизмов, предложенных  для синхронизации поведения  процессов, стали семафоры, концепцию которых описал Дейкстра (Dijkstra) в 1965 году.

 Семафор представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P (от датского слова proberen — проверять) и V (от verhogen — увеличивать). Классическое определение этих операций выглядит следующим образом:

 P(S): пока S == 0 процесс блокируется; 

 S = S –  1;

 V(S): S = S + 1;

 Эта запись означает следующее: при выполнении операции P над семафором S сначала  проверяется его значение. Если оно  больше 0, то из S вычитается 1. Если оно  меньше или равно 0, то процесс блокируется до тех пор, пока S не станет больше 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1.

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

 

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

 Для создания нового программного гнезда используется функция socket:

 sd = socket(domain, type, protocol);

 где значение параметра domain определяет домен данного  гнезда, параметр type указывает тип создаваемого программного гнезда (с виртуальным соединением или датаграммное), а значение параметра protocol определяет желаемый сетевой протокол.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 4. Управление памятью в ОС, основные механизмы распределения памяти. Методы выделения дискового пространства.

 

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

 Задача  ОС – связать логическое имя задаваемое пользователем программе с конкретной физической ячейкой. Этот процесс выполняется в два этапа:

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

 Термин  виртуальная память относится к тем ОС, которые поддерживают виртуальную адресацию. Обычно объем виртуальной памяти либо равен, либо больше реального адресного пространства.

 Рассмотри различные способы распределения памяти:

 1) Непрерывное  распределение и распределение  с перекрытием. Непрерывное распределение  предполагает разбиение памяти  на следующие фрагменты:

 - область,  занимаемая самой операционной  системой;

 - область  занятая выполняемой задачей;

 - свободная  область.

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

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

 2) Сегментный  способ.

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

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

 3) Сегментно-страничный  способ.

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

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

 Поскольку приходиться затрачивать еще больше времени на вычисления адреса сегмента, страницы, смещения, то для ускорения используется «кэширование», которое работает по ассоциативному признаку. Принцип действия ассоциативного устройства предполагает, что каждой ячейке памяти этого устройства ставится в соответствие спецструктура «ТЭГ», которая позволяет однозначно идентифицировать ячейку.

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

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

 Выделение непрерывной последовательностью  блоков

 Простейший  способ - хранить каждый файл, как непрерывную последовательность  блоков диска. При непрерывном расположении файл характеризуется адресом и длиной (в блоках). Файл,  стартующий с блока b, занимает затем блоки b+1, b+2, ... b+n-1.

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

 Непрерывное выделение используется в ОС IBM/CMS, в ОС RSX-11 (для выполняемых файлов) и в ряде других.

 Основная  проблема, вследствие чего этот способ мало распространен  - трудно найти  место для нового файла. В процессе эксплуатации  диск представляет собой  некоторую совокупность свободных и занятых фрагментов. Проблема непрерывного расположения может рассматриваться как частный случай более общей проблемы выделения n блоков из списка свободных дыр.  Наиболее  распространенные стратегии решения этой проблемы - first fit, best fit и worst fit (ср. с проблемой выделения памяти). Таким образом,  метод страдает от внешней фрагментации, в зависимости от размера диска и среднего размера файла,  в большей или меньшей степени.

 Кроме того, непрерывное распределение внешней  памяти не применимо до тех пор, пока не известен максимальный  размер файла.  Иногда размер выходного файла оценить легко (при копировании). Чаще, однако, это трудно сделать. Если места не хватило, то пользовательская программа может быть приостановлена, предполагая выделение дополнительного места для файла при последующем рестарте. Некоторые ОС используют модифицированный вариант непрерывного выделения основные блоки файла + резервные блоки. Однако с выделением блоков из резерва возникают те же проблемы,  так как возникает задача выделения непрерывной последовательности блоков диска теперь уже из совокупности резервных блоков.

 Связный список

 Метод  распределения блоков в виде связного списка решает основную проблему непрерывного выделения, то есть устраняет внешнюю  фрагментацию.  Каждый файл - связный список блоков диска. Запись в директории содержит указатель на первый и последний блоки файла. Каждый блок содержит указатель на следующий блок.

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

 Связное выделение имеет, однако, несколько  существенных недостатков.

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

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

9 методы и средства защиты информации.doc

— 216.00 Кб (Скачать файл)

Практика МО+ТПР.doc

— 307.50 Кб (Открыть файл, Скачать файл)

Практика МС+СИИ.doc

— 205.00 Кб (Открыть файл, Скачать файл)

Информация о работе Шпаргалка по "Программированию и компьютерам"