Tak jak w temacie. Mam do wykonania takie zdanie jak poniżej je przedstawiam (tekst pogrubiłem ponieważ w znacznikach "code" wyświetlał się on przynajmniej u mnie w jednej ciągłej linii). Proszę o pomoc w napisaniu takiego zadania.
Procesor o prędkości 2 MIPS wykonuje około 2 instrukcji na mikrosekundę. Przyjmując, że każdy tik zegara sprzętowego powoduje wygenerowanie przerwania, podaj powody, dla których rozdzielczość zegara nie wynosi 1 mikrosekundę. Napisz program liczący, ile razy wartość zwracana przez funkcję gettimeofday zmienia się w ciągu jednej sekundy. Zmodyfikuj swój program tak, aby wyświetlał te różnice.
Kolega podał mi taki program.
Kod: Zaznacz cały
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct timeval tv1,tv2;
struct timezone tz1;
long int t=0;
int ile_zmian=0;
int ile_wykonan=0;
long int temp;
long int roznice[1000000];
int i;
gettimeofday(&tv1, &tz1);
while(t<1000000)
{
gettimeofday(&tv2, &tz1);
ile_wykonan++;
if(tv2.tv_usec!=tv1.tv_usec)
{
temp=tv2.tv_usec-tv1.tv_usec;
if(temp<0)
{
temp+=1000000;
}
tv1=tv2;
t+=temp;
printf("%ld\n",temp);
}
}
printf("Czas wykonania programu: %ld us\n",t);
printf("Funkcja gettimeofday zmienila wartosc %d razy\n",ile_zmian);
printf("Funkcja gettimeofday wykonala sie %d razy\n",ile_wykonan);
printf("Rozdzielczosc zegara systemowego wynosi ok. %f us\n", 1000000.0/(float)ile_zmian);
return 0;
}
int ile_zmian=0;
odnosi się do tego "[...]wartość zwracana przez funkcję gettimeofday zmienia się w ciągu jednej sekund[...]" - z treści zadania.
Dalej mam pytanie do czego służy ta zmienna "int ile_wykonan=0;" w tym programie. Natomiast ta zmienna "long int roznice[1000000];" odnosi się różnic (niestety nie wiem do jakich) występujących w ciągu jednej sekundy dobrze to rozumiem?
Poniżej tych zmiennych jest cały kod programu, który pokazuje / liczy te zmiany występujące z treści zadania.
Tutaj następuje moja prośba. Muszę zmienić ten program co jest rzeczą oczywistą. Więc poza samymi zmianami nazw zmiennych jak można zmodyfikować ten program aby "robił / liczył" tak jak to wykonuje teraz? Oraz zastanawiam się nad tą częścią zadania "[...]Zmodyfikuj swój program tak, aby wyświetlał te różnice."
PS: Proszę nie usuwać tego tematu. Te wiadomości są mi potrzebne do szkoły. Dokładnie muszę wysłać te rozwiązanie do Niedzieli to jest do dnia 17.10.2010 do godziny 8.00
PS: Jeśli coś moim poście jest nie stosownego według Adminów/Moderatorów będę to poprawiał.