Prekidačke algebre UVOD
Objavio vukmladenovic 19. februar 2024.
Objavio NikolijaV 18. oktobar 2012. Prijavi dokument
Zad 1. Jun 2005.
Potrebno je realizovati drajver (device driver) za jedan izlazni, znakovno orijentisani uređaj, pri čemu korisnički proces može zadati prenos čitavog niza znakova koje će DMA upisivati na uređaj znak po znak. Korisnički proces koji zadaje izlaznu operaciju svoj zahtev predstavlja sledećom strukturom:
struct DeviceRequest {
char* block; // Pokazivač na niz znakova koje treba preneti na uređaj
unsigned long size; // Veličina niza znakova
Semaphore* toSignal; // Semafor koji treba signalizirati po završetku op.
};
Korisnički proces svoj zahtev zapisan u ovakvoj strukturi upisuje u ograničeni bafer koji predstavlja red postavljenih zahteva, a potom se blokira na semaforu na koji ukazuje pokazivač toSignal. Semafor je standardni, brojački semafor sa uobičajenim operacijama signal i wait. Ograničenom baferu pristupa se sledećim operacijama koje su blokirajuće ukoliko je bafer pun, odnosno prazan:
void putDeviceRequest (DeviceRequest*); // Stavlja jedan zahtev u red
DeviceRequest* getDeviceRequest(); // Uzima jedan zahtev iz reda
Sama izlazna operacija obavlja se preko DMA uređaja kome se prenos niza znakova block veličine size iz memorije na uređaj zadaje i pokreće sledećom neblokirajućom operacijom:
void DMARequest (char* block, unsigned long size);
Kada završi prenos bloka podataka, DMA generiše prekid kome pripada ulaz 10h u vektor tabeli. Korišćenjem navedenih operacija (za koje se pretpostavlja da su implementirane) i već realizovanih koncepta događaja i niti, sa interfejsima kao što je definisano projektnim zadatkom za domaći rad, napisati kompletan kod ovog drajvera uređaja.
Objavio vukmladenovic 19. februar 2024.
Objavio Ivan86 12. februar 2024.
Objavio SvetlanaT 12. januar 2024.
Objavio Dijana994 25. april 2024.
Objavio mitrovicm993 24. april 2024.
Objavio Dragica Stanisic 24. april 2024.
Komentari
You must be logged in to post a comment.