Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi N - Z > Sistemi operativi e distribuiti
Pages: 1 [2] 
esame in arrivo
Clicca QUI per vedere il messaggio nel forum
Vikyg13
ma data la stringa di paginazione R e 3 frame, come si fa a vedere il numero minimo di pages fault per la stringa? C'è uno degli algoritmi che per caso minimizza il numero di page fault?

Youngz
Ragazzi, postiamo esempi diversi di programmi che possono essere utili per l'esame, io qui ho appena fatto un programma sulle fork:

code:
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <sys/types.h> pid_t pid,p_nipote,p_nonno; int appoggio,nip,non,somma,molt,sott; float divisione; void * Scelta(void *); int main() { printf("inserire 1 se si vuole fare (pid delnonno/pid del nipote)\ninserire 2 se si vuole fare (pid del nonno+ pid del nipote)\ninserire 3 se si vuole fare (pid del nonno*pid del nipote)\ninserire 4 se si vuole fare (pid del nonno-pid del nipote)\ninserire 5 se si vuole mandare affanculo il bocci\n"); do{ scanf("%d",&appoggio); if(appoggio < 1 || appoggio > 5) printf("mongolo non sai inserire neanche un numero!"); }while(appoggio < 1 || appoggio > 5); if(appoggio == 5){ int i,k=rand() % 100 + 1; for(i=0;i<k;i++){ printf("Bocci vanculo"); int t; for(t=0;t<i;t++) printf("o"); printf("\n"); } return; } pid=fork(); if(pid < 0){ printf("Non funziona la fork,ciao!\n"); exit(1); } if(pid == 0){ printf("\nSon il papà, il mio id è : %d , invece quello di mio papà (nonno) è %d\n",getpid(),non=getppid()); p_nonno=getppid(); printf("sto partorendo un figlio! WOW\n"); pid=fork(); if(pid < 0){ printf("figlio venuto male, l'ho soppresso!\n"); exit(1); } if(pid == 0){ printf("figlio nato perfettamente, il nipotino ha pid pari a : %d\n",nip=getpid()); p_nipote=getpid(); //scelta if(appoggio == 1){ divisione=non/nip; printf("La divisione: %d/%d=%g\n",non,nip,divisione); } if(appoggio == 2){ somma=non+nip; printf("La somma: %d+%d=%d\n",non,nip,somma); } if(appoggio == 3){ molt=non*nip; printf("La moltiplicazione: %d*%d=%d\n",non,nip,molt); } if(appoggio == 4){ sott=non-nip; printf("La sottrazione: %d-%d=%d\n",non,nip,sott); } printf("schiatta il nipote\n"); exit(0); } while(wait(NULL)>=0) ; printf("schiatta il padre\n"); exit(0); } while(wait(NULL)>=0) ; printf("fico, ho finito, ora può schiattare anche il nonno, Adios\n"); exit(0); }


Ora si va in pausa pranzo, quando torno creo un programma che sincronizza 3 thread per scrivere "bocci fatti fottere!". :D

ViPah
Simpatico il programma, non vedo l'utilità del moltiplicare gli id ma va beh xD

printf("Bocci vanculo");

lo modificherei con


printf("Bocci VAFFANCULO!");

:D

ViPah
Ecco qua, mi aggrego agli esercizi che potrebbero esservi utili.
Questo prog crea un array di int, riempito dall'utente, di insulti al bocci.
Inserisci 1 se vuoi insultarlo, un altro numero altrimenti.

Il programma, ovviamente, accetta solo insulti.

Il compito inutile dei due thread è quello di contare, anche grazie a un mutex che non fa inputtanare la variabile swearcount, gli insulti.


E', ovviamente, perfettamente funzionante.:)

code:
#include <pthread.h> #include <stdio.h> #include <stdlib.h> int swearcount = 0; pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; void * swearCounter(void *); //stamerdalaeseguonoithread int main() { pthread_t tid1, tid2; printf("inserisci un numero a caso") scanf("%d", &nswear) int insulto[nswear]= void * swearCounter(void *) if(pthread_create(&tid1, NULL, swearCounter, NULL)) { printf("\n Cazzo, non mi crea il thread, butta il pc dalla finestra!"); exit(1); } if(pthread_create(&tid2, NULL, swearCounter, NULL)) { printf("\n Cazzo, non mi crea il thread, butta il pc dalla finestra!"); exit(1); } if(pthread_join(tid1, NULL)) { printf("\n Non va T.T"); exit(1); } if(pthread_join(tid2, NULL)) { printf("\n Non va PD!!!!! T.T"); exit(1); } printf("\n Numero di insulti = %d , su %d\n", pxlcount,nswear); pthread_mutex_destroy(&mutex1); pthread_exit(NULL); } void *swearCounter(void * a) { int swearcount, j; for(j = 0; j < nswear; j++){ printf("inserisci 1 se vuoi insultare il bocci, un altro numero altrimenti"); scanf("%d", &insulta); if (insulta!=0) printf("mi dispiace, accetto solo insulti"); while (insulta!=0){ pthread_mutex_lock( &mutex1 ); //uso il mutex, ma infondo, come il bocci, non so perchè... insulto[j]=insulta swearcount++: pthread_mutex_unlock( &mutex1 ); } } }

Rufy
....posso consigliare....dato che son qui da taanto tempo...che è meglio evitare di insultare i Prof...dato che anche loro leggono il forum Dsy e ok, che non sanno chi si cela dietro l'avatar...ma magari si incazzano e ci bastonano....anche se ci bastonano lo stesso....^_^'
cmq grazie per gli esempi di prog!!!!bravi!

zeman13
concordo con rufy...si questa cosa di insultare il prof e soprattutto di bestemmiare non è che sia il massimo...

Youngz
va bene moralisti..

Ora ho fatto un programma per sommare in alternanza un thread i numeri pari e uno i numeri dispari di una matrice.

code:
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #define DIM 5 int mat[DIM][DIM]={ {77,20,12,100,-4}, {21,80,0,7,2}, {39,40,0,45,1}, {40,50,600,-30,1}, {0,0,0,1,0}}; void *Dispari(void *a); void *Pari(void *a); pthread_mutex_t mutex1=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond=PTHREAD_COND_INITIALIZER; int vivo2 = 0; int i,j; int sommap,sommad; main(){ sommap=sommad=0; for(i=0;i<DIM;i++) for(j=0;j<DIM;j++) if((mat[i][j] % 2) == 0) sommap+=mat[i][j]; else sommad+=mat[i][j]; printf("La somma dei valori pari e':%d , dei valori dispari e': %d\nCliccare invio per continuare",sommap,sommad); char caxxi; scanf("%c",&caxxi); printf("\n Perfetto, avvio mutex: \n"); for(i=97;i<107;i++){ //fa solo fico! sleep(0); printf("%c\n",i); } sommad=sommap=0; pthread_t pit1,pit2; if(pthread_create(&pit1, NULL, Dispari, NULL)){ printf("Errore!\n"); exit(1); } if(pthread_create(&pit2, NULL, Pari, NULL)){ printf("Errore!\n"); exit(1); } if(pthread_join(pit1, NULL)){ printf("Errore nella join!\n"); exit(1); } if(pthread_join(pit2, NULL)){ printf("Errore nella join!\n"); exit(1); } printf("Somma dei numeri pari: %d, Somma dei numeri dispari: %d\n", sommap,sommad); pthread_exit(NULL); } void *Dispari (void *a) { int k,l; sommad=0; printf("thread1 entra in fase critica\n"); sleep(2); pthread_mutex_lock( &mutex1); printf("thread1 e' entrato in fase critica\n"); for(k=0;k<DIM;k++){ for(l=0;l<DIM;l++){ if((mat[k][l] %2) !=0){ sleep(1); printf("trovato dispari,VIVO2=%d\n",vivo2); sommad+=mat[k][l]; } else if(vivo2==0){ printf("trovato pari,entro in condizione di wait\n"); pthread_cond_wait(&cond,&mutex1); printf("trovato segnale, thread1 torna al lavoro\n"); //pthread_cond_signal(&cond); } } } printf("thread1 sta uscendo dalla fase critica\n"); pthread_mutex_unlock( &mutex1); printf("thread1 e' uscito dalla fase critica\n"); } void *Pari (void *a) { int k,l; sommap=0; printf("thread2 entra in fase critica\n"); sleep(5); pthread_mutex_lock( &mutex1); printf("thread2 e' entrato in fase critica\n"); for(k=0;k<DIM;k++){ for(l=0;l<DIM;l++){ if((mat[k][l] %2) ==0){ sleep(1); printf("trovato Pari, VIVO2 = %d\n",vivo2); sommap+=mat[k][l]; } else if(vivo2 != 1){ //printf("trovato dispari,entro in condizione di wait\n"); //pthread_cond_wait(&cond,&mutex1); printf("trovato segnale, thread2 torna al lavoro\n"); vivo2=1; pthread_cond_signal(&cond); } } } printf("thread2 sta uscendo dalla fase critica\n"); pthread_mutex_unlock( &mutex1); printf("thread2 e' uscito dalla fase critica\n"); }


Trovate un modo per migliorarla :D ViPah ti stimo!

Ps: non penso che il bocci abbia sbatti di leggere un forum per gli studenti, non mi sembra il tipo.

Rufy
Originally posted by Youngz
va bene moralisti..
.
.
Ps: non penso che il bocci abbia sbatti di leggere un forum per gli studenti, non mi sembra il tipo.


Qua non ti si fa la morale.....:roll:.....sto solo consigliando un tono da tenere in un forum di studenti frequentato e letto ANCHE da professori...che ci pensi o no(...e ti assicuro che lo guardano il forum...)prima che qualche Moderatore magari lo faccia chiudere...tutto qui...;)

Youngz
Va bene , scusate se ho insultato i prof.

ViPah
youngz, una domanda seria: come mai usi il mutex? sono due funzioni separate ognuna gestita dal proprio thread separatamente, non è inutile utilizzarlo?










ps. il bocci a quest'ora è a fare l'aperitivo :D

dellabest
il mutex a quanto ho capito serve a sincronizzare vari thread,quindi quando metto wait a uno quello con signal parte e quando finisce la sua eseguzione ritorna al wait.

Esempio, io sto studiando, mi parte il wait voglia di sigaretta, mi fumo la sigaretta e ritorno a studiare.



Ps: no, il bocci a quest'ora si sta facendo due svedesi.

Edit: sono youngz a casa di dellabest! per questo scrivo col suo.

PS2: riassuntino su tutti gli schemi hardware di paging in ita ? :D

Edit2: Io penso che questo possa essere uno schema delle possibili domande:

Programmazione in c di thread/semafori

2 tra algoritmi di disco,memoria e cpu
1 schema hardware di qualcosa come tlb e co (che non so)
1 domanda primo semestre generale(cosa son le auc e co)
1 BHO XD

ViPah
il meccanismo dei mutex lo so, ma si utilizza nel caso in cui 2 thread, operino sulla stessa funzione! NO?


Lui ha detto che mette c+teoria, quindi in teoria (asd) non ci sono altri esercizi tipo roundrobincazziemazzi. SPERO!

dellabest
No, spero che ci siano, una cosa che so. Sai che mi sa che si possono usare in entrambi i casi.Solo che nel caso operino su una stessa funzione lo trovo un bel po' inutile.
Se mette solo teoria teoria son fottuto, io ho puntato su fare il programma in C e gli algoritmi di schedulazione.

Vikyg13
Io credo che lui gli algoritmi li intenda come "teoria". Penso ci saranno almeno due domande/esercizi sugli algoritmi

Rents
Bocci del azz se dopo tutta la sbatta avuta nell imparare le funzioni

in c da soli non C dai un 30 e lode a capa altro che algoritmi che ti

insultato si passa dall' ultima versione di windows al OS FckdBocci beta.0

bill gates ci farà una pippa

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate