CodeGym /Kurslar /Python SELF AZ /Operativ yaddaş və məlumatların təqdim olunması

Operativ yaddaş və məlumatların təqdim olunması

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

8.1 Operativ yaddaş

Operativ yaddaş (RAM, OZU) kompüterin yaddaş hücrələrinin massivindən ibarətdir, hər bir hücrənin unikal ünvanı var. Bu hücrələrdə müxtəlif tipli məlumatlar, məsələn, ədədlər, simvollar və göstəricilər saxlanıla bilər. Proqram icra olunarkən, məlumatlarını və təlimatlarını tez əldə etmək üçün bu yaddaşda yerləşdirir.

Yaddaş hücrələrinin nümunəsi:

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79

Hər bir hücrənin öz sıra nömrəsi var, buna yaddaş hücrəsinin ünvanı və ya sadəcə ünvan deyirlər. Əgər sizin kompüterinizin 8 GB yaddaşı varsa, onun 8 milyard belə hücrəsi var ki, orada nəsə faydalı saxlamaq olar.

Bitlər və baytlar

Hər bir hücrə bir bayt informasiya saxlaya bilər. Hər bir bayt 8 bit-dən ibarətdir və hər bir bit yalnız 0 və ya 1 ola bilər. Nümunə (müsbət tam ədədlər üçün):

Ədəd Bit təqdimatı Bayt-a yuvarlaqlaşdırılmış
0 0 00000000
1 1 00000001
100 1100100 01100100
1000 1111101000 00000011-11101000
1000 000 000 111011100110101100101000000000 00111011-10011010-11001010-00000000

Bir dəyişən nə qədər çox bayt yer tutursa, o qədər çox dəyər saxlaya bilər. Nümunə:

  • 1 bayt — 256 unikal dəyər
  • 2 bayt — 65 min unikal dəyər
  • 3 bayt — 16 milyon
  • 4 bayt — 4 milyard

8.2 Məlumatlar yaddaşda necə təqdim edilir

Verilənlərin tipləri və onların təqdimatı

Sayısal məlumatlar prosessor daxilində və yaddaşda

  • Tam ədədlər: ikilik formada saxlanılır. Ölçüsü dəyişə bilər (1 bayt, 2 bayt, 4 bayt).
  • Üzdəqiqli ədədlər: üzən nöqtəli formatda saxlanılır (məsələn, IEEE 754 formatı 4-bayt və 8-bayt ədədlər üçün).

x = 42  # Tam ədəd
y = 3.14  # Üzdəqiqli ədəd

Mühüm! Python-da intfloat daxili tiplər tam siniflərdir, yəni sonsuz uzunluqlu ədədlərlə hesablamalar həyata keçirə bilərlər. Amma əgər siz elmi hesabatlar və ya süni intellekt üçün kitabxanalardan istifadə edirsinizsə, dediyim məlumat formatı ilə qarşılaşacaqsınız.

Simvol məlumatları kompüter yaddaşında

Simvollar və sətirlər yaddaşda bayt ardıcıllığı kimi saxlanılır. Məsələn, ASCII kodlaşdırmasında hər simvol 1 bayt tutur, UTF-8 kodlaşdırmasında isə 1-dən 4 baytadək ola bilər.

Python 3.x-də sətirlərdə standart olaraq UTF-8 kodlaşdırmasından istifadə edilir, amma siz başqa formatda saxlanılmış mətnləri oxuya və ya şəbəkə vasitəsilə göndərə bilərsiniz.

Nümunə:


char = 'A'  # Simvol
string = "Salam, dünya!"  # Sətir

Python-da ayrıca simvollar üçün xüsusi bir tip yoxdur — onlar üçün də str tipi istifadə edilir. Amma yaddaşda bu sətirlər simvol-simvol saxlanılır. Bir simvol adətən 1—4 bayt yer tutur.

Pointerlər

Pointerlər başqa yaddaş hüceyrələrinin ünvanlarını saxlayırlar. Onlar proqramlara dinamik verilənlər strukturları ilə işləməyə və yaddaşı daha effektiv idarə etməyə imkan verir.

