Cara menjalankan memori dalam program: sedikit demi sedikit

Pembaharuan Terakhir: 10/23/2025
  • Penyimpanan memori (cache, RAM, penyimpanan) menentukan latensi, biaya, dan ketekunan.
  • Prosesnya adalah membangun kode, data estetika, tumpukan dan tumpukan, semua dengan siklus hidup yang tepat.
  • Di C, ukuran y & anak penting untuk tujuan dan arah; pila es automática dan heap, manual atau GC.
  • RAM sangat cepat dan mudah menguap; daya tahan yang kuat dan memori yang kuat secara virtual.

memoria en programacion

Jika memori dalam program terpecahkan, tidak hanya itu: antara perangkat keras, tumpukan, tumpukan, dan segmen data dengan mudah dilakukan. Panduan teks dari yang paling dasar (bit dan byte) ini bagaimana proses mengatur kode, data, dan struktur dinamis, perhatian khusus pada C y con guiños a lo que ves en el Administrador de tareas en Windows.

Sebelum memasuki hari itu, kami akan membacakan film lengkapnya: memoria de un programa se apoya en la memoria física del ordenador y en jerarquía de capas (cachés, RAM, almacenamiento), dan sistem operasi membagi ruang proses ke dalam zona seperti kode yang dapat dikeluarkan, data estetika, tumpukan, dan tumpukan. Dengan cara ini, maksudnya lebih baik karena variabel “hidup” tetapi yang lain harus segera mengakhiri program.

Dari bit ke byte: sangat tidak mengesankan

Semuanya dapat dibangun dari unit minimum: bit, yang hanya dapat bernilai 0 o 1; los bits se agrupan en bytes (ocho bits por byte en la práctica moderna), dan seberapa besar kemampuan program Anda untuk menggunakan beberapa byte sesuai dengan jenis data dan bagaimana kompiler menafsirkannya.

Sebuah detail yang sering luput dari perhatian: tamaño de tipos como in no es idéntico en allas las plataformas. Arsitektur 32 bit biasanya berukuran 4 byte; dalam ukuran 64 bit, biasanya berukuran 8 byte, meskipun normanya persis bergantung pada model data yang menggunakan kompiler dan sistem.

Untuk mewakili hal-hal negatif, konvensi dominan adalah pelengkap dari dua hal; representasi ini menyederhanakan operasi aritmatika dan mencegahnya memahami tanda seperti suatu hal yang khusus, oleh karena itu adopsi sebagian besar CPU dan kompilasi.

Ketika program di C, tidak ada “a ojo”: menggunakan operator sizeof untuk menjalankan tugas dalam bytes dari satu jenis atau satu variabel konkret di platform Anda. Karena sangat rapuh dalam bekerja dengan buffer, struktur dan sistem menjadi sangat presisi.

Juga di C, operator unario & (ampersand) berada di arah memori byte primer dari suatu variabel; dengan keberanian ini, sebuah puntero dapat “señalar” dan tidak hidup secara nyata el data en memoria, itu dari beberapa pasar referensi dan fungsi atau blok perekam yang berdekatan.

Dan, ya, ini adalah pengucapan yang sederhana: “byte” jika Anda kemudian mengatakan “umpan”. Tidak ada pengecualian, tetapi poinnya tepat.

Memoria física and jerarquía: qué hay debajo del capó

Prinsip memori (RAM) yang peralatan Anda miliki adalah dengan sirkuit yang dibentuk oleh transistor dan kapasitor; setiap celda menerima sedikit, dan sirkuit menyegarkan muatannya secara berkala sehingga tidak menembus data beberapa saat lagi ada makanan. Ini adalah tipikal DRAM (Dynamic RAM).

Ada berbagai kelas memori, dengan berbagai kecepatan dan biaya: SRAM (cepat, volátil, digunakan seperti cache), DRAM (lebih banyak dan lebih barat, berdasarkan RAM sistem), VRAM (khusus grafis), ROM (tanpa volátil), flash (tidak ada volátil dan regrabable), memori virtual dan memori kelas penyimpanan atau SCM yang bermaksud untuk mencapai jarak antara RAM dan secara tradisional.

