3. Introduzione ai Sistemi Operativi.

Riferimento: Capitolo 1 "Introduzione" del libro di testo.

I Servizi dei sistemi operativi
3_introSistemaOperativo.pdf (Traccia delle lezioni)

Formato ELF dell'eseguibile, Entry Point Address, Linking con librerie di default del gcc, Chiamata di Interrupt software, Chiamata di system call
EntryPoint_Linking_Syscall.pdf (dispense delle lezioni)

Esempi Utili:

Questi esempi sono pensati per essere eseguiti su un processore x86-64, quindi a 64 bit, ed un sistema operativo GNU Linux come la distribuzione LUbuntu 20.04.03 come quello delle macchine virtuali personalizzate che usate in laboratorio. Occorre avere installato il compilatore gcc ed i pacchetti lib32gcc-10-dev lib32gcc1 libc6-dev-i386 linux-libc-dev:i386 per poter utilizzare il flag -m32
Esempi di chiamata di Interrupt software in assembly per x86-64 (ma a 32 bit) - print ed exit

Usando 'as' e 'ld' direttamente senza 'gcc', con inizio codice in '_start'
Makefile_ld print.s
Usando 'gcc' escludendo le librerie standard, con inizio codice in '_start'
Makefile_gcc-nostdlib print.s
Usando 'gcc' e le librerie standard, con inizio codice in 'main'
Makefile_usa_main print_usa_main.s
Usando 'gcc' e le librerie standard, con inizio codice in 'main',
anche chiamando da assembly le funzioni di libreria C

Makefile_usa_printf print_usa_printf.s
Notare che per usare printf NON POSSO ESCLUDERE le librerie standard C
cioé non posso usare il flag di linking -nostdlib
Verificare che il linking fallisce usando il flag -nostdlib
Makefile_Errore_usa_printf_gcc-nostdlib


Chiamata di system call in assembly a 64 bit per x86-64 (64 bit) - print ed exit
Premessa:
L'istruzione 'int 0x80' ha dei limiti in ambiente a 64 bit.
Occorre sostituirla con l'istruzione syscall<\B>.
Sostituire_int_0x80_con_syscall___in_architetture_a_64_bit.pdf

Chiamare syscall usando 'gcc' e librerie standard, con inizio codice in 'main'
anche chiamando da assembly le funzioni di libreria C

Makefile64_usa_printf print64_usa_printf.s