Алгоритм 2


Скачать 449.39 Kb.
НазваниеАлгоритм 2
страница4/5
Дата публикации06.05.2013
Размер449.39 Kb.
ТипДокументы
userdocs.ru > Информатика > Документы
1   2   3   4   5

Высокоуровневое управление каналами в POSIX

#include

FILE * popen(const char *pcszCommand, const char *pcszType);

//характеризуется не целочисленными директивами, а указателями на строку FILE

//Путь к файлу, строка, соотв. режиму.

int pclose(FILE *stream); //закрытие ранее открытого канала

FILE * fdopen(int nFD, const char *pcszMode); //Низкоур. дескр. -> высокоур.

size_t fread(void *pvBuf, size_t uSize, size_t uCount, FILE *stream); //Чтение и запись \/ массивов

size_t fwrite(const void *pcvBuf, size_t uSize, size_t uCount, FILE *stream);

int feof(FILE *stream); //Проверка на конец

int fclose(FILE *stream); //Закрытие файла

Реализация popen()

Родительский процесс

1 pipe(anFD) //Создается канал

2 fork() //Ответвл. доч. процесса

3 если pcszType "r", то //если режим откр. файла соотв. r, то закр. часть, предн. для записи и наоборот

close(anFD[1])

иначе // pcszType "w"

close(anFD[0])

4 если pcszType "r", то //Возвр. ту часть, отв. за чтение

вернуть fdopen(anFD[0], pcszType)

иначе // pcszType "w"

вернуть fdopen(anFD[1], pcszType)

Дочерний процесс

1 если pcszType "r", то //Если r, то вывод в консоль, иначе забрать из консоли

dup2(anFD[1], 1)

иначе // pcszType "w"

dup2(anFD[0], 0)

2 close(anFD[i]) (2 раза)

3 execve(pcszCommand, argv, envp)

Реализация pclose()

Родительский процесс

1 wait4() для дочернего процесса.

Размещается код из исполняемого файла. b – двоичный, t- текстовый

Блокировка род. процесса, пока не завершит работу дочерний
Именованные каналы POSIX

Можно получать доступ по имени

POSIX mkfifo()

#include

#include

int mkfifo(const char *pcszPathName, mode_t ulMode); //Путь, режим
Неименованные каналы Windows API

