Changes between Version 8 and Version 9 of WikiStart


Ignore:
Timestamp:
Mar 14, 2009, 11:21:54 AM (15 years ago)
Author:
Mattia Monga
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v8 v9  
    77=== Slide ===
    88
    9  * '''Turno 1 (4 Marzo 2009)''': [http://homes.dico.unimi.it/sisop/lucidi0809/solab01.pdf slide] ([http://homes.dico.unimi.it/sisop/lucidi0809/solab01.pdf Versione stampa])
     9 * '''Turno 1 (4 Marzo 2009)''': [http://homes.dico.unimi.it/sisop/lucidi0809/solab01.pdf slide] ([http://homes.dico.unimi.it/sisop/lucidi0809/solab01-handout.pdf Versione stampa])
    1010 * '''Turno 2 (6 Marzo 2009)''': [http://homes.dico.unimi.it/sisop/lucidi0809/solab01b.pdf slide] ([http://homes.dico.unimi.it/sisop/lucidi0809/solab01b-print.pdf Versione stampa])
    1111
     
    9797nasm -l mioboot.lst -o mioboot.img mioboot.asm
    9898qemu mioboot.img
     99# con qemu -d in_asm potete vedere (in /tmp/qemu.log) il codice eseguito dalla macchina virtuale: per la maggior parte istruzioni del BIOS
    99100}}}
    100101
    101102 * Programma che esegue il codice letto da standard input exec.c
    102103{{{
     104#!c
    103105#include <stdio.h>
    104106
     
    145147
    146148== Lezione 2 ==
     149
     150=== Slide ===
     151
     152 * '''Turno 1 (11 Marzo 2009)''': [http://homes.dico.unimi.it/sisop/lucidi0809/solab02.pdf slide] ([http://homes.dico.unimi.it/sisop/lucidi0809/solab02-handout.pdf Versione stampa])
     153
     154=== Esercizi ===
     155
     156 ==== {{{fork}}} ====
     157
     158{{{
     159#!c
     160/* un programma che "forca" un nuovo processo */
     161
     162#include <unistd.h>
     163#include <stdio.h>
     164#include <stdlib.h>
     165
     166int main(void){
     167  int x = fork();
     168  if (x < 0){
     169      perror("Errore nella fork:");
     170      exit(1);
     171  } else {
     172    if (x != 0){
     173      while(1){
     174        sleep(1);
     175        printf("Processo padre (Figlio: %d)\n", x);
     176      }
     177    } else {
     178      while(1) {
     179       printf("Processo figlio (%d)\n", x);
     180       sleep(1);
     181      }
     182    }
     183  }
     184  return 0;
     185}
     186
     187/* da compilare con un comando del tipo 'cc -o prova prova.c' */
     188/* Per terminare Ctrl-C */
     189}}}
     190
     191==== Esecuzione in sequenza e parallelo ====
     192
     193{{{
     194#!c
     195#include <stdio.h>
     196#include <unistd.h>
     197
     198int main(void){
     199  int i = 0;
     200  for (i=0; i<10; ++i){
     201    sleep(1);
     202    printf("%d: %d\n", getpid(), i);
     203  }
     204  return 0;
     205}
     206}}}
     207
     208{{{
     209#!sh
     210# In sequenza
     211./hello ; ./hello
     212# In parallelo
     213./hello & ./hello
     214echo $?
     215}}}
     216
     217==== Cosa fa? ====
     218
     219{{{
     220#!sh
     221/usr/bin/touch piripacchio
     222while /bin/ls piripacchio; do
     223 /usr/bin/sleep 2
     224 /bin/echo ciao
     225done & ( /usr/bin/sleep 10 ; /bin/rm piripacchio )}}
     226}}}
     227
     228Consultate il manuale!
     229
     230{{{
     231#!sh
     232man man
     233man touch
     234man ls
     235man 1 sleep # man 3 sleep è il manuale della funzione della libreria C
     236man echo
     237man rm
     238}}}
     239
     240==== Uso del {{{for}}} e {{{if}}} ====
     241
     242{{{
     243#!sh
     244for i in dog cat fish; do if ls /bin/$i; then echo Trovato $i; else echo $i non trovato; fi; done
     245}}}
     246
     247{{{
     248#!sh
     249man test
     250for i in dog cat fish; do if test -f /bin/$i; then echo Trovato $i; else echo $i non trovato; fi; done
     251}}}
     252
     253=== Link ===
     254
     255 * [http://jrmiii.com/attachments/Vim.pdf Vi cheat sheet]
     256 
     257