RAM sangat mudah berubah dan cemerlang untuk saat ini: proporsi akses yang cepat ke data yang dibutuhkan CPU “ya”, biaya yang dimilikinya untuk ditembus ketika peralatannya habis. Oleh karena itu dapat disimpan dengan penyimpanan sekunder (HDD, SSD, optik), yang lebih besar tetapi tetap dan lebih rendah dari gigabyte.

Tentang memori cache yang berisi subrayar kertas: itu adalah memori yang sangat cepat dan juga mudah berubah sehingga dapat diaktifkan antara CPU dan RAM, menyimpan data dan petunjuk penggunaan segera untuk mengurangi latensi. Tanpa itu, setiap program yang dijalankan akan menghilangkan konstanta yang diperlukan pada RAM.

Ketika RAM tidak ada, masukkan ke dalam memori virtual: sistem operasi cadangan ruang dalam unit penyimpanan untuk simular lebih banyak memori utama; “ampliasi” ini jauh lebih lambat, namun memungkinkan proses tersebut berfungsi dengan biaya antar halaman ke dalam RAM dan disk.

Di tengah-tengah pusat data, termasuk penjelajahan melalui media: teknologi clase de almacenamiento (SCM) dengan baja latencia dan persistencia, dan ada solusi komersial yang mengintegrasikan modul cache khusus dalam kabin yang kokoh untuk mempercepat pembacaan data penting dan analitik tanpa membedakan biaya RAM.

Oleh karena RAM itu adalah clave (y qué no puede darte)

Tanpa RAM, CPU cenderung setiap kali memutar data dan instruksi; meskipun SSD modern Vuelan sudah ada sejak lama karena RAM dan latensinya. Oleh karena itu semua perangkat, ponsel di server, memasang RAM agar sistem merespons dengan lancar.

Su gran “tapi” itu mudah berubah: apagas el equipo dan kehilangan bit desaparecen. Ini dia, jika ada arsip yang tidak dijaga, perubahannya terjadi karena ada sisa dalam RAM. Untuk menghemat, Anda harus menulis terlebih dahulu secara terus-menerus.

Prinsip memoria, almacenamiento primario dan secundario

Dalam bahasa yang digunakan adalah istilah yang sangat spesifik, sehingga dapat dipisahkan. Memori utama termasuk RAM (volátil) dan ROM (no volátil), dan dapat diakses langsung oleh CPU. Menunya adalah “memoria prinsipal” atau “prinsipal” dalam beberapa detik.

Memori utama

  • Acceso directo de la CPU untuk ceramah dan penulisan dengan kecepatan tinggi.
  • RAM volátil dan ROM tidak volátil hidup berdampingan, masing-masing dengan kertasnya.
  • Ini adalah bidang pekerjaan langsung dari sistem operasi dan aplikasi.

penyimpanan utama

  • Jika Anda menggunakannya berkali-kali seperti paraguas yang menyertakan memoria utama y rekursif lain dari operasi lain, tentang semua hal di perusahaan-perusahaan.
  • Tindakan seperti yang dapat dilakukan di CPU dan penyimpanan kedua untuk movilizar datos con fluidez.

Penyimpanan sekunder

  • Disko duros, SSD, unit optik dan sejenisnya, tidak dapat diakses langsung oleh CPU.
  • Gigih dan kemampuan besar, ideal untuk ruang besar dan salinan keamanan, mengorbankan kecepatan dari depan ke RAM.

La norma práctica es clara: semua yang perlu Anda simpan adalah menjaganya agar tidak mudah menguap; memori utama te da rendimiento en caliente, tapi tidak tahan lama karena itu. Dalam pusat data, Anda harus menggunakan “almacenamiento prime” untuk merujuk pada kumpulan media yang optimal untuk merespons dengan cepat muatan intensif E/S dan IOPS.

Bagaimana mengatur memori sebuah program: las cuatro zonas clave

