3ID13B Sprawozdanie Lab 9 Programowanie Współbieżne

Programowanie współbieżne

Pamięć dzielona


Wykonanie:

Paweł Markiewicz


Laboratorium nr 9


Data: 09.12.2021


Zadanie 1
Napisać program który tworzy w pamięci dzielonej (posix) macierz kwadratową int *macA; o rozmiarze int N=12; oraz wypełnia pola o współrzędnych x,y wartościami x*y. Po wykonaniu operacji pamięć należy odłączyć. Do wykorzystania są między innymi funkcje takie jak: shm_open, ftruncate, mmap


#include <stdlib.h>

#include <stdio.h>

#include <fcntl.h>

#include <sys/mman.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <unistd.h>


#define FLAGS O_RDWR | O_CREAT


int main (int argc, char **argv)

{

int fd, *macA = NULL, n = 12, length = n * n * sizeof(int), i, j;


if (-1 == (fd = shm_open("/shm_matrix", FLAGS, 0666)))

perror("blad shm_open");

if (-1 == (ftruncate(fd, length)))

perror("blad ftruncate");

if (MAP_FAILED == (macA = mmap(NULL,length,PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)))

perror("blad mmap");

for (i = 0; i < 12; i++)

for (j = 0; j < 12; j++)

macA[12 * i + j] = i * j;

close(fd);

exit(0);

}

Zadanie 2


Napisać drugi programik, który podłączy się do wcześniej utworzonej pamięci i wypisze dowolny fragment macierzy. Do tego celu stworzyć osobną funkcję której parametry odpowiednio to wskaźnik do początku pamięci macA rozmiar boku pamięci macA współrzędne początku podmacierzy oraz rozmiar podmacierzy. Formatowanie na 3 znakach w funkcji printf to %3d.


#include <stdlib.h>

#include <stdio.h>

#include <fcntl.h>

#include <sys/mman.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <unistd.h>


#define FLAGS O_RDONLY


void show_matrix(int *macA, int msize, int x, int y, int size)

{

int i, j;

if (x + size > msize || y + size > msize)

return;


for (i = x; i < x + size; i++)

{

for (j = y; j < y + size; j++)

printf("[%3d] ", macA[msize * i + j]);

puts("");

}

}


int main (int argc, char **argv)

{

int fd, *macA = NULL, n = 12;

struct stat stat;


if (-1 == (fd = shm_open("/shm_matrix", FLAGS, 0666)))

perror("blad shm_open");

if (-1 == fstat(fd, &stat))

perror("blad fstat");

if (MAP_FAILED == (macA = mmap(NULL,stat.st_size,PROT_READ,MAP_SHARED, fd, 0)))

perror("blad mmap");

if (-1 == close(fd))

perror("blad mmap");

show_matrix(macA, 12, 0, 0, 12);

exit(0);

}




Wyszukiwarka

Podobne podstrony:
3ID13B Sprawozdanie Lab 8 Programowanie Współbieżne
3ID12A Sprawozdanie Lab 6 Programowanie Współbieżne
Mariusz Charczuk Programowanie Współbieżne Lab.1 gr. 3ID11A, Studia PŚK informatyka, Semestr 5, Prog
WYDZIA~1, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania
sprawozdanie lab 6
Programowanie Współbieżne WEISS
spr-122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
pw sc2, WAT, IV SEM, PW, koloPW, Programowanie Wspólbieżne, pw poprawa
SPRAWOZDANIE Z LAB 2 Badanie wypływu cieczy ze zbiornika
SPRAWOZDANIE LAB 4 mieszacz
Programowanie współbieżne i rozproszone w języku Java stpiczynski
Fizyka cw 123 wyniki, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI -
półprzewodnikowe złącze p-n, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LAB
Sprawozdanie Lab 1 (2)
SPRAWOZDANIE I PRZYKŁAD PROGRAMU, SPRAOZDANIE STRONA TYTUŁOWA

więcej podobnych podstron