Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методы ускорения работы со страницами




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

 

2. Опережающая подкачка страниц, заключается в том, что перед вызовом процессов загружается не одна страница, а группа страниц.

 

3. Опережающая выгрузка. Периодически все страницы, в которых было внесено изменение - записываются на диск. Применяются в системах, где часто бывает простой в процессах.

 

Проблема пробуксовки программы

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

 

Понятие распределение памяти

1. Локальное.

2. Глобальное.

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

Глобальное – процессы держат свои страницы в общей области

F

А

В

n

 

 

n- количество страничных блоков

F-частота страниц прерывания

A – Верхний порог частоты страничных прерываний;

B – Нижний порог.

 

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

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

P – Размер страницы.

S – Количество страниц.

r – Общие расходы.

q – количество байт, которое потребляет таблица страниц.

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

 

Внутренняя фрагментация страниц памяти - потери дискретностью размера страницы.

В среднем от внутренней фрагментации теряется половинный объем страниц на процесс.

При транслировании программы до уровня ОС или машинного языка транслятор создает несколько таблиц:

1. Таблица с исходным текстом.

2. Таблица имен и атрибут переменных.

3. Таблица констант.

4. Таблица синтаксического анализа.

5. Внутренний стек компилятора.

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

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

Поэтому для ОС была предложена двухмерная(блочная а так же сегментная) модель памяти.

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

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

Сейчас сегменты располагаются в ОП неразрывно друг от друга могут иметь различный размер они подвержены внешней фрагментации.

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

Для сокращения в случае дефрагментации используются 2 подхода:

1. Алгоритм наименьшей дыры.

2. Алгоритм первого соответствия.

В.1. ОС в памяти ищет наименьшую подходящую дыру для сегмента.

В.2. Отправляет в первую попавшуюся (подходящую по размеру).

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

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

Учитывая, что дробление во 2-ом алгоритме меньше, плановую внешнюю дефрагментацию можно отменить.

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

Детрансляторы – программа, преобразующая некоторую программу на уровень выше.

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

Язык, в котором происходит трансляция и детрансляция называется объектный.

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

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

Компилятор - программа, объединяющая в себе каскад трансляторов линкеров, которая выполняет перевод исходного кода написанного на языке прикладного уровня до уровня ОС.

Либо в случаях java-технологий до уровня байт-кода. При этом байт-код является машинным кодом. Виртуального java-процесса.

Ассемблер – транслятор, исходным кодом которого является программа на языке ассемблерного уровня, а объект – программа уровня ОС или машинного.

Язык ассемблерного уровня называется – языком ассемблера.

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

Команда на языке ассемблера представляет собой буквенно-символьные обозначения команд на машинном языке и систем вызовов.

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

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

Команды на языке ассемблера могут содержать от 1-го до 3-х аргументов. Туда относятся:

- 1-ый операнд (часто с местом хранения результата).

- 2-ой операнд (для пиков возможно с местом хранения результата)

- Управляющий параметр(только для пиков)

Способ записи команд на ассемблере называется нотацией Бекуса, которая предполагает, что команды имеют определенное условное сокращение. Регистры на языке ассемблера имеют условное символьное название (например, A,B,C,D). У пиков вместо A – W.

Псевдокоманды – операторы, обращенные к языку ассемблера.

Метки – средства языка, позволяющие реализовать команды условного перехода.

Свои численные значения метки, в отличае от констант, получают на этапе трансляции.

Доводка программы предполагает устранение ошибок и некорректных мест работы готового продукта и переписывание наиболее часто использующихся участков кода на языке ассемблера.

 

Программные продукты делятся на:

- -версию, которая включает принципиальное решение, но не обязательно работает.

- -версию, которая работает, но с ошибками.

- -версию, которая представляет собой исправление ошибок -версии.

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

 

Программные обеспечения классифицируются также по номеру релизов:

1. Первый

2. Второй

3. Иногда третий.

 

50 % времени работы программы уходит на выполнение 1% ее кода, 90% времени работы программы уходит на выполнение 10% ее кода, поэтому переписывание 1% программного кода на ассемблере способно дать результат.

Программирование на ассемблере дороже, чем на других языках.

 




Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 284; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.