= Laboratorio di Sistemi Operativi = Edizione per gli studenti del corso di laurea in "Sicurezza dei sistemi e delle reti informatiche" (F68) == ATTENZIONE == * l'ultima lezione si terrà il 7 gennaio 14:30-18:30 in aula Lambda; * l'iscrizione agli esami di laboratorio avviene tramite email secondo le modalità che verranno segnalate [http://homes.di.unimi.it/sisop/blog/blosxom.cgi/index.html Avvisi] circa una settimana prima della data dell'esame. [[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 == 5. 4 novembre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab05.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab05-handout.pdf Slide (Versione per la stampa)] * [https://www.memrise.com/course/86904/solab-unimi/ Memrise] (utile per memorizzare i comandi principali) * [https://cmdchallenge.com CMD Challenge] (un po' di esercizi; per chi volesse cimentarsi in esercizi più orientati alla sicurezza: `ssh -p 2220 -l bandit0 -x bandit.labs.overthewire.org`, password bandit0) * [https://doi.org/10.1145/5948.315654 Knuth vs. McInroy] (accessibile gratuitamente da IP unimi o via [https://users.unimi.it/banchedati/proxybib.pac proxy]; TL;DR `tr -cs A-Za-z '\n' | tr A-Z a-z | sort | uniq -c | sort -rn | head`) == 6. 11 novembre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab06.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab06-handout.pdf Slide (Versione per la stampa)] == 7. 18 novembre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab07.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab07-handout.pdf Slide (Versione per la stampa)] * Riferimenti OSTEP: [http://pages.cs.wisc.edu/~remzi/OSTEP/file-disks.pdf Hard Disk Drives] * [https://homes.di.unimi.it/sisop/lucidi1718/lab01.pdf Esercizio i-node] == 8. 25 novembre 2019 (Aula Delta) * [http://homes.di.unimi.it/sisop/lucidi1920/solab08.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/solab08-handout.pdf Slide (Versione per la stampa)] * Riferimenti OSTEP: [http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf Locks] [http://pages.cs.wisc.edu/~remzi/OSTEP/threads-sema.pdf Semaphores] == 9. 2 dicembre 2019 (Aula Delta) * Disco per la persistenza [http://homes.di.unimi.it/~sisop/lucidi1920/persistence-jos.qcow formato QEmu] [http://homes.di.unimi.it/~sisop/lucidi1920/persistence-jos.vdi formato VirtualBox] * [https://pdos.csail.mit.edu/6.828/2018/labs/lab1/ Esercitazione JOS (MIT) Lab1] * [http://homes.di.unimi.it/~sisop/lucidi1920/solab09.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1920/solab09-handout.pdf Slide (Versione per la stampa)] == 10. 9 dicembre 2019 (Aula Delta) * [https://pdos.csail.mit.edu/6.828/2018/labs/lab2/ Esercitazione JOS (MIT) Lab2] * [http://homes.di.unimi.it/~sisop/lucidi1920/solab10.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1920/solab10-handout.pdf Slide (Versione per la stampa)] == 11. 9 dicembre 2019 (Aula Delta) * [http://homes.di.unimi.it/~sisop/lucidi1920/solab11.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1920/solab11-handout.pdf Slide (Versione per la stampa)] == 12. '''7 gennaio 2019 (Aula Lambda)''' === 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)]