Ketika Anda menjalankan sebuah program, sistem operasi menyiapkan ruang arahannya dan membaginya ke dalam zona-zona yang logis. Apa yang paling relevan adalah: kode yang dapat dikeluarkan, data estetis, pila (tumpukan) dan tumpukan. Setiap orang memiliki aturan hidup dan penggunaan yang berbeda.

Memoria de código: adalah propio binario (yang dihasilkan oleh kompiler dari kode sumber). Bagian ini berisi instruksi mesin yang dijalankan CPU y, dengan aman, itu akan menjadi ceramah tunggal dan dapat dieksekusi.

Memoria de datos estáticos: ini dia tentang variabel global dan estetika. Jika Anda melakukan reservasi ketika program telah diatur dan akan tetap ada sampai akhir, karena itu adalah cita-cita untuk konfigurasi atau keadaan yang harus ditahan sepanjang seluruh proses.

Pila de llamadas (stack): setiap kali suatu fungsi masuk ke dalam escena, itu “apila” sebuah konteks baru (bingkai) dengan parameter dan variabel lokalnya. Untuk menyerahkan kendali (kembali), Anda akan “menghilang” dan bidang tersebut akan secara otomatis gratis.

tumpukan: adalah zona untuk menyimpan memori dinamis selama pengeluaran. Silakan untuk struktur apa pun yang Anda inginkan atau tidak ada yang bisa dikumpulkan dalam kompilasi (listas, árboles, buffers leídos de archivo, dll.). Ini (atau runtime/GC) akan berguna dalam hidup Anda.

Sebuah operasi yang berhasil: dalam banyak implementasi, la pila crece y decrece “desde arriba” dari espacio reservado, sementara tumpukan itu lo hace “desde abajo”; Batasan stabilitas sistem dan dalam batas ini, ada area yang berfluktuasi sesuai kebutuhan.

Pila de llamadas: yang terjadi pada fungsi panggilan

Fungsinya sama dengan struktur LIFO (yang terakhir masuk, pertama kali keluar). Setiap pemanggilan membuat bingkai berdasarkan arah tangkapan layar, parameter, dan lokal, menu colocados de forma contigua untuk menyetujui referensi lokal.

Si encadenas llamadas como saludar(1), saludar(2), saludar(3), benar, bagaimana frame menyala dan desapilan berturut-turut. Mekanisme ini secara otomatis menyederhanakan kehidupan: tidak perlu “membebaskan” variabel lokal; mematikan fungsi.

Jadi, ada batasan praktisnya: sebuah rekursi yang mendalam atau cadangan array besar dalam tumpukan yang dapat dideskripsikan, menyebabkan tumpukan meluap. Untuk struktur yang besar atau tidak dapat ditembus, tumpukan itu lebih tepat.

Tumpukan: memoria dinámica bajo demanda

Bayangkan Anda membuka file atau konsol dan tidak tahu apa-apa. Tumpukan itu akan meledak saat sedang dikeluarkan dan gerakan-gerakan dalam kehidupan dengan disiplin (liberándolos cuando ya no se usan).

Di C, biasanya reservasi dan pembebasan dengan cara yang jelas; dalam bahasa dengan Recolector de Basura (GC), waktu proses memutuskan kapan memulihkan memori. Dalam hal ini, menghindari kebocoran dan duplikat kepemilikan yang sulit dipertahankan.

Sepuluh presentasi fragmentasi: banyak cadangan dan pembebasan taman yang berbeda dapat menyebabkan “huecos” tidak disetujui. Penandatangan strategi aplikasi modern untuk mengurangi efek ini, tetapi pelanggan penggunaan aplikasi Anda juga penting.

Petunjuk dan tamaños di C: & y sizeof como brújula

Jika Anda ingin memeriksa platform Anda, jelaskan program kecil yang ukuran maksimumnya berbeda-beda (char, int, long, punteros…). Anda dapat melihat dengan tepat jumlah byte yang ditempati setiap tahun dan dapat menentukan struktur dan protokol yang presisi.