Nümunə:


list = [1, 2, 3, 4]  # Siyahı
list_pointer = id(list)  # Siyahının başlanğıcına pointer

8.3 Məlumatların operativ yaddaşda təqdim olunması nümunələri

1. Tam ədədlərin təqdimatı

Tam ədədlər yaddaşda ikilik ədəd (bitlər) formasında saxlanılır. Məlumatın növündən asılı olaraq onlar müxtəlif miqdarda bayt işğal edə bilər. Məsələn, int adətən 4 bayt (32 bit) yer tutur.

Yaddaşda 42 ədədi bu formada olacaq:

00000000 00000000 00000000 00101010

2. Həqiqi ədədlərin (float növündə) təqdimatı

Həqiqi ədədlər (məsələn, float növü) yaddaşda üzən nöqtəli formatda saxlanılır, adətən IEEE 754 standartına uyğun olaraq. float adətən 4 bayt (32 bit), double isə 8 bayt (64 bit) yer tutur.

Vacib! Bunlar yaddaş və prosessorla əlaqəli standart məlumat növləridir. Python dilində float növü geniş yayılmış double növünə uyğun gəlir və 8 bayt yer tutur.

Yaddaşda 3.14 ədədi bu cür təqdim ediləcək:

01000000 01001000 11110110 01100110

3. Simvollarin və sətirlərin təqdimatı

Simvollar (məsələn, char növü) yaddaşda bayt ardıcıllığı kimi saxlanılır. Sətirlər simvollardan ibarət massivi təmsil edir. C/C++ dillərində sətirlər null bayt (\0) ilə bitir, lakin Python dilində bu belə deyil.

Hello sətiri yaddaşda bu şəkildə təqdim ediləcək:

'H' 'e' 'l' 'l' 'o'

Bu isə növbəti şəkildə sıfır və birlər kimi olacaq:

01001000 01100101 01101100 01101100 01101111

8.4 Dinamik yaddaşın adresləndirilməsi

Dinamik yaddaş proqram icra olunarkən, lazım olduqda ayrılır və sərbəst buraxılır. Python-da yaratdığınız bütün obyektlər bu yaddaşda yaradılır.

Bu yaddaş 2 növə bölünür:

Heap: Dinamik obyektlərin ayrıldığı yaddaş sahəsi. Bu yaddaşı idarəetmə ayrılma funksiyaları (məsələn, malloc C-də) və sərbəst buraxma funksiyaları (məsələn, free C-də) vasitəsilə həyata keçirilir.

Stack: Funksiya çağırışının və lokal dəyişənlərin saxlandığı yaddaş sahəsi. Yaddaş avtomatik olaraq funksiyaya daxil olarkən və onu tərk edərkən ayrılır və sərbəst buraxılır.

Yenə də Python dilində buna misal gətirə bilmirəm, çünki o, belə əməliyyatlar üçün çox yüksək səviyyəlidir. Buna görə C dilindən bir misal gətirirəm:


// 10 tam ədəddən ibarət massiv üçün dinamik yaddaşın ayrılması
int *dynamic_var = (int *)malloc(sizeof(int) * 10); 

// Yaddaşın sərbəst buraxılması
free(dynamic_var);  

Yaddaşı adresləndirmə — yaddaş hüceyrələrinin hər birinə unikal adres təyin etmə prosesidir. Hər bir adres yaddaşda xüsusi yerə işarə edir, hansı ki, məlumat və ya təlimatlar saxlaya bilər.

Adresləndirmə növləri

Fiziki adresləndirmə: yaddaş hüceyrələrinin fiziki adreslərinə birbaşa giriş. Aparat vasitəsilə idarə olunur (məsələn, yaddaş idarəedici ilə).

Virtual adresləndirmə: yaddaşın idarəetmə mexanizmini istifadə edir, məsələn, səhifələnmiş yaddaş və ya seqmentli yaddaş, proseslərə izolyasiya olunmuş və qorunan adres sahəsi təmin etmək üçün.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION