Table of Contents

Tema 4 Rustyloader

Informatii

Date limite: Le 30 mai, 23h59
Note: 2 points de la note
Lien: Devoir 4
Télécharger en retard: 2 points / jour (maximum 4 jours)

Obiectivele temei

Recomandări

Enunț

Să se implementeze un loader de fișiere executabile în format ELF pentru Linux. Loader-ul va încărca fișierul executabil în memorie pagină cu pagină, folosind un mecanism de tipul demand paging - o pagină va fi încărcată doar în momentul în care este nevoie de ea. Pentru simplitate, loader-ul va rula doar executabile statice - care nu sunt link-ate cu biblioteci partajate/dinamice.

Pentru a rula un fișier executabil, loader-ul va executa următorii pași:

Formatul afisarii

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

Alinierea campurilor se face cu TAB (\t). Daca alinierea nu este buna, adaugati doua caratere TAB.

Biblioteca object

Biblioteca object va pune la dispozitie un parser pentru fisiere binare (ELF in Linux). Aveti nevoie de lista de segmente (File).

În imaginea de mai jos aveți o reprezentare grafică a unui segment.

  • mem_size este reprezentata de campul size
  • file_size este reprezentat de una din valorile din tupul file_range

Precizări/recomandări pentru implementare

Precizări

Resurse de suport