Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Управление на паметта вWin16


Информационни технологии | 2009-12-04 | 71 сваляния

. 27 Управление на паметта вWin16. Сегментна организация. Съображения свързани с моделите памет. Преместваемост на кода в среда Winows-реализация. Пролог на EXE. формат за Windows. Сравнение с пролог под Dos. Модификация в пролога за различните типове функции. Управление на паметта. Принципи.


  1. Когато имаме много instance на едно приложение всички използват общ код и ресурси, само данните са различни.

  2. Елементите в паметта са преместваеми

  3. Сегментите както и ресурсите най-често се зареждат при повикване.

  4. Работи механизма за отстраняване на блоковете от паметта.


Сегментна организация на Windows приложен


В рамките на един сегмент указателите са near, а в различните сегменти са far (далечни). Ако работим с указатели трябва сегмента да го фиксираме и след като свършим работа да го освободим.

Приложенията, като са сегментно организирани имат поне следните сегменти:

- един кодов и един даннов(поне)

- поне един служебен сегмент с някакви служебни таблици този сегмент е общ за всички копия

- по един за всеки ресурс


Имаме 5 модела памет: small, medium, compact,large, huge

Small с 1 кодов и 1 даннов сегмент- модел за малки програми

Medium бързи програми с много кодови и един даннов сегмент,работи се с близки указатели към данни.

Compact 1 кодов и много даннови сегменти, но той не е много добър

Large модел с много кодови и с много даннови сегменти

Huge - много кодови и даннови сегменти, но работи с huge указтели. Това са далечни указатели след нормализация.

  1. Ако използваме обем неинициализирани данни, добре е те да са заделят динамично от глобалния Help.

  2. Ако програмата се нуждае от голям брой инициализирани данни нищо не пречи да ги заделим като ресурс.


Препоръчва се small и medium модела за 16 битова среда. Да се използват файл-указатели към данни. Да не се използват далечни указатели към функции, освен такива, които Windows си задава и тези , които се съставят в Windows програма.


Dos програмите съдържат в началото си код от вида:

mov ax, DGROUP

mov ds, ax


Освен това компилатора вмъква пролог и епилог части:

push bp

mov bp, sp

sub sp,x //име за локални променливи


Прологът и епилогът на всяка Windows far функция:

push ds //дата сегмента е единствения който сочи данните

pop ax

nop //празна операция

inc bp //basepointer

push bp

mov bp, sp

push ds

mov ds, ax

sub sp, x


Всяка far функция в паметта има един от следните видове пролози:

  1. mov ax, ds

nop

За ф-ии викани от същата програма, но не от Windows

  1. nop

nop

nop

За експлоатирани функции, които ще се викат само от Windows.

За пролога:

Когато линкера направи exe за всяка ф-ция стартовата точка се определя като преместваема. За всяка такава точка попълва служебна таблица, няколко байта служебна информация, която се запазва с exe-то. Когато стартираме exe-то за изпълнението тази служебна информация се прочита и се създава шлюз на зареждане за всяка входна точка. Ако функцията е качена или не в паметта , а в този шлюз и на зареждане са намира, винаги има актуален адрес на функцията в паметта. Windows сам го обновява. Ако не е в паметта вместо jump, следва прекъсване на процесораи функцията се качва в паметта. Който вика само far във Windows, трябва да зареди в ах данните.MakeProcInstance cъздава втори шлюз Instance Thunk. В него ах се зарежда с данните и се реализира преход към Reload thunk.

reload thunk.

hinstance thunk


3. mov ax, xxx

За функциите от библиотечните модули на Windows

(DLL)

(USER, KERNEL, GDI, както и драйверите)

Управление на паметта вWin16

Добави своя коментар:



Тагове от реферата: , , , , , ,

Изтегли в DOC | PDF | ZIP