ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ punjac... · потпрограми траже у...
TRANSCRIPT
![Page 1: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/1.jpg)
1
ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ
Основни задаци пуњача
Типови пуњача
![Page 2: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/2.jpg)
2
Компајлер
Објектнадатотека(машински код)
Улазни програм
![Page 3: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/3.jpg)
3
Зашто је пуњач неопходан
Сви преведени програми имају почетну адресу нула, што је у мултипрограмским условима немогуће реализовати.
Исто тако програми могу да садрже један или више потпрограма.
Зато се дефинише посебна компонента програмске подршке чији је задатак да пуни програме на различите адресе у оперативној меморији.
![Page 4: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/4.jpg)
4
ПУЊАЧ: Програм који смешта друге програме у меморију.
PREVEDENI PROGRAM
PUNJAČ IZVRŠIVI
MAŠINSKI PROGRAM
IZVRŠIVI MAŠINSKI PROGRAM
ULAZNI PODACI
IZLAZNI PODACI
(REZULTATI)
![Page 5: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/5.jpg)
Пример инструкције
5
addc(R1, 1, R0) R0 <- R1 + 1
110000 00000 00001 0000000000000001
0xC001 0001
![Page 6: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/6.jpg)
Пример инструкције
6
addc(R1, 1, R0)mulc(R0, 2, R0)
0xC001 0001
0xC800 0002assembler
![Page 7: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/7.jpg)
Смештање у оперативну меморију
7
0001
0031
0124
0xC001 0001
0xC800 0002
0xC001 0001
0xC800 0002
0xC001 0001
0xC800 0002
0xC001 0001
0xC800 0002
...
...
Пуњачгде?
![Page 8: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/8.jpg)
Смештање у оперативну меморију
8
0001
0034
0xd041 0064
0x73c2 0005
0xc001 0001
0xc800 0002
0xc001 0003
0xc800 0004cmpeqc(R1, 100, R2)beq(R2, Label, R30)addc(R1, 1, R0)mulc(R0, 2, R0)
Label:addc(R1, 3, R0)mulc(R0, 4, R0)
0xd041 0064
0x73c2 0038
0xc001 0001
0xc800 0002
0xc001 0003
0xc800 0004
0002
0003
0004
0005
0006
0035
0036
0037
0038
0039
![Page 9: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/9.jpg)
9
Релокација
РЕЛОКАЦИЈА програма: размештај програма, почев од прве слободне адресе.
Пуњач релоцира програм додавањем константе на сваку релокатибилнуадресу у програму.
Програм на излазу преводиоца је релокатибилан програм, а извршиви машински програм је апсолутни.
![Page 10: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/10.jpg)
10
Повезивање
Унутар главног програма могу постојати позиви на различите потпрограме или програме преведене у различито време и писане на различитим програмским језицима.
Повезивање свих програма (потпрограма) у јединствен програм обухвата одређивање: (1) адреса за екстерне референце и (2) екстерних вредности.
![Page 11: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/11.jpg)
11
Сегмент
Сегмент је скуп речи поређаних једна за другом.
Сегмент је најмања јединица за смештање програма или података коју преводилац и пуњач препознају.
![Page 12: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/12.jpg)
12
Односи полазних програма, преведених и извршивих машинских програма:
P.A ASEMBLER P.O
P.F FORTRAN P.O
P.C KOBOL P.O
PUNJAČ I.P
POLAZNI PROGRAMI
IZVRŠIVI MAŠNSKI
PROGRAM
![Page 13: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/13.jpg)
13
Функције пуњача:
1. Додела меморијског простора програмима (алокација);
2. Одређивање вредности симболичких референци између релокатибилнихпрограма (повезивање)
3. Подешавање свих адресно осетљивих локација на одговарајући додељени простор (релокација);
4. Физички пренос машинских инструкција и података у меморију (пуњење).
![Page 14: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/14.jpg)
14
Типови пуњача
Преведи и крени.
Апсолутни.
BSS.
Релокатибилни са директним повезивањем.
Повезивач и пуњач (апсолутне меморијске слике и едитор повезивања).
Пуњач прекривача.
Динамички повезивач.
![Page 15: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/15.jpg)
15
Преведи и крени
Пуњач у оквиру програма преводиоца: асемблера или компајлера.
Предност – врло су прости.
Недостаци: (1) некорисно трошење меморијског простора и процесорског времена (јер асемблер мора бити стално у меморији и програм мора бити преведен пре сваког покретања), и (2) тешко је одржавати већи број различитих сегмената.
![Page 16: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/16.jpg)
16
Апсолутни пуњач
Асемблер формира у целини преведени програм.
То значи да су адресе првих инструкција у програму и процедури дефинисане у време асемблирања.
Апсолутни пуњач једноставно уноси са спољне меморије програм у дефинисане меморијске локације.
![Page 17: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/17.jpg)
17
Недостаци апсолутног пуњача
Негира суштину асемблера.
Немогуће је решити проблем библиотека или програма који се састоји од више независних модула.
![Page 18: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/18.jpg)
18
Два типа повезивања
Унутар сегментно или локално, које се односи на локације у истом сегменту.
Међусегментно, које се односи на локације у неком другом, спољњем сегменту.
Стога се симболи у процедури класификују или као локални или као глобални.
![Page 19: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/19.jpg)
19
ПОВЕЗИВАЊА (BINDING)
Релокација – дефинисање локалних симбола.
Повезивање – дефинисање глобалних симбола.
![Page 20: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/20.jpg)
20
Пример улазних и излазних глобалних симбола
PROGRAMSKI SEGMENT A
SEGMENT PODATAKA
NAPUNI IZ Q CALL B
NAPUNI IZ X SMESTI U Y
0
NAPUNI IZ X
SMESTI U Y
0 0
400
1200
X
Y
Q
ULAZNI SIMBOL JE A
IZLAZNI SIMBOLI
SU Q, B, X, Y
ULAZNI SIMBOL JE B
IZLAZNI SIMBOLI
SU X i Y
ULAZNI SIMBOLI SU X, Y, Q
PROGRAMSKI SEGMENT B
![Page 21: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/21.jpg)
21
BSS пуњач
Омогућава пуњење више сегмената програма над само једним заједничким сегментом података.
Излаз из асемблера је преведени програм и информација о свим другим програмима на које се он позива.
Наводи се и информација о томе које референце треба мењати (релокациона информација).
![Page 22: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/22.jpg)
22
Недостаци BSS пуњача:
Вектор прелаза заузима простор у меморији, а користи се само за повезивање.
Обрађују сегменте процедура, али не олакшавају приступ сегментима дељивих података.
![Page 23: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/23.jpg)
23
РЕЛОКАТИБИЛНИ ПУЊАЧ са директним повезивањем
Универзални релокатибилни пуњач.
Омогућује пуњење вишеструких сегмената процедуре и вишеструких сегмената података.
![Page 24: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/24.jpg)
24
Преводилац издаје три типа таблица:
Речник екстерних симбола (ESD) садржи информацију о свим улазним симболима и свим излазним симболима.
Табела текста (TXT) садржи преведену верзију релокатибилног машинског програма.
Релокациони каталог повезивања (RLD) садржи информацију о свим адресно осетљивим локацијама унутар програма.
![Page 25: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/25.jpg)
25
Две фазе пуњења:
Главна улога пуњача у ПРВОЈ ФАЗИ је додела и придруживање меморије сваком сегменту програма и библиотеке и формирање табеле симбола у коју се уносе глобални симболи и апсолутне адресе.
Главна функција ДРУГЕ ФАЗЕ је пуњење стварног програма и обављање релокационе модификације неке адресне компоненте која тражи ту модификацију.
![Page 26: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/26.jpg)
26
Пуњач са директним повезивањем у два пролаза
XXX.O
MAPA PUNJENJA
XYX.O
XYY.O
PUNJAČ - PRVI
PROLAZ
TABELA GLOBALNIH EKSTERNIH
SIMBOLA GEST
PAPP
BAPP
PUNJAČ - DRUGI
PROLAZ
LESA
KOPIJA XXX.O MEMORIJA
OS
![Page 27: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/27.jpg)
27
I ПРОЛАЗ
START
BAPP ← PAPP
ČITANJE SLED. LINIJE IZ UL. DATOTEKE
TXT D A
NE
UPIS KOPIJE ZA POTREBE DRUGOG PROLAZA
RLD D A
NE
END
NE
D APAPP←PAPP + SDUŽIN
SD
NE
D AVREDN←BAPP SDUŽIN←DUŽIN
LD
NE
D ABAPP←BAPP+ADR
ER D A
NE
DA LI JE NAZIV
SIMBOLA U GEST
D ANE
GREŠKA VIŠESTR.
NAZIV
VREDN←BAPP SMEŠTANJE
SIMBOLA U GEST
ŠTAMPANJE NAZIVA SIMBOLA I VREDNOSTI
U MAPU PUNJENJA
PR_PROL
![Page 28: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/28.jpg)
28
II ПРОЛАЗ
−
START
BAPP ← PAPP
CTTA KOPIJU .O
PRENOS UPRAVLJANJA
NA EXADDR
ADDR ≠
BLANK
NE
DA
DR_PROL
EXADDR ← PAPP
TIP
UZMI VREDN. IZ LESA(ID) RELOKACIJA
BAPP+ADDR
EXADDR ← BAPP+ADDR
BAPP←BAPP + SDUŽIN
X
END
EOF
X UNAPRED (+, − )
ODUZMI VREDN. (BAPP− ADDR)
DODAJ VREDN. (BAPP+ADDR)
X X
TXT
ESD
RLD ESD TIP
X
LD ER
SDUŽIN = DUŽIN
POSTAVI LESA(ID) = BAPP
X
PRETRAŽI GEST
NAĐEN SIMBOL
POSTAVLJANJE LESA(ID) =VREDN
X
GREŠKA! - NEDEFINISAN
EKSTERNI SIMBOL - PROP. SEGMEN.
NE
DA
* * (NESTANDARDNI SIMBOL)
+
![Page 29: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/29.jpg)
29
Повезивач и Пуњач
Повезивач у ствари обавља функцију доделе, релокације и спајања, а пуњач модула функцију пуњења.
Постоје две класе повезивача:
Најпростији тип повезивача развија модул пуњења сличан извршивом коду код апсолутног пуњача.
Назива се модулом меморијске слике.
![Page 30: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/30.jpg)
30
Едитор повезивања
Прати релокациону информацију тако да резултујући модул пуњења као целина може на даље да се релоцираи напуни у произвољну зону у меморији.
Пуњач модула мора да обави додатну доделу и релокацију, као и пуњење, али не решава сложен проблем повезивања.
![Page 31: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/31.jpg)
31
Пуњач покривача
У свим претходним пуњачима претпостављено је да се сви потребни програми и потпрограми пуне у меморију у исто време.
Шта ако нема довољно меморије?
Међутим, обично се поједини програми и потпрограми траже у различито време, односно могуће је реализовати структуру ПОКРИВАЧА (overlay).
![Page 32: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/32.jpg)
32
Пример са прекривачима
A
20
B
30
E
20
C
15
D
25
F
15
G
20
![Page 33: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/33.jpg)
33
Динамички повезивач
Најопштији тип пуњача.
То је механизам код кога се пуњење и повезивање екстерних референци врши у време извршавања.
У случају позива на спољну адресу или глобалну променљиву, позива се пуњач, који тек тада пуни сегмент који садржи екстерну референцу.
![Page 34: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/34.jpg)
Мало детаља о решавању адресно осетљивих локација
Три главна податка:
Назив симбола
Врста инструкције
Положај инструкције
34
beq(R2, Label, R30)...
Label:...jmp(Label)
0x73c2 ХХХХ
0x5 ХХХХ 7a1
0x54...0x67...0x88
![Page 35: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/35.jpg)
Мало детаља о решавању адресно осетљивих локација
Три главна податка:
Назив симбола
Врста инструкције
Положај инструкције
Нпр. у ЕЛФ32 форматуtypedef struct {
Elf32_Addr r_offset;
Elf32_Word r_info;
} Elf32_Rel;
r_offset – положај инструкције у односу на почетак секције/сегмента
r_info – пакована информација о симболу (горњих 8 бита) и врсти инструкције (доњих 8 бита) 35
![Page 36: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/36.jpg)
Мало детаља о решавању адресно осетљивих локација
Три (плус један) главна податка:
Назив симбола
Врста инструкције
Положај инструкције
Додатак
36
beq(R2, Label + 5, R30)...
Label:...jmp(Label - 2)
0x73c2 ХХХХ
0x5 ХХХХ 7a1
0x54...0x67...0x88
![Page 37: ПУЊАЧ ПРОГРАМА У МЕМОРИЈУ Punjac... · потпрограми траже у различито време, односно могуће је реализовати](https://reader030.vdocuments.mx/reader030/viewer/2022040808/5e4cd7926c520266be3ecaeb/html5/thumbnails/37.jpg)
Мало детаља о решавању адресно осетљивих локација
Три главна податка:
Назив симбола
Врста инструкције
Положај инструкције
Додатак
Нпр. у ЕЛФ32 форматуtypedef struct {
Elf32_Addr r_offset;
Elf32_Word r_info;
Elf32_Sword r_addend;
} Elf32_Rela;
r_addend – вредност додатка
37