Advertisement
AleksandarH

POS - Semaphore 3

Dec 21st, 2022
618
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.05 KB | None | 0 0
  1. // P1.c
  2.  
  3. #include <stdio.h>
  4. #include <shared.h>
  5.  
  6. int main() {
  7.         sem_t sem1;
  8.         sem_t empty;
  9.         sem_t full;
  10.         sem_t sem2;
  11.         sem_t empty2;
  12.         sem_t full2;
  13.  
  14.         sem1 = sem_init(120621646);
  15.         empty = sem_init(220621646);
  16.         full = sem_init(320621646);
  17.         sem2 = sem_init(1120621646);
  18.         empty2 = sem_init(2220621646);
  19.         full2 = sem_init(3320621646);
  20.  
  21.         char *buff;
  22.         char b;
  23.         int i;
  24.         buff = (char *)getmem(520621646);
  25.  
  26.         for (char k = 'A'; k <= 'Z'; ++k)
  27.         {
  28.                 PS(full2);
  29.                 PS(sem2);
  30.                 PS(sem1);
  31.                 printf("%c\n", *buff);
  32.                 VS(empty);
  33.                 VS(sem1);
  34.                 VS(sem2);
  35.                 for (i = 0; i < 1000000; i++);
  36.         }
  37.  
  38.         sem_remove(sem1);
  39.         sem_remove(empty);
  40.         sem_remove(full);
  41.         sem_remove(sem2);
  42.         sem_remove(empty2);
  43.         sem_remove(full2);
  44.  
  45.         printf("\nConsumer process ended\n");
  46. }
  47.  
  48. // P2.c
  49.  
  50. #include <stdio.h>
  51. #include <shared.h>
  52.  
  53. int main() {
  54.         sem_t sem1;
  55.         sem_t empty;
  56.         sem_t full;
  57.         sem_t sem2;
  58.         sem_t empty2;
  59.         sem_t full2;
  60.  
  61.         sem1 = sem_init(120621646);
  62.         empty = sem_init(220621646);
  63.         full = sem_init(320621646);
  64.         sem2 = sem_init(1120621646);
  65.         empty2 = sem_init(2220621646);
  66.         full2 = sem_init(3320621646);
  67.  
  68.         sem_set(sem1, 1);
  69.         sem_set(empty, 1);
  70.         sem_set(full, 0);
  71.         sem_set(sem2, 1);
  72.         sem_set(empty2, 1);
  73.         sem_set(full2, 0);
  74.  
  75.         char *buff;
  76.         char b;
  77.         int i;
  78.         buff = (char *)getmem(420621646);
  79.  
  80.         for (b = 'A'; b <= 'Z'; ++b)
  81.         {
  82.                 PS(empty);
  83.                 PS(sem1);
  84.                 PS(sem2);
  85.                 *buff = b;
  86.                 VS(sem1);
  87.                 VS(full);
  88.                 VS(sem2);
  89.                 for (i = 0; i < 1000000; i++);
  90.         }
  91.  
  92.         printf("Producer process ended\n");
  93. }
  94.  
  95. // cap.c
  96.  
  97. #include <stdio.h>
  98. #include <shared.h>
  99. #include <ctype.h>
  100.  
  101. int main() {
  102.         sem_t sem1;
  103.         sem_t empty;
  104.         sem_t full;
  105.         sem_t sem2;
  106.         sem_t empty2;
  107.         sem_t full2;
  108.  
  109.         sem1 = sem_init(120621646);
  110.         empty = sem_init(220621646);
  111.         full = sem_init(320621646);
  112.         sem2 = sem_init(1120621646);
  113.         empty2 = sem_init(2220621646);
  114.         full2 = sem_init(3320621646);
  115.  
  116.         char *buff;
  117.         char *bfrz;
  118.         char b;
  119.         int i;
  120.         buff = (char *)getmem(420621646);
  121.         bfrz = (char *)getmem(520621646);
  122.  
  123.         for (char k = 'A'; k <= 'Z'; ++k)
  124.         {
  125.                 PS(full);
  126.                 PS(sem1);
  127.                 PS(sem2);
  128.                 b = *buff;
  129.                 *bfrz = toupper(b);
  130.                 VS(sem1);
  131.                 VS(sem2);
  132.                 VS(full2);
  133.                 for (i = 0; i < 1000000; i++);
  134.         }
  135.  
  136.         printf("\nCapitalization finished");
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement