Junior — Middle
Ποιος μηχανισμός ευθύνεται για τη δημιουργία τμημάτων κοινής μνήμης για τις διαδικασίες;
sobes.tech AI
Απάντηση από AI
Ο μηχανισμός που είναι υπεύθυνος για τη δημιουργία τμημάτων κοινής μνήμης για τις διαδικασίες ονομάζεται Shared Memory (κοινή μνήμη). Σε λειτουργικά συστήματα όπως Unix/Linux, υλοποιείται μέσω κλήσεων συστήματος, όπως shmget, shmat, shmdt και shmctl.
Η κοινή μνήμη επιτρέπει σε πολλές διαδικασίες να μοιράζονται ένα ίδιο τμήμα μνήμης, επιταχύνοντας σημαντικά την ανταλλαγή δεδομένων σε σύγκριση με άλλες μεθόδους διαμεσολάβησης μεταξύ διαδικασιών (IPC).
Παράδειγμα χρήσης σε C (απλουστευμένο):
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <string.h>
int main() {
key_t κλειδί = 1234; // μοναδικό κλειδί
int shmid = shmget(κλειδί, 1024, 0666|IPC_CREAT); // δημιουργία τμήματος
char *δεδομένα = (char*) shmat(shmid, NULL, 0); // σύνδεση με το τμήμα
strcpy(δεδομένα, "Γειά από την κοινή μνήμη!");
printf("Δεδομένα στην κοινή μνήμη: %s\n", δεδομένα);
shmdt(δεδομένα); // αποσύνδεση από το τμήμα
// shmctl(shmid, IPC_RMID, NULL); // διαγραφή τμήματος αν χρειάζεται
return 0;
}