judul
Breaking News
Loading...
Selasa, 14 Oktober 2014

Stack dan Heap Size pada sebuah sistem (C++ dan Mikrokontroller)

Selasa, Oktober 14, 2014
Kamu Seorang Progammer Hardware yang membutuhkan Alokasi Register Memory, Maka Kamu bukan sekedar User atau Customer yang mencopy Source Code lalu men-download ke Chip Terprogam. Tahun 2013- present, baru trend open source dari berbagai development yang mengahantam indonesia (import produk yang murah , dibanding produksi dalam negeri = mematikan perekonomian bangsa).

Stack dan Heap sekarang sudah sangat langka didengar atau dilirik oleh para progammer. Stack dan Heap bersifat tak terlihat (embedded) yang terdapat pada alokasi RAM (Variabel dengan global, lokal , fungsi dan subrutin). Ini berlaku untuk bahasa pemograman tingkat rendah maupun bahasa pemograman tingkat tinggi, jika didalam bahasa rendah (Misal : Asembler) kita bisa memperhitungkan Stack dan Heap , maka untuk bahasa tingkat tinggi (misal : C++, Basic ) hanya bisa minimalisir saja, "this is my opinoin".  

Progammer : Kamu bisa menulis, tapi kamu tidak bisa memahami tulisanmu, berarti kamu belum paham dan secara teori kamu hanya sekedar bisa.

Stack dan Heap adalah alokasi register RAM yang merupakan dasar untuk sistem embedded.Pengaturan keduanya harus benar dan teliti, ini sangat penting untuk stabilitas dan keandalan suatu sistem. Penggunaan yang tidak sesuai, mengakibatkan sisten menjadi kacau (aneh) dan mal-fungsi. Memori Stack dan heap harus dialokasikan statis oleh programmer, tetapi menghitung ruang yang dibutuhkan untuk stack pada umumnya sulit secara keseluruhan kecuali yang sistem embedded yang terkecil .

Menganggap remeh penggunaan stack dapat menyebabkan runtime error yang serius, ini sangat sulit untuk menemukan masalah error tersebut. Heap memory  meluap (overflow) juga dapat berdampak signifikan pada keadaan sistem, biasa terjadi penundaan pada sistem, tentu ini sangat sulit men-debugnya. "bayangkan jika kamu menulis syntax progam hingga 4000 baris, hang pada sistem, maka menelusiri error akan sulit".

Embedded system yang memiliki sumber momeri yang terbatas, terutama space pada RAM. Jelas ada kebutuhan untuk meminimalkan memori stack dan heap dalam lingkup yang terbatas ini. Masalah umum untuk embedded system adalah bahwa tidak ada mekanisme memori virtual; alokasi stack, heap dan data global (yaitu variabel, TCP / IP, buffer USB, dll) yang statis dan dilakukan pada saat aplikasi dibangun.

Yuk Ke Penjelasan Teoritis tentang istilah STACK dan HEAP.

Stack
Stack merupakan sebuah area pada RAM dimana progam disimpan secara data temporary selama eksekusi pada blok Code. stack dialokasikan secara statik dan operator pada basis "last in fisrt out"/ terakhir masuk keluar pertama. Masa pakai dari variabel pada stack terbatas pada durasi fungsi (function). Begitu fungsi kembali , stack memori yang digunakan akan bebas untuk digunakan oleh panggilan fungsi ( call function / subroutien) berikutnya.

Tipe data yang disimpan pada stack , meliputi :
    local variables
    return addresses
    function arguments
    compiler temporaries
    interrupt contexts
Contoh Dalam code yang ditulis menggunakan CodevisionAVR:

int jumlah(int x,int y)
{
   int hasil;=0;
   return hasil = x+y;
}

void main()
{
int temp=0;
char buff[30];
temp=jumlah(1+2);   //--> stack memory pemanggilan fungsi.
sprintf(buff,"%d",temp);
lcd_gotoxy(0,0);
lcd_puts(buff)
}

Heap
Heap merupakan padda RAM yang mewakili memori dinamis pada sistem. Ketika salah satu modul tidak perlu memori yang dialokasikan lagi, pengembang harus mengembalikannya ke alokasi memori untuk digunakan kembali oleh beberapa modul lain. Memori dinamis membuat berbagi memori mungkin antara bagian yang berbeda dari sebuah program. Seperti dengan alokasi stack, penting untuk meminimalkan penggunaan heap di embedded system; memang, memori dinamis dan stack terdapat dalam banyak kasus dianggap opsional di embedded system.

beberapa contoh data yang ditempatkan di heap meliputi: 
  • Transient data objects
  • C++ new/delete
  • C++ STL containers
  • C++ exceptions
 misalkan dengan menambah library pada progam utama, ini juga berperngaruh pada memori heap.
     #include lcd.h
     #include stdi.h

Untuk meminimalisir Heap dan Stack, maka buatlah subroutien / fungsi yang simple dan tidak terlalu banyak pengulanngan, serta penggunaan variable yang lokal saja, jika terpaksa global variable maka gunakan dengan bijak. Masukkan library yang memang dibutuhkan saja, jikalau bisa oprek library dan buat sebagai subroutien sendiri.

Well, terimakasih telah membaca artikek tentang Stack dan Heap Size pada sebuah sistem (C++ dan Mikrokontroller). Maaf jikalau saya tidak menyinggung mikrokokntroller pada artikel diatas, karena saya jelaskan secara tersirat.

0 komentar:

Posting Komentar

 
Toggle Footer