= Laboratorio di Sistemi Operativi = Edizione per gli studenti del corso di laurea in "Sicurezza dei sistemi e delle reti informatiche" (F68) [[PageOutline]] == Materiale 2019/2020 == * [https://calendar.google.com/calendar/embed?src=unimi.it_rqir4v4a9nbvb2clqltb6cj7rk%40group.calendar.google.com&ctz=Europe%2FRome Calendario delle lezioni e degli esami di laboratorio] * **[http://homes.di.unimi.it/sisop/blog/blosxom.cgi/index.html Avvisi]** * [http://homes.di.unimi.it/sisop/ Il sito principale del corso] * [http://ostep.org Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau "Operating Systems: Three Easy Pieces", 2015 (Testo di riferimento)] == 1. 7 ottobre 2019 (Aula 303) * [http://homes.di.unimi.it/sisop/lucidi1920/solab01.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab01-handout.pdf Slide (Versione per la stampa)] * [wiki:"Sperimentazione 1"] * Riferimenti OSTEP: [http://pages.cs.wisc.edu/~remzi/OSTEP/intro.pdf Introduction] [http://pages.cs.wisc.edu/~remzi/OSTEP/lab-tutorial.pdf Lab tutorial] * Hai studiato il materiale della prima lezione? [https://goo.gl/cgO5BY Prova a rispondere ad alcune domande] == 2. 14 ottobre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab02.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab02-handout.pdf Slide (Versione per la stampa)] * [http://homes.di.unimi.it/sisop/lucidi1920/solab.iso ISO Debian live] (credenziali user:live) Può essere usata come CD live (cioè d'avvio) oppure più comodamente con un emulatore. {{{#!sh qemu-system-i386 -cdrom /path/dove/hai/messo/solab.iso }}} {{{#!sh # meglio con 768M di memoria qemu-system-i386 -m 768 -cdrom /path/dove/hai/messo/solab.iso }}} {{{#!sh # è utile usare attivare la rete e connettersi con ssh -p 8022 user@localhost per evitare problemi con la tastiera, soprattutto in ambiente Windows & Mac qemu-system-i386 -m 768 -net nic,model=virtio -net user,hostfwd=tcp::8022-:22 -cdrom /path/dove/hai/messo/solab.iso }}} {{{#!sh # In ambiente Linux l'emulatore kernel KVM velocizza parecchio l'esecuzione qemu-system-i386 -m 768 -enable-kvm -net nic,model=virtio -net user,hostfwd=tcp::8022-:22 -cdrom /path/dove/hai/messo/solab.iso }}} * [http://www.qemu-project.org/ QEmu] [https://mobaxterm.mobatek.net/ MobaXTerm (utile per gli utenti Windows)] * [https://www.cs.uaf.edu/2006/fall/cs301/support/x86/ Bigino NASM] [http://www.cs.mcgill.ca/~consult/info/gdb.html Bigino GDB] [http://openvim.com Tutorial vi] [http://www.viemu.com/vi-vim-cheat-sheet.gif Bigino vi] * [http://homes.di.unimi.it/sisop/lucidi1920/esercizi-assembly.pdf Appunti esercizi] == 3. 21 ottobre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab03.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab03-handout.pdf Slide (Versione per la stampa)] * [http://ref.x86asm.net/coder32.html Riferimento istruzioni X86 (32bit)] * [http://homes.di.unimi.it/sisop/lucidi1920/esercizi-assembly.pdf Appunti esercizi] * [https://unix50.org 50 anni di Unix!] * Riferimenti OSTEP: [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-intro.pdf The Abstraction: Address Spaces] [http://pages.cs.wisc.edu/~remzi/OSTEP/vm-api.pdf Interlude: Memory API] == 4. 28 ottobre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab04.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab04-handout.pdf Slide (Versione per la stampa)] * Riferimenti OSTEP: [http://pages.cs.wisc.edu/~remzi/OSTEP/cpu-api.pdf Process API] * UnaShellEssenziale === Esame La procedura per finalizzare l''''intero''' esame di ''Sistemi Operativi I e II'' è riassunta di seguito: {{{#!c #include #include #include #include int solab(void) { return rand() % 31; } int teoria(void) { return rand() % 31; } int main() { int fds[2], rt, rl; printf("Iscrizione SIFA a (entrambi) Sistemi Operativi I e II\n"); pipe(fds); srand(time(NULL)); if (fork() == 0) { int r; do { sleep(rand() % 2); r = solab(); printf("Voto laboratorio: %d\n", r); } while (r < 18); close(fds[0]); write(fds[1], &r, sizeof(r)); return 0; } do { sleep(rand() % 3); rt = teoria(); printf("Voto teoria: %d\n", rt); srand(time(NULL)); } while (rt < 18); close(fds[1]); read(fds[0], &rl, sizeof(rl)); printf("Registrazione (occorre essere iscritti SIFA) di Sistemi Operativi I e II: %u \n", (unsigned int)((3.*(float)rl + 9.*(float)rt)/12.)); return 0; } }}} == Materiale aa.aa. precedenti == * [wiki:WikiStart@336 Materiale 2018/2019 (corso di laurea in Informatica)] * [wiki:WikiStart@305 Materiale 2017/2018 (corso di laurea in Informatica)] * [wiki:WikiStart@270 Materiale 2016/2017 (corso di laurea in Informatica)] * [wiki:WikiStart@241 Materiale 2015/2016 (corso di laurea in Informatica)] * [wiki:WikiStart@215 Materiale 2014/2015 (corso di laurea in Informatica)] * [wiki:WikiStart@193 Materiale 2013/2014 (corso di laurea in Informatica)] * [wiki:WikiStart@168 Materiale 2012/2013 (corso di laurea in Informatica)] * [wiki:WikiStart@124 Materiale 2011/2012 (corso di laurea in Informatica)] * [wiki:WikiStart@98 Materiale 2010/2011 (corso di laurea in Informatica)] * [wiki:WikiStart@66 Materiale 2009/2010 (corso di laurea in Informatica)] * [wiki:WikiStart@49 Materiale 2008/2009 (corso di laurea in Informatica)]