Sobes.tech
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;
}