Manajemen memori DOS

Conventional Memory

Ruang alamat ini merupakan ruang alamat yang digunakan oleh program agar dapat dieksekusi. Ukurannya hanya 640 Kilobytes saja, yang diambil dari ruang alamat 1 MB pertama. Semua program komputer yang berjalan (baik itu berjalan di latar depan atau latar belakang) menggunakan ruang area ini.

Upper Memory

Upper memory adalah ruang alamat yang dapat digunakan untuk tujuan khusus, seperti halnya untuk mengatur memori video. Ukurannya adalah sisa dari 1 MB memori pertama yang tidak digunakan oleh conventional memory, yakni 384 KB.

Extended Memory

Extended memory adalah memori tambahan setelah 1 Megabyte pertama di mana kombinasi antara upper memory block dan conventional memory berakhir. Pengguna dapat menambahkan banyak memori ke sebuah komputer, tetapi MS-DOS tidak akan menggunakannya, kecuali beberapa program yang didesain agar dapat mengakses ruang alamat Extended memory, seperti Windows.
Extended memory membutuhkan sebuah driver untuk dapat digunakan, yang disebut sebagai Extended Memory Manager, seperti halnya HIMEM.SYS. Manajer-manajer memori tersebut akan mengatur ruang alamat memori ini agar dapat digunakan oleh aplikasi yang membutuhkannya, selain tentunya mencegah agar dua aplikasi tidak menggunakan alamat memori yang sama pada satu waktu (yang dapat menyebabkan terjadinya crash/tabrakan antara dua aplikasi).

Expanded Memory

Expanded Memory merupakan sebuah jenis memori yang, seperti halnya Extended memory, dapat ditambahkan ke dalam komputer IBM PC. Penggunaanya didefinisikan di dalam spesifikasi EMS (Expanded Memory Specification). Perbedaannya terletak pada ukurannya, di mana Expanded Memory dibatasi ukurannya hingga 8 MB saja (spesifikasi EMS versi 3.2) atau 32 MB (Spesifikasi EMS versi 4.0).
Sama seperti halnya Extended memory yang tidak dapat diakses oleh program DOS. Agar dapat diakses, sebuah perangkat mutlak dibutuhkan, yang disebut dengan Expanded Memory Manager seperti halnya EMM386.EXE, yang dapat memetakan beberapa blok (disebut sebagai page) dari expanded memory ke dalam frame yang berada di dalam conventional memory (yang tentunya dapat diakses).

Bagaimana DOS mengalamati memori

DOS mengalamati memori dengan sebuah cara yang disebut dengan segmentation (segmentasi). Dalam segmentasi, ruang alamat memori akan dibagi ke dalam beberapa bagian yang disebut dengan segmen. Untuk mengalamati sebuah lokasi yang diperlukan, sebuah program harus menentukan alamat mutlak (absolute address) dengan format xxxx:yyyy di mana xxxx adalah alamat segmen dan yyyy merupakan alamat offset (ofset merupakan alamat lokasi ke berapa dari segmen tersebut yang dimulai dari permulaan segmen). Kedua bilangan tersebut direpresentasikan dalam bilangan heksadesimal. Nilai absolute address dapat dihitung dengan menggunakan perhitungan sederhana: dengan melakukan pemangkatan dengan bilangan 16 (karena memang basis yang digunakan adalah basis 16/heksadesimal) dari segmen dan menjumlahkannya dengan alamat offset. Melakukan pemangkatan alamat segmen dapat dengan mudah dilakukan, yaitu dengan menambahkan angka 0 (nol) di samping angka segmen, sehingga yang tadinya hanya berjumlah empat digit akan bernilai lima digit. Hasil dari pemangkatan ini ditambahkan dengan alamat offset, dan jadilah alamat mutlak sebuah memori.
Karena dalam real mode, memori komputer hanya dapat diakses hingga 1 MB saja, maka alamat segmen pun dibuat sedemikian rupa. DOS akan membagi 1 MB alamat ke dalam 16 segmen berukuran 65536 bita (64K), yang diberi alamat dari 0x0000 hingga 0x10000. Memori konvensional dialamatkan oleh DOS pada alamat segmen 0x0000 hingga 0xA000 (10 segmen); Upper memory dialamatkan oleh DOS pada alamat segmen 0xA000 hingga 0x10000 (6 segmen). Beberapa segmen di dalam upper memory dialokasikan untuk beberapa keperluan (tapi tidak harus begitu), yakni segmen 0xA000 dan 0xB000 disediakan untuk Video Memory; segmen 0xC000 dan 0xD000 dialokasikan untuk pengendali cakram (seperti SCSI) dan beberapa kartu lainnya; sementara segmen 0xE000 dan 0xF000 dialokasikan untuk ROM BIOS. Alokasi segmen-segmen dalam upper memory tersebut hanyalah sebuah panduan umum, dan tidak berlaku dalam setiap kasus.