Data segment

Data Segment (Data + BSS + Heap)
“Data section” нь аливаа программын тодорхой нэг хэсэгт байрлах хийсвэр хаягийн санах ой бөгөөд тухайн ачааллаж байгаа программын глобал болон тогтмол хувьсагчдыг агуулна. Программист нь эдгээр хувьсагчдийг код бичих явцад зарлаж өгнө.“Data section”-д байрлах “дата сегментүүд” нь программ ачааллаж байхад өөрчлөгдөж болох учраас “read-write” төрөлд хамаарагдах ба утга нь үл өөрчлөгдөх “дата сегментүүд” нь “read-only” төрөлд хамаарагдана. PC архитектур нь “read-write” төрлийн цөөн хэдэн санах ойн мужуудыг хуваарилдаг бөгөөд эдгээр нь: Data, Stack болон Code мужууд юм.
Жишээлбэл:
- char s[] = "hello world" –д агуулагдах string утга нь “read-write” хэсэгт хамаарна. ( hello world )
- char* string = "hello world" кодын мөрний ("hello world") string төрлөөр зарлагдсан учир “read-only” хэсэгт хадгалагдаж “String” –төрлийн заагч нь “read-write” хэсэгт байрална.
- static int i = 10 болон global int i = 10 нь “Data segment”-д хадгалагдана.
BSS
"BSS" Сегмент буюу анхны утга олгогдоогүй дата нь аливаа дата сегментийн төгсгөл хэсэгт ажиллаж эхлэх бөгөөд глобал хувьсагчид болон анхны утга нь 0 ба “source” кодонд тодорхой эхлэлгүй хувьсагчдыг агуулна. Жишээлбэл: “static int i; “ –д зарлагдсан хувьсагч нь BSS сегментэд хадгалагдана.
Heap
"Heap" хэсэг нь BSS сегментийн төгсгөл хэсгээс эхлэх бөгөөд том хаягууд болгон өөрчилнө. Heap хэсэг нь malloc, realloc болон тэдгээрийн хэмжээг тохируулах brk, sbrk системийн командуудыг ашигладаг free гэсэн 3 үйлдлээр зохион байгуулагдана. Heap нь тухайн процессийн нээлттэй сангууд болон динамикаар ачааллагдсан модулиудад ашиглагдана.