BOOL WINAPI CreatePipe(

__out PHANDLE phReadPipe, //Дескр на чтение

__out PHANDLE phWritePipe, // на запись

__in_opt LPSECURITY_ATTRIBUTES lpPipeAttributes, //Аттр безопасности

__in DWORD dwSize //Размер буфера );
Управление памятью

Задачи:

Версии ядра

- Перемещаемость кода и данных. (неск раз запущенная программа может попасть в разл области)

- Защита памяти. (плохо раб. программы не должны влиять на другие или на ОС)

- Совместное использование памяти. (Явное разделение общ. разделов)

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

- Двухуровневая память. (быстрая оперативная и медленная на HDD, желательно, чтобы ОС предоставляло эту возм-сть)

Фиксированное распределение памяти



















Резерв

Резерв


Появилась в OS360

Просто одинаково делится на области. Пр-ма может работать в любой области без изм-ий. Не может занимать более одной области.

Варианты OS/360

Задачи

3 редакции

Single Sequential Scheduler (SSS). – 1 зад. последовательная

Primary Control Program (PCP). – самая простая версия ОС

Multiple Sequential Scheduler (MSS). – многозад.

Multiprogramming with a Fixed number of Tasks (MFT). - фикс. кол-во задач.

Multiple Priority Scheduler (MPS). – планировщик с разл. приоритетом.

Multiprogramming with a Variable number of Tasks (MVT). – переменные области

Проблема OS/360 – фрагментация памяти
^ Распределение памяти

Реальный режим



адресация памяти в реальном режиме процессора 80x86

MS-DOS – резидентные программы

В программе – модуль упр-я памятью

Лог. адрес – исп. пр-мой, физический - ?

В x86 адрес 2-компонентный

Адрес = сегмент x 16 + смещение
Короткие и длинные адреса

Пример (Assembler 8086)

mov bx, 01h

mov ax, [bx] ; короткая адресация: ds:[bx]

mov es, ax

mov cx, es:[bx] ; длинная адресация

Пример (Borland C++ 3.1 и т. д.)

int n;

int *far lpn = &n;

int *near npn = &n; //near – ограниченный сегмент 64 кб

Одному и тому же физ. адресу могут соотв. разные логические, т.к. разные комбинации сегмен-смещение.

Режимы адресации, начиная с 80286

Режимы

- реальный;

- защищённый.

Назначение реального режима

- Совместимость с предыдущим ПО;

- Начальная загрузка системы.

Способы разбиения памяти

Определения

Сегмент: (segment)—область памяти заданного размера.

Страница: (page)—диапазон линейных адресов (размер от архитектуры) и данные по ним. (в смежном адр. пространстве)

Страничный кадр: (page frame, физическая страница)—единица разбиения физической памяти, принадл. 1 странице.

Селектор

формат селектора в защищённом режиме процессора 80286



RPL(0..3) – запрашиваемый уровень привилегий (0 – режим ядра)

TI (0..1) – индикатор табл. 0 – глобальный табл. дескриптор, 1 – локальный

Индекс 0..8191

Сегментные регистры

сегментные регистры процессоров архитектуры X86

Обозн. Название Примечание

CS Code Segment (CPL—Current Privilege Level) - код

DS Data Segment - данных

SS Stack Segment - стека

ES Extra Segment – расшир-й регистр

FS (сегмент общего назначения)

GS (сегмент общего назначения)

GDTR Global Descriptor Table Register (адрес (24 бит) и размер (8 бит))

LDTR Local Descriptor Table Register (адрес (24 бит) и размер (8 бит))

трансляция адресов в защищённом режиме процессора 80286

логический адрес -> блок сегментации -> физический адрес

Блок сегментации избавляет адрес от компоненты селектора



На табл. дескр-ра указ. CDTR или LDTR, какая из них – флаг TI

Поля дескриптора сегмента (8 байт)

Поле - Бит Название (Примечание)

Base - 32 (линейный адрес начала)

G - 1 Granularity ( 0 -> размер в байтах, иначе в 4 096-байтных блоках. Опр-ет размер стека)

Limit - 20 (размер (1 байт . . . 1 Мбайт или 4 Кбайт . . . 4 Гбайт. В размере сегмента)

S - 1 System (0 -> хранит системные данные (LDT, . . . ) иначе обычный сегмент кода/данных)

DPL - 2 Descriptor Privilege Level (Уровень привилегий)

P - 1 Присутствие (1 -> сегмент присутствует (в Linux всегда))

Type - 4 (тип сегмента)

Типы сегментов

Тип / Таблица/ S / Хранение

кода/ GDT, LDT / 1 /сегмент кода

данных / GDT, LDT / 1 / сегмент данных или стека

состояния задачи (TSS) / GDT / 0 / сегмент с проц. регистрами.

локальной таблицы дескрипторов / GDT / 0 / сегмент с LDT.

Работа блока сегментации

Алгоритм

1 TI = 0 => базовый линейный адрес из GDTR, иначе—из LDTR. (проверка текущего уровня привелегий)

2 адрес дескриптора сегмента = базовый линейный адрес + 8 x индекс;

3 max {CPL (текущий); RPL (запрошенный)} > DPL (значение в дескрипторе) => General Protection Fault (GP);

4 Из дескриптора сегмента выбирается поле «базовый адрес» (Base);

5 линейный адрес = базовый адрес + смещение. (физ. адрес)

1-3 только когда меняются соотв. ? сегменты

Использование сегментации в ОС

Linux

- Для каждого процессора существует GDT, содержащая 4 дескриптора сегментов (Base = 0, G = 1, Limit = 0xFFFFF = 220 1):

- Для всех процессов ядра:

- код ядра;

- данные ядра;

- Для всех процессов пользователя:

- код пользователя;

- данные пользователя.

- + некоторые специфические сегменты.

- Для каждого процесса создаётся LDT по умолчанию ядром. Некоторые приложения обращаются к нему (Wine, . . . )

Windows 3.1

- 1 GDT, 1 LDT для системной виртуальной машины и по 1 LDT для каждой ВМ для DOS-приложения (режим V86). (1 LDT на всю вирт. машину, т.е. адр. пр-во, у всех приложений одна память, прил-я могли обмениваться данными и портить данные друг друга)

- Сегменты кода, данных приложений могут помечаться как фикс., перемещаемые, перемещаемые + удаляемые, …

Windows NT

- Модель flat: 1 сегмент для кода и данных для приложения, сегментные регистры не должны меняться им.
^ Трансляция адресов (80386)

логический адрес -> блок сегментации -> линейный адрес -> блок управления страницами -> физический адрес



Таблица адресов для каждой пр-мы – 4 Мб. Если постранично – пр-ме не нужны все табл. страниц, для них можно не выд. память.

Поля таблицы страниц (4 байт)

Поле / Бит / Примечание

Present (флаг) / 1 / флаг присутствия (размещена данная стр. или нет (апп. прерывание в этом случае))

адрес / 20 / 20 старших бит.

Accessed / 1 / устанавливается, когда блок управления адресует соответствующий кадр (каждый раз при обращ-ии к памяти) Если флаг доступа всё время 0, в случае перегрузки эти страницы – первые кандидаты на выгрузку в файл подкачки.

Dirty / 1 / (для таблицы страниц) устанавливается, когда выполняется запись в кадр

Read/Write / 1 / права доступа на запись. (1 – rw, 0 – read only)

User/Supervisor / 1 / уровень привилегий ( = 3 или < 3). (1 – могут все, 0 – только привелег.)

Page Size / 1 / (для каталога страниц) = 1 => размер страницы = 4 Мбайт

Работа блока управления страницами

Алгоритм

1 Адрес элемента Каталога Таблицы Страниц = *cr3 + 4 x каталог (старше 10 бит)

2 Адрес Таблицы Страниц—из поля «адрес» элемента Каталога Таблиц

3 Адрес элемента Таблицы Страниц = адрес Таблицы Страниц x 4 096 + 4 x таблица;

4 Адрес страницы—из поля «адрес» дескриптора Таблицы Страниц

5 Физический адрес = адрес страницы x 4 096 + смещение.

^ Вместимость Каталога Таблиц/Таблицы Страниц

До 1 024 элементов.
Буфер ассоциативной трансляции

Буфер ассоциативной трансляции: (translation lookaside buffer, TLB)—кэш, отображающий (недавно вычисленные) линейные адреса в физические.

Этот кэш сущ-ет в каждом процессорном ядре, не треб. согласования с разными ядрами

Расширение размера страниц

формат смещения в режиме адресации расширенных страниц процессора Pentium



Режим расширения размера страниц: (Page size extension, PSE)—режим, включаемый полем PSE регистра CR4 (поле «Page size» элемента таблицы = 1).

2 и 3е поля объединяются в целях ускорения обращения в случаях больших размеров памяти. Вкл. спец. битом RSE. Существует начиная с пентиумов.

Механизм расширения физических адресов

формат смещения в режиме расширения физических адресов процессора Pentium Pro



Механизм расширения физических адресов: (Physical Address Extension, PAE)—режим, включаемый полем PAE регистра CR4. Отличия:

- поле «адрес» элемента таблицы увеличивается с 32 до 36 бит => элемент таблицы увеличивается с 4 до 8 байт;

- количество элементов таблиц уменьшается с 1 024 до 512.

Расширение размера страниц

формат смещения в режиме long mode архитектуры AMD64 (x86-64)



В 64-разр. 4 ур-ня вложенности. Всего 48 бит. 256 Тбайт можно адресовать. (Если бы исп. 64, то 15 Эбайт). Схема адресации ост. такой же. Исчезают такие рудименты 32-бит, как сегмент.

Использование страничной адресации в Windows 3.1

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

Компоненты диспетчера памяти

Функциональность ntoskrnl.exe (ядро памяти)

- Сервисы управления виртуальной памятью (приложения, драйверы устройств режима ядра). (то, что доступно обычным приложениям)

- Обработчики ловушек трансляции недействительных адресов и нарушения прав доступа.

- Системные потоки режима ядра. (зан. обработкой страниц)

Системные потоки диспетчера памяти

Потоки режима ядра

- Поток обнуления страниц (zero page thread). (Низший приоритет, заполняет 0 своб. страницы)

- Диспетчер рабочих наборов (working set manager). (обработка, раз в 1 сек или когда не хватает)

- Поток загрузки и выгрузки стеков (process/stack swapper). (стеки вызовов процессов)

- Подсистема записи модифицированных страниц (modified page writer). (если сущ-ет страница, имеющая образ в файле и меняется, то этот поток записывает в файл)

- Подсистема записи спроецированных страниц (mapped page writer). (то же для страниц, отобр. польз. файл в память).

- Поток сегмента разыменования (dereference segment thread). (изм. размеров кэша и файла подкачки?)
1   2   3   4   5

Похожие:

Алгоритм 2 iconАлгоритм
Ш 55 Разгром Японии и самурайская угроза. — М.: Изд-во Алгоритм; Изд-во Эксмо, 2005. — 512 с, ил
Алгоритм 2 iconРазрешение записи
Для уменьшения объема хранимой видеоинформации в видеорегистраторах применяются различные алгоритмы ее компрессии. В сетевых видеорегистраторах...
Алгоритм 2 iconАннотация Слово «алгоритм»
Слово «алгоритм» не случайно введено в название книги: мне представляется, что есть возможность «разложить по полочкам» самые сложные...
Алгоритм 2 iconСтатья «Алгоритм решения изобретательских задач» в Википедии Это...
Алгоритм решения изобретательских задач[1][2][3][4][5][6][7][8][9][10] раздел теории решения изобретательских задач (триз), разработаной...
Алгоритм 2 iconПрограмма упорядоченное множество ко­манд, реализу­ющих алгоритм решения задачи
Алгоритм упорядоченное множе­ство фор­ма­ль­ных предписаний, выпол­нение которых приводит к решению задачи. Команда элементарная...
Алгоритм 2 iconАлгоритм работы системы

Алгоритм 2 icon6. задача о рюкзаке
Циклический алгоритм целочисленного программирования
Алгоритм 2 iconУкрупненный алгоритм программы для исследования случайных величин приведен на рисунке 12. 1
Укрупненный алгоритм программы для исследования случайных величин приведен на рисунке 12
Алгоритм 2 iconЗаконодательное обоснование
Алгоритм действий граждан в случае обнаружения несанкционированных раскопок – с. 6
Алгоритм 2 iconПризрак толпы / Карл Ясперс, Жан Бодрийар. М.: Алгоритм, 2007. 272 с. Философский
Призрак толпы / Карл Ясперс, Жан Бодрийар. — М.: Алгоритм, 2007. — 272 с. — Философский
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2020
контакты
userdocs.ru
Главная страница