Ketika lebih banyak arah mengarah ke suatu variabel, mendapatkan lokalisasi byte primer Anda. Dari sini, jenis titik yang ditunjukkan oleh kompiler seperti menafsirkan blok memori ini, sejumlah byte maju dan sebagai akses linier.

Relaciona esto con la pila: variabel-variabel lokalnya dapat disimpan secara berurutan, yang menjelaskan mengapa array perekam lokal sangat efisien (menyetujui lokal dan cache prosesor).

Objek dan POO: ciclo de vida dan ubicación

Dalam pemrograman yang mengorientasikan suatu tujuan, “menjalankan hidup” suatu tujuan bergantung pada bahasa dan patron penggunaan. Dalam C++ dapat membuat objek otomatis (dalam tumpukan) atau uang (dalam tumpukan); di Java atau C#, objek-objek tersebut biasanya berada di tumpukan runtime, dan ada referensi.

Berikut detail pengaruhnya pada semantik: obyek-obyek yang ada di tumpukan batu yang indah dan biaya pembuatan/penghancuran yang sangat buruk; bagian heap adalah bagian utama di antara struktur dan modul, perubahan manajemen tambahan (manual atau GC).

Apa yang ada di Windows 10: Administrator de tareas y memoria

Ketika Anda menggunakan Administrator tugas, cifra de memoria de un proceso te muestra, simplificando, su conjunto de trabajo (working set) dan consumos agregados lainnya. Parte de esa memoria es privada (hanya proses Anda di Amerika Serikat) dan lainnya adalah compartida (modul sistem, biblioteca).

Selain itu, Windows menggunakan “kompromi” (berkomitmen), yaitu janji bahwa sistem dapat memulihkan cadangan Anda dengan RAM atau pengarsipan halaman. Oleh karena itu, mungkin ada lebih banyak memori “kompromi” yang secara fisik ada di RAM jika ada paginación.

Con esa traducción mental, apa yang disebut “pila” dan “heap” tidak muncul seperti barras separadas; di sisi lain, ini adalah halaman global yang ditugaskan, partisipan, dan penduduk. Untuk diagnosis akhir, gunakan alat seperti Monitor berulang atau kesalahan yang melibatkan tumpukan, tumpukan, dan segmen.

Tips praktis untuk tidak mengingat memori

Primero, mide y verifica: tidak ada asuma tamaños; membuka ukuran dan mendaftarkan konsumsi nyata. Kedua, tetapkan memoria donde tenga sentido: pila para cosas pequeñas y efímeras; tumpukan untuk koleksi dan struktur kehidupan yang diperluas.

Tanggung jawab Evita mezclar: jika ada fungsi cadangan, yang juga gratis, atau dokumen yang jelas adalah “dueño”. Dalam C dan C++, kontrak kepemilikan adalah solusi media untuk mengatasi masalah dan pembebasan ganda.

Piensa en la jerarquía: mengakses formulir lineal dan dapat diterima di cache, dan itu akan dilakukan dalam waktu dekat. Mengatur ulang struktur (SoA vs AoS) jika diperlukan semua CPU.

Y recuerda las limitaciones: RAM itu cepat, tapi terbatas dan mudah menguap. Asegura persistencia cuando toque (guardar antes de cerrar) dan pertimbangkan mecanismos de memoria virtual, mapeos y SCM if you carga los puede aprovechar.

Pada akhirnya, jangan abaikan pedagogi “evaluasi otomatis”: menanam tanaman yang sensitif terhadap zona yang ada di setiap tempat, ketika Anda sedang sibuk dan sedang beristirahat mereka harus berhenti bekerja dengan buruk sebelum melanjutkan produksi.

Jika sudah jelas bagian-bagiannya —bit dan byte, jerarquía de memoria, dan las cuatro zonas del proceso—, apa yang terjadi dengan magia negra pasa adalah sebuah patron yang masuk akal yang bisa Anda dapatkan dengan hasil dan kegagalan.

Pos terkait: