| |
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 |
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 |
|
|
|
|