This shows you the differences between two versions of the page.
sde2:teme:tema_fr_3_rust [2022/04/25 22:39] alexandru.radovici |
sde2:teme:tema_fr_3_rust [2023/05/14 20:30] (current) alexandru.radovici |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tema 3 Rusty Loader ====== | + | ====== Tema 4 Rustyloader ====== |
+ | |||
+ | ===== Informatii ===== | ||
+ | |||
+ | <note important> | ||
+ | Date limite: ** Le 30 mai, 23h59 ** \\ | ||
+ | Note: ** 2 points ** de la note \\ | ||
+ | Lien: [[https://classroom.github.com/a/5CBIdgHi|Devoir 4]] \\ | ||
+ | Télécharger en retard: **2 points / jour** (maximum 4 jours)\\ | ||
+ | </note> | ||
===== Obiectivele temei ===== | ===== Obiectivele temei ===== | ||
Line 25: | Line 35: | ||
* Își va inițializa structurile interne. | * Își va inițializa structurile interne. | ||
+ | * Va afisa pe stderr (2) lista de segmente ale fisierului executabil | ||
+ | * Va afisa pe stderr (2) //base address// pentru fisierul executabil (adresa de memorie minima la care se incarca segmente) | ||
+ | * Va afisa pe stderr (2) //entry point address// | ||
* Va parsa fișierul binar - pentru a face asta aveți la dispozitie biblioteca [[https://docs.rs/object/latest/object/|object]]. | * Va parsa fișierul binar - pentru a face asta aveți la dispozitie biblioteca [[https://docs.rs/object/latest/object/|object]]. | ||
* Va rula prima instrucțiune a executabilului (//entry point-ul//). | * Va rula prima instrucțiune a executabilului (//entry point-ul//). | ||
Line 35: | Line 48: | ||
* Pagina trebuie mapată **fix** la adresa indicată în cadrul segmentului. | * Pagina trebuie mapată **fix** la adresa indicată în cadrul segmentului. | ||
+ | |||
+ | ==== Formatul afisarii ==== | ||
+ | <code> | ||
+ | Segments | ||
+ | # address size offset length flags | ||
+ | 0 0x8048000 1012 0x0 1012 r-x | ||
+ | 1 0x804a000 8192 0x1000 8192 rw- | ||
+ | Entry point 8048120 | ||
+ | Base address 8048000 | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Alinierea campurilor se face cu TAB (\t). Daca alinierea nu este buna, adaugati doua caratere TAB. | ||
+ | </note> | ||
===== Biblioteca object ===== | ===== Biblioteca object ===== | ||
Line 43: | Line 70: | ||
<note> | <note> | ||
- | //mem_size// este reprezentata de campul //size// | + | * //mem_size// este reprezentata de campul //size// |
- | //file_size// este reprezentat de una din valorile din tupul //file_range// | + | * //file_size// este reprezentat de una din valorile din tupul //file_range// |
</note> | </note> | ||
Line 70: | Line 97: | ||
*Cursuri | *Cursuri | ||
- | *[[http://ocw.cs.pub.ro/courses/so/cursuri/curs-05 | Curs 5 - Gestiunea memoriei]] | + | *[[sde2::cursuri:07]] |
- | *[[http://ocw.cs.pub.ro/courses/so/cursuri/curs-06 | Curs 6 - Memoria virtuală]] | + | *[[sde2:cursuri:08]] |
- | *[[http://ocw.cs.pub.ro/courses/so/cursuri/curs-07 | Curs 7 - Securitatea memoriei]] | + | |
*Laboratoare | *Laboratoare | ||
- | *[[http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-04 | Laborator 4 - Semnale]] | + | *[[sde2:laboratoare:05_new]] |
- | *[[http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-05 | Laborator 5 - Gestiunea memoriei]] | + | *[[sde2:laboratoare:08_new]] |
- | *[[http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-06 | Laborator 6 - Memoria virtuală]] | + | |
*Operating System Concepts -- Chapter 8 -- Main Memory | *Operating System Concepts -- Chapter 8 -- Main Memory | ||
*Operating System Concepts -- Chapter 9 -- Virtual Memory | *Operating System Concepts -- Chapter 9 -- Virtual Memory |