Процесс удирдлагын санах ой чөлөөлөх системийн дуудалт

Процесс

Процесс удирдлагын санах ой чөлөөлөх системийн дуудалт

Компьютерийн үйлдлийн системд процессын удирдлага болон санах ойн удирдлага нь хоорондоо нягт холбоотой бөгөөд системийн дуудлагууд нь янз бүрийн ажлуудад үйлдлийн системийн цөмтэй харилцахад ашиглагддаг. Гэсэн хэдий ч стандарт "санах ойгүй" системийн дуудлага байдаггүй. Үүний оронд санах ойн менежмент нь ихэвчлэн процессуудад санах ойг хуваарилах, хуваарилах явдал юм. Ердийн үйлдлийн системд санах ойн менежмент хэрхэн ажилладаг тухай.

  1. Санах ойн хуваарилалт: Процесс үүсгэх үед код, өгөгдөл, стекийг хадгалахад санах ой хэрэгтэй. C эсвэл C++ хэл дээрх malloc() функц эсвэл C++ хэл дээрх шинэ операторыг динамик санах ойг хуваарилахад ашигладаг. Зарим системд санах ойг хуваарилахын тулд mmap() гэх мэт системийн дуудлагуудыг ашиглаж болно. Процесс нь тодорхой санах ойн блок шаардлагагүй болсон үед түүнийг үйлдлийн систем рүү гаргах ёстой. Динамик санах ойг задлахад C эсвэл C++ хэл дээрх free() функц эсвэл C++ дээрх устгах операторыг ашигладаг. Зарим тохиолдолд санах ойг задлахад munmap() гэх мэт системийн дуудлагуудыг ашиглаж болно.
  2. Санах ойн хамгаалалт: Орчин үеийн үйлдлийн системүүд нь өөрийн эзэмшдэггүй санах ойд хандах процессоос сэргийлэхийн тулд санах ойн хамгаалалтыг хангадаг. Эдгээр дүрмийг зөрчих нь сегментчлэлийн алдаа эсвэл бусад алдааг үүсгэж болзошгүй.
  3. Виртуал санах ой: Олон үйлдлийн системүүд нь виртуал санах ойг ашигладаг бөгөөд процессууд нь физик санах ойн хэмжээ бага байсан ч гэсэн том, зэргэлдээ хаягийн орон зай мэт төсөөлөгддөг. Үйлдлийн систем нь виртуал болон физик санах ойн хоорондох зураглалыг удирддаг.
  4. Хуудас солих: Виртуал санах ойтой системүүдэд хуудас солих алгоритмыг физик санах ой хангалтгүй үед физик санах ой болон хадгалах (жишээ нь, хатуу диск) хооронд өгөгдөл солилцоход ашигладаг.
  5. Санах ойн зураглал: Санах ойн зураглал нь файл эсвэл төхөөрөмжийг процессын хаягийн зайд буулгах боломжийг олгодог. Үүнийг Windows дахь mmap() эсвэл CreateFileMapping гэх мэт функцуудыг ашиглан хийж болно.
  6. Хуваалцсан санах ой: Процессууд нь хуваалцсан санах ойн бүсүүдийг ашиглан мэдээлэл солилцож, хуваалцах боломжтой. shmget() болон shmat() гэх мэт системийн дуудлагуудыг Unix-д суурилсан системд энэ зорилгоор ашигладаг.
  7. Системийн дуудлагын интерфэйс: Эдгээр санах ойн удирдлагын бүх үйлдлүүд нь ихэвчлэн системийн дуудлагуудаар илэрдэг. Системийн тусгай дуудлагууд нь ашиглаж буй үйлдлийн системээс хамаарч өөр өөр байж болно.
#include <stdio.h>[засварлах | кодоор засварлах]
#include <stdlib.h>[засварлах | кодоор засварлах]
int main() {[засварлах | кодоор засварлах]
    int *ptr = (int *)malloc(sizeof(int));[засварлах | кодоор засварлах]
    if (ptr == NULL) {[засварлах | кодоор засварлах]
        printf("Алдаа заасан тул программыг гаргав.\n");[засварлах | кодоор засварлах]
        return 1;[засварлах | кодоор засварлах]
    }[засварлах | кодоор засварлах]
    *ptr = 42;[засварлах | кодоор засварлах]
    printf("Утга нь: %d\n", *ptr);[засварлах | кодоор засварлах]
    free(ptr);[засварлах | кодоор засварлах]
    ptr = NULL;[засварлах | кодоор засварлах]
    return 0;[засварлах | кодоор засварлах]
}[засварлах | кодоор засварлах]

Энэ код нь C хэл дээрх санах ойн хуваарилалт болон задралын энгийн дүрслэл юм. Санах ой алдагдах болон бусад асуудлаас зайлсхийхийн тулд бодит хэрэглүүрүүдэд санах ойн хуваарилалт болон хуваарилалтыг сайтар зохицуулах нь чухал юм.