Jumat, 31 Mei 2013

Management Memory

Konsep Dasar Memori
Memori adalah pusat dari operasi pada sistem komputer modern, berfungsi sebagai tempat penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya. Memori adalah array besar dari word atau byte, yang disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter.
Sedangkan manajemen memori adalah suatu kegiatan untuk mengelola memori komputer. Proses ini menyediakan cara mengalokasikan memori untuk proses atas permintaan mereka, membebaskan untuk digunakan kembali ketika tidak lagi diperlukan serta menjaga alokasi ruang memori bagi proses. Pengelolaan memori utama sangat penting untuk sistem komputer, penting untuk memproses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung sebanyak mungkin proses dan sebagai upaya agar pemogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer (Eko, 2009).
Memory manager merupakan salah satu bagian sistem operasi yang mempengaruhi dalam menentukan proses mana yang diletakkan pada antrian.

Jenis Memori
a)      Memori Kerja
b)      ROM/PROM/EPROM/EEPROM
c)      RAM
d)     Cache memory
e)      Memori Dukung
f)       Floppy, harddisk, CD, dll.
Alamat Memori
a)      Alamat memori mutlak (alamat fisik)
b)      Alamat memori relatif (alamat logika)
c)      Hubungan antara alamat multak dan alamat relatif
d)     Jenis memori dan alamat memori
Isi Memori
a)      Sistem bahasa penataolahan
b)      Sistem Utilitas
c)      Inti Sistem Operasi
d)     Sistem Operasi
e)      Pengendali alat (device drivers)
f)       File pemakai
Fungsi Manajemen Memori
a)      Mengelola informasi yang dipakai dan tidak dipakai.
b)      Mengalokasikan memori ke proses yang memerlukan.
c)      Mendealokasikan memori dari proses telah selesai.
d)     Mengelola swapping atau paging antara memori utama dan disk.
Sistem operasi memberikan tanggapan terhadap manajemen memori utama untuk aktivitas-aktivitas sebagai berikut:
a)      Menjaga dan memelihara bagian-bagian memori yang sedang digunakan dan dari yang menggunakan.
b)      Memutuskan proses-proses mana saja yang harus dipanggil kememori jika masih ada ruang di memori.
c)      Mengalokasikan dan mendelokasikan ruang memori jika diperlukan
Jenis-Jenis Manajemen Memory
Manajemen Memory Untuk Monoprogramming
Bila program komputer yang dijalankan hanya satu jenis selama proses berlangsung maka dikatakan mode kerja komputer itu adalah monoprogramming. Selama komputer itu bekerja maka memory RAM seluruhnya di kuasai oleh program tersebut. Jadi  RAM tidak dapat di masuki oleh program lain. Mode serupa ini di temui pada komputer berbasis DOS.
Penempatan program di memory  diatur sedemikain rupa sehingga (Eko, 2009) :
a)      BIOS selalu di ROM (BIOS)
b)      Sistem Operasi  di RAM bawah (alamat rendah)
c)      Program Aplikasi di RAM tengah (alamat sesudah OS terakhir)
d)     Data Sementara di RAM atas (alamat sesudah Aplikasi terakhi).
Bila sistem operasi telah selasai dimuat maka tampillah prompt di layar monitor, dan itu adalah tanda bahwa komputer siap menerima program aplikasi. Letakkan disk yang berisi program aplikasi pada diskdrive yang aktif lalu eksekusi , sehingga program itu termuat  seluruhnya ke RAM. Dengan demikian program aplikasi siap digunakan menurut semestinya.Kita lihat ketika komputer mula-mula dinyalakan maka proses yang dibaca pertama kali adalah apa yang tertulis di dalam ROM. Setelah semua perintah di adalam ROM BIOS selesai dibaca maka komputer meminta kita memasukkan DOS ke dalam RAM-nya.Ketika DOS dibaca maka diletakkan sebagian dari program DOS yang terpenting saja ke dalam RAM, seperti : COMMAND.COM  dan INTERNAL COMMAND. Sedangkan program DOS yang lain masih tetap di dalam disk dan apabila kita perlukan dapat di eksekusi. Hal itu berguna untuk mrnjaga agar RAM tidak penuh oleh Sistem Operasi saja.
Ketika kita bekerja dengan program aplikasi tasdi maka kita akan menghasilkan data. Data itu akan di simpan sementara di RAM yang masih tersisa. Data yang disimpan di RAM bersifat voletile, artinya data hanya bisa bertahan selama catudaya komputer masih ON. Untuk berjaga-jaga biasakan menyimpan data ke disk dalam jangka waktu yang tidak terlalu lama, misalnya setiap 5 menit sekali. Selain menjaga data agar tidak amblas menyimpan ke disk bertujuan juga untuk mengosongkan RAM agar tidak cepat penuh.
Didalam sistem  juga dapat kita lihat bahwa sistem operasi terletak berdekatan dengan program lain di RAM  sehingga kemungkinan sistem operasi ter ganggu atau terubah oleh proses yang sedang berjalan sangat besar .Hal itu tidak boleh terjadi.Untuk mencegah terganggu sitem operasi tersebut maka alamat tertinggi dari sistem operasi dletakkan pada register batas dalam CPU. Jika ada proses yang mengacu ke alamat itu atau yang lebih rendah dari itu maka proses di hentikan dan program akan menampilkan pesan kesalahan.
Manajemen Memory  Untuk Multiprogramming
Untuk sistem komputer yang berukuran besar (bukan small computers), membutuhkan pengaturan memori, karena dalam multiprogramming akan melibatkan banyak pemakai secara simultan sehingga di memori akan terdapat lebih dari satu proses bersamaan.  Oleh karena itu dibutuhkan sistem operasi yang mampu mendukung dua kebutuhan tersebut, meskipun hal tersebut saling bertentangan, yaitu (Ama, 2003) :
a)      Pemisahan ruang-ruang alamat.
b)      Pemakaian bersama memori.
Manajer memori harus memaksakan isolasi ruang-ruang alamat tiap proses agar mencegah proses aktif atau proses yang ingin berlaku jahat mengakses dan merusak ruang alamat proses lain. Manajer memori di lingkungan multiprogramming sekalipun melakukan dua hal, yaitu :
a)      Proteksi memori dengan isolasi ruang-ruang alamat secara dis-joint.
b)      Pemakaian bersama memori.
Memungkinkan proses-proses bekerja sama mengakses daerah memori bersama. Ketika konsep multiprogramming digunakan, pemakaian CPU dapat ditingkatkan.  Sebuah model untuk mengamati pemakaian CPU secara probabilistic :
CPU utilization = 1 – p n
Dengan :
a)      N menunjukkan banyaknya proses pada suatu saat, sehingga kemungkinan bahwa semua n proses akan menunggu menggunakan I/O (masalah CPU menganggur) adalah sebesar pn. Fungsi dari n disebut sebagai degree of multiprogramming.
b)      P menunjukkan  besarnya waktu yang digunakan sebuah proses
B. Strategi Manajemen Memori
Strategi yang dikenal untuk mengatasi hal tersebut adalah memori maya. Memori maya menyebabkan sistem seolah-olah memiliki banyak memori dibandingkan dengan keadaan memori fisik yang sebenarnya. Memori maya tidak saja memberikan peningkatan komputasi, akan tetapi memori maya juga memiliki bberapa keuntungan seperti :

Large Address Space
Membuat sistem operasi seakan-akan memiliki jumlah memori melebihi kapasitas memori fisik yang ada. Dalam hal ini memori maya memiliki ukuran yang lebih besar daripada ukuran memori fisik.
Proteksi.
Setiap proses di dalam sistem memiliki virtual address space. Virtual address space tiap proses berbeda dengan proses yang lainnya lagi, sehingga apapun yang terjadi pada sebuah proses tidak akan berpengaruh secara langsung pada proses lainnya
Memory Mapping
Memory mapping digunakan untuk melakukan pemetaan image dan file-file data ke dalam alamat proses. Pada pemetaan memori, isi dari file akan di link secara langsung ke dalam virtual address space dari proses.
Fair Physical Memory Allocation
Digunakan oleh Manajemen Memori untuk membagi penggunaan memori fisik secara “adil” ke setiap proses yang berjalan pada sistem.
Shared Virtual Memory.
Meskipun tiap proses menggunakan address space yang berbeda dari memori maya, ada kalanya sebuah proses dihadapkan untuk saling berbagi penggunaan memori.


C. Ruang Alamat Logika dan Fisik
Alamat Logika adalah alamat yg dibentuk di CPU, disebut juga alamat virtual. Alamat fisik adalah alamat yang terlihat oleh memori. Untuk mengubah dari alamat logika ke alamat fisik diperlukan suatu perangkat keras yang bernama MMU (Memory Management Unit). Pengubahan dari alamat logika ke alamat fisik adalah pusat dari manajemen memori. Alamat yang dibangkitkan oleh CPU disebut alamat logika (logical address) dimana alamat terlihat sebagai uni memory yang disebut alamat fisik (physical address). Tujuan utama manajemen memori adalah konsep meletakkan ruang alamat logika ke ruang alamat fisik (Ama, 2003).
Hasil skema waktu kompilasi dan waktu pengikatan alamat pada alamat logika dan alamat memori adalah sama.  Tetapi hasil skema waktu pengikatan alamat waktu eksekusi berbeda.  dalam hal ini, alamat logika disebut dengan alamat maya (virtual address).  Himpunan dari semua alamat logika yang dibangkitkan oleh program disebut dengan ruang alamat logika (logical address space); himpunan dari semua alamat fisik yang berhubungan dengan alamat logika  disebut dengan ruang alamat fisik (physical address space).
Memory Manajement Unit  (MMU) adalah perangkat keras yang memetakan alamat virtual ke alamat fisik.  Pada skema MMU, nilai register relokasi ditambahkan ke setiap alamat yang dibangkitkan oleh proses user pada waktu dikirim ke memori.
Register basis disebut register relokasi.  Nilai dari register relokasi ditambahkan ke setiap alamat yang dibangkitkan oleh proses user pada waktu dikirim ke memori, sebagai contoh, apabila basis 14000, maka user mencoba menempatkan ke alamat lokasi 0 dan secara dinamis direlokasi ke lokasi 14000.  Pengaksesan ke lokasi logika 346, maka akan dipetakan ke lokasi 14346. Sistem operasi MS-DOS yang masih keluarga intel 80X86 menggunakan empat register relokasi ketika proses loading dan running.
User program tidak pernah melihat alamat fisik secara real.  Program dapat membuat sebuah penunjuk ke lokasi 346, mengirimkan ke memory, memanipulasinya, membandingkan dengan alamat lain, semua menggunakan alamat 346.  Hanya ketika digunakan sebagai alamat memory akan direlokasi secara relatif ke register basis.
D. Swapping
Sebuah proses, sebagaimana telah diterangkan di atas, harus berada di memori sebelum dieksekusi. Proses swapping menukarkan sebuah proses keluar dari memori untuk sementara waktu ke sebuah penyimpanan sementara dengan sebuah proses lain yang sedang membutuhkan sejumlah alokasi memori untuk dieksekusi. Tempat penyimpanan sementara ini biasanya berupa sebuah fast disk dengan kapasitas yang dapat menampung semua salinan dari semua gambaran memori serta menyediakan akses langsung ke gambaran tersebut. Jika eksekusi proses yang dikeluarkan tadi akan dilanjutkan beberapa saat kemudian, maka ia akan dibawa kembali ke memori dari tempat penyimpanan sementara tadi. Bagaimana sistem mengetahui proses mana saja yang akan dieksekusi? Hal ini dapat dilakukan dengan ready queue. Ready queue berisikan semua proses yang terletak baik di penyimpanan sementara maupun memori yang siap untuk dieksekusi. Ketika penjadwal CPU akan mengeksekusi sebuah proses, ia lalu memeriksa apakah proses bersangkutan sudah ada di memori ataukah masih berada dalam penyimpanan sementara. Jika proses tersebut belum berada di memori maka proses swapping akan dilakukan seperti yang telah dijelaskan di atas.
Sebuah contoh untuk menggambarkan teknik swapping ini adalah sebagai berikut: Algoritma Round-Robin yang digunakan pada multiprogramming environment menggunakan waktu kuantum (satuan waktu CPU) dalam pengeksekusian proses-prosesnya. Ketika waktu kuantum berakhir, memory manager akan mengeluarkan (swap out) proses yang telah selesai menjalani waktu kuantumnya pada suatu saat serta memasukkan (swap in) proses lain ke dalam memori yang telah bebas tersebut. Pada saat yang bersamaan penjadwal CPU akan mengalokasikan waktu untuk proses lain dalam memori. Hal yang menjadi perhatian adalah, waktu kuantum harus cukup lama sehingga waktu penggunaan CPU dapat lebih optimal jika dibandingkan dengan proses penukaran yang terjadi antara memori dan disk.
Teknik swapping roll out, roll in menggunakan algoritma berbasis prioritas dimana ketika proses dengan prioritas lebih tinggi tiba maka memory manager akan mengeluarkan proses dengan prioritas yang lebih rendah serta me-load proses dengan prioritas yang lebih tinggi tersebut. Saat proses dengan prioritas yang lebih tinggi telah selesai dieksekusi maka proses yang memiliki prioritas lebih rendah dapat dimasukkan kembali ke dalam memori dan kembali dieksekusi.
Sebagian besar waktu swapping adalah waktu transfer. Sebagai contoh kita lihat ilustrasi berikut ini: sebuah proses pengguna memiliki ukuran 5 MB, sedangkan tempat penyimpanan sementara yang berupa harddisk memiliki kecepatan transfer data sebesar 20 MB per detiknya. Maka waktu yang dibutuhkan untuk mentransfer proses sebesar 5 MB tersebut dari atau ke dalam memori adalah sebesar 5000 KB / 20000 KBps = 250 ms.
Perhitungan di atas belum termasuk waktu latensi, sehingga jika kita asumsikan waktu latensi sebesar 2 ms maka waktu swap adalah sebesar 252 ms. Oleh karena terdapat dua kejadian dimana satu adalah proses pengeluaran sebuah proses dan satu lagi adalah proses pemasukan proses ke dalam memori, maka total waktu swap menjadi 252 + 252 = 504 ms.
Agar teknik swapping dapat lebih efisien, sebaiknya proses-proses yang di- swap hanyalah proses-proses yang benar-benar dibutuhkan sehingga dapat mengurangi waktu swap. Oleh karena itulah, sistem harus selalu mengetahui perubahan apapun yang terjadi pada pemenuhan kebutuhan terhadap memori. Disinilah sebuah proses memerlukan fungsi system call, yaitu untuk memberitahukan sistem operasi kapan ia meminta memori dan kapan membebaskan ruang memori tersebut.
Jika kita hendak melakukan swap, ada beberapa hal yang harus diperhatikan. Kita harus menghindari menukar proses dengan M/K yang ditunda (asumsinya operasi M/K tersebut juga sedang mengantri di antrian karena peralatan M/Knya sedang sibuk). Contohnya seperti ini, jika proses P1dikeluarkan dari memori dan kita hendak memasukkan proses P2, maka operasi M/K yang juga berada di antrian akan mengambil jatah ruang memori yang dibebaskan P1 tersebut. Masalah ini dapat diatasi jika kita tidak melakukan swap dengan operasi M/K yang ditunda. Selain itu, pengeksekusian operasi M/K hendaknya dilakukan pada buffer sistem operasi.
Tiap sistem operasi memiliki versi masing-masing pada teknik swapping yang digunakannya. Sebagai contoh pada UNIX, swapping pada dasarnya tidak diaktifkan, namun akan dimulai jika banyak proses yang membutuhkan alokasi memori yang banyak. Swapping akan dinonaktifkan kembali jika jumlah proses yang dimasukkan berkurang. Pada sistem operasi Microsoft Windows 3.1, jika sebuah proses baru dimasukkan dan ternyata tidak ada cukup ruang di memori untuk menampungnya, proses yang lebih dulu ada di memori akan dipindahkan ke disk. Sistem operasi ini pada dasarnya tidak menerapkan teknik swapping secara penuh, hal ini disebabkan pengguna lebih berperan dalam menentukan proses mana yang akan ditukar daripada penjadwal CPU. Dengan ketentuan seperti ini proses-proses yang telah dikeluarkan tidak akan kembali lagi ke memori hingga pengguna memilih proses tersebut untuk dijalankan.
Manajemen Memori Berdasarkan Keberadaan Swapping Atau Paging
a)      Manajemen tanpa swapping atau paging
b)      Manajemen dengan swapping atau paging
Memori Tanpa Swapping Or Paging
Merupakan manajemen memori tanpa pemindahan citra proses antara memori utama dan disk selama eksekusi. Manajemen ini terdiri dari :

Monoprogramming
Ciri-ciri :
a)      Hanya satu proses pada satu saat
b)      Hanya satu proses menggunakan semua memori
c)      Pemakai memuatkan program ke seluruh memori dari disk atau tape
d)     Program mengambil kendali seluruh mesin

Multiprogramming Dengan Pemartisian Statis 
a)      Pemartisian menjadi partisi-partisi berukuran sama, yaitu ukuran semua partisi memori adalah sama
b)      Pemartisian menjadi partisi-partisi berukuran berbeda, yaitu ukuran semua partisi memori adalah berbeda.
Strategi Penempatan Program Ke Partisi
Satu Antrian Tunggal Untuk Semua Partisi  Keuntungan :  Lebih fleksibel serta implementasi dan operasi lebih minimal karena hanya mengelola satu antrian. Kelemahan : Proses dapat ditempatkan di partisi yang banyak diboroskan, yaitu proses kecil ditempatkan di partisi sangat besar.
Tetap dengan Satu Antrian Satu Antrian Untuk Tiap Partisi (banyak antrian Untuk Seluruh Partisi). Keuntungan : Meminimalkan pemborosan memori. Kelemahan :  Dapat terjadi antrian panjang di suatu partisi sementara antrian partisi – partisi lain kosong
Multiprogramming Dengan Swapping
Merupakan manajemen memori dengan pemindahan citra proses antara memori utama dan disk selama eksekusi, atau dengan kata lain merupakan manajemen pemindahan proses dari memori utama ke disk dan kembali lagi (swapping). Manajemen ini terdiri dari :
Multiprogramming Dengan Pemartisisan Dinamis
Jumlah, lokasi dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. Kelemahan: a) Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai; b) Merumitkan alokasi dan dealokasi memori.
Solusi:
Lubang-lubang kecil di antara blok-blok memori yang digunakan dapat diatasi dengan pemadatan memori yaitu menggabungkan semua lubang kecil menjadi satu lubang besar dengan memindahkan semua proses agar saling berdekatan.

Strategi Alokasi Memori
a)      First fit algorithm : memory  manager men-scan list untuk  menemukan hole yg cukup untuk menampung proses yg baru. Proses akan menempati hole pertama yg ditemuinya yg cukup untuk dirinya.
b)      Next fit algorithm : sama dengan first fit, tetapi pencarian  hole dimulai dari hole ditemuinya dari scan sebelumnya.
c)      Best fit algorithm : dicari hole yang akan menghasilkan sisa paling sedikit setelah dimasuki proses.
d)     Worst fit algorithm : kebalikan dari best fit.
e)      Quick fit algorithm : mengelompokkan hole-hole dan membuat listnya sendiri. Misalnya, ada list untuk hole 4K, satu list untuk 8K, dst.
f)       Sistem Buddy : Memori di susun dalm senari blok-blok bebas berukuran 1,2,4,8,16 byte dst, sampai kapasitas memori.
Dari berbagai cara alokasi tsb. Di atas, sebuah hole yg ditempati proses akan terbagi menjadi bagian yang dipakai proses dan memori yang tidak terpakai (fragmen). Timbulnya memori yang tidak terpakai disebut fragmentasi. Ada dua macam fragmen :
a)      Internal : sisa hole yang tidak terpakai setelah terisi proses.
b)      Eksternal : hole yang secara utuh terlalu kecil untuk dipakai oleh proses manapun.
Alokasi Ruang Swap pada Disk (Penempatan proses pada disk setelah di-swap-out dari memori)
a)      Ruang disk tempat swap dialokasikan begitu diperlukan
b)      Ruang disk tempat swap dialokasikan lebih dahulu.

Algoritma untuk pengaturan ruang swap pada disk sama dengan  untuk memori utama. Perbedaannya adalah ruang pada disk harus dialokasikan sebagai kelipatan bilangan bulat dari disk block.

Deadlock pada Sistem Informasi

Deadlock
Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Contoh sederhananya ialah pada gambar berikut ini.
Gambar  Deadlock terjadi pada persimpangan jalan

Dalam kasus ini setiap mobil bergerak sesuai nomor yang ditentukan, tetapi tanpa pengaturan yang benar, maka setiap mobil akan bertemu pada satu titik yang permanen (yang dilingkari) atau dapat dikatakan bahwa setiap mobil tidak dapat melanjutkan perjalanan lagi atau dengan kata lain terjadi Deadlock. Kejadian Deadlock selalu tidak lepas dari sumber daya, bahwa hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan dan habis dipakai atau dapat dikatakan sumber daya sekali pakai. Sumber daya ini tidak habis dipakai oleh proses mana pun.Tetapi setelah proses berakhir, sumber daya ini dikembalikan untuk dipakai oleh proses lain yang sebelumnya tidak kebagian sumber daya ini. Contohnya prosesor, Channel I/O, disk, semaphore. Contoh peran sumber daya jenis ini pada terjadinya Deadlock ialah misalnya sebuah proses memakai disk A dan B, maka akan terjadi Deadlock jika setiap proses sudah memiliki salah satu disk dan meminta disk yang lain. Masalah ini tidak hanya dirasakan oleh pemrogram tetapi oleh seorang yang merancang sebuah sistem operasi. Cara yang digunakan pada umumnya dengan cara memperhitungkan dahulu sumber daya yang digunakan oleh proses-proses yang akan menggunakan sumber daya tersebut. Deadlock dari sumber yang dapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses yang memakai memori utama. Ada empat kondisi yang dapat menyebabkan terjadinya deadlock. Keempat kondisi tersebut tidak dapat berdiri sendiri, namun saling mendukung.
1. Mutual exclusion. Hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut.
2. Hold and wait. Proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama.
3. No preemption. Sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan.
4. Circular wait. Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.

Sebuah sistem komputer terdiri dari berbagai macam sumber-daya (resources), seperti:
Ø  Fisik (Perangkat, Memori)
Ø  Logika (Lock, Database record)
Ø  Sistem Operasi (PCB Slots)
Ø  Aplikasi (Berkas)
Diantara sumber-daya tersebut ada yang preemptable dan ada juga yang tidak. Sumber-daya ini akan digunakan oleh proses-proses yang membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber-daya yang dibutuhkan/digunakan dapat di diwakilkan dengan graf. Graf adalah suatu struktur diskrit yang terdiri dari vertex dan sisi, dimana sisi menghubungkan vertexvertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitu simple graf dan multigraf. Simpel graf tidak mengandung sisi paralel (lebih dari satu sisi yang menghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitu graf berarah dan graf tidak berarah. Graf berarah memperhatikan arah sisi yang menghubungkan dua vertex, sedangkan graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex. Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah graf alokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf alokasi sumber daya adalah bentuk visualisasi dalam mendeteksi maupun menyelesaikan masalah deadlock. Graf alokasi sumber daya mempunyai komponen- komponen layaknya graf biasa. Hanya saja dalam graf alokasi sumber daya ini, vertex dibagi menjadi dua jenis yaitu:
1. Proses P= {P0, P1, P2, P3,..., Pi,..., Pm}. Terdiri dari semua proses yang ada di sistem. Untuk
proses, vertexnya digambarkan sebagai lingkaran dengan nama prosesnya.
2. Sumber daya R= {R0, R1, R2, R3,..., Rj,..., Rn}. Terdiri dari semua sumber daya yang ada di
sistem. Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan instansi yang dapat dialokasikan serta nama sumber dayanya.
Sisi, E={Pi®Rj,…, Rj®Pi} terdiri dari dua jenis, yaitu:
a. Sisi permintaan: Pi®Rj Sisi permintaan menggambarkan adanya suatu proses Pi yang meminta
sumber daya Rj.
b. Sisi alokasi: Rj®Pi. Sisi alokasi menggambarkan adanya suatu sumber daya Rj yang
mengalokasikan salah satu instansi-nya pada proses Pi.
Misalkan suatu graph pengalokasian sumber daya dengan ketentuan sebagai berikut:
Himpunan P,R dan E:
• P={P1, P2, P3}
• R={R1, R2, R3, R4}
• E={P1®R1, P2®R3, R1®P3, R2®P2, R2®P1, R3®P3}
Instansi sumber daya:
ü  R1 memiliki satu instansi
ü  R2 memiliki dua instansi
ü  R3 memiliki satu instansi
ü  R4 memiliki tiga instansi
Status Proses:
ü  Proses P1 mengendalikan sebuah instansi R2 dan menunggu sebuah instansi dari R1.
ü  Proses P2 mengendalikan sebuah instansi dari R1 dan R2, dan menunggu sebuah instansi R3
ü  Proses P3 mengendalikan sebuah instansi dari R3.
Pada gambar graph di atas tidak terdapat adanya cycle, sehingga proses tidak mengalami terjadinya deadlock. Sekarang perhatikan graph berikut yang terdapat cycle dan memungkinkan terjadinya deadlock.
Terdapat dua cycle (circuit) pada graph di atas yaitu:
P1®R1®P2®R3®P3®R2®P1 dan P2®R3®P3®R2®P2
Proses P1, P2 dan P3 terjadi deadlock. Proses P2 menunggu R3, dimana sedang dikendalikan oleh P3. Proses P3 di sisi lain sedang menunggu proses P1 dan P2 melepas sumber daya R2. Kemudian P1 menunggu proses P2 melepas sumber daya R1. Sekarang perhatikan graph berikut yang terdapat cycle P1®R1®P3®R2®P1.
Walaupun terdapat cycle namun pada proses-proses tersebut tidak terjadi deadlock. Proses P4 akan melepas instansi sumber daya R2 yang akan dialokasikan untuk proses P3.

Solusi Penanggulangan Deadlock

Add beberapa cara untuk menanggulangi terjadinya deadlock, diantaranya adalah:
ü  Mengabaikan masalah deadlock.
ü  Mendeteksi dan memperbaiki
ü  Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protocol untuk memastikan sistem tidak pernah memasuki keadaan deadlock. Yaitu dengan deadlock avoidance sistem untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.
ü  Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya deadlock dengan deadlock prevention sistem untuk memastikan bahwa salah satu kondisi yang penting tidak dapat menunggu.

Mengabaikan Masalah Deadlock

Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-pura bahwa tidak ada masalah apa pun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangi Deadlock dengan cara ini dengan tidak mendeteksi Deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apa pun. Jadi jika terjadi Deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertentu dan mencoba lagi.

Mendeteksi dan Memperbaiki

Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi system mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance sistem karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.
Hal-hal yang terjadi dalam mendeteksi adanya Deadlock adalah:
ü  Permintaan sumber daya dikabulkan selama memungkinkan.
ü  Sistem operasi memeriksa adakah kondisi circular wait secara periodik.
ü  Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan oleh sebuah proses.
ü  Memeriksa dengan algoritma tertentu.

Ada beberapa jalan untuk kembali dari Deadlock, yaitu:

ü  Lewat Preemption
Dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan memberikannya pada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui oleh pemilik dari sumber daya tersebut tergantung dari sifat sumber daya itu sendiri. Perbaikan dengan cara ini sangat sulit atau dapat dikatakan tidak mungkin. Cara ini dapat dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya untuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal mungkin. Setelah kita melakukan preemption dilakukan pengkondisian proses tersebut dalam kondisi aman. Setelah itu proses dilakukan lagi dalam kondisi aman tersebut.

ü  Lewat Melacak Kembali

Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ. Tetapi untuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut, oleh karena itu umumnya dilakukan cara mematikan program tersebut lalu memulai kembali proses. Meski pun sebenarnya lebih efektif jika hanya mundur beberapa langkah saja sampai deadlock tidak terjadi lagi. Untuk beberapa sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat terjadi deadlock dapat mulai dari tempat terakhir penandaannya berada.

ü  Lewat mematikan proses yang menyebabkan Deadlock

Cara yang paling umum ialah mematikan semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kita juga dapat mematikan beberapa proses saja dalam siklus deadlock untuk menghindari deadlock dan mempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan korban menjadi lebih selektif, sebab telah diperhitungkan beberapa kemungkinan jika si proses harus melepaskan sumber dayanya.
Kriteria pemilihan korban ialah:
ü  Yang paling jarang memakai prosesor
ü  Yang paling sedikit hasil programnya
ü  Yang paling banyak memakai sumber daya sampai saat ini
ü  Yang alokasi sumber daya totalnya tersedkit
ü  Yang memiliki prioritas terkecil


Menghindari Deadlock
Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudah harus dapat mengenali bahwa sumber daya itu aman atau tidak (tidak terkena deadlock), setelah itu baru dialokasikan. Ada dua cara yaitu:

ü  Jangan memulai proses apa pun jika proses tersebut akan membawanya pada kondisi deadlock, sehingga tidak mungkin terjadi deadlock karena pada saat akan menuju deadlock, proses sudah dicegah.
ü  Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu keadaan deadlock. Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian awal, dijaga agar tidak deadlock dan ditambah dengan penjagaan kedua saat suatu proses meminta sumber daya, dijaga agar jangan sampai terjadi deadlock. Pada sistem deadlock avoidance (penghindaran) dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal atau pun saat meminta permintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.


Status Aman

Status ini terjadi jika sistem dapat mengalokasikan sumber daya bagi tiap proses dalam keadaan tertentu dan masih dapat terjadi deadlock. Status aman bukanlah status deadlock, jadi status deadlock merupakan status tidak aman, tetapi tidak selamanya status tidak aman mengakibatkan status deadlock melainkan ada kemungkinan dapat terjadi.

Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya. Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:
ü  Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
ü  Jumlah proses yang tidak tetap dan berubah-ubah.
ü  Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
ü  Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
ü  Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga. 

Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakahdeadlock sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah kondisi deadlock dapat dideteksi, maka langkah pemulihan dari kondisi deadlock dapat segera dilakukan. Langkah pemulihan tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption(mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframeberukuran besar. 

Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlockdengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam metode ini adalah, sebagai berikut:
  • Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini terlalu mahal).
  • Menghapus satu persatu proses yang terlibat, sampai kondisi deadlockdapat diatasi (memakan banyak waktu).
  • Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk selesai, dan kedalaman dari rollback.
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan sumber daya, agar tidak terjebak pada unsafe condition.
Beberapa langkahnya, yaitu:

  • Pilih salah satu - proses dan sumber daya yang akan di-preempt.
  • Rollback ke safe state yang sebelumnya telah terjadi.
  • Mencegah suatu proses agar tidak terjebak pada starvation karena metode ini.

Sinkronisasi dalam Sistem Informasi

Sinkronisai

Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama. Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita memdifikasi producer-consumer code dengan menambahkan suatu variable counter, dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer. 

Race Condition

Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.

Masalah Critical Section

Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
·      Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
·      Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
·      Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
·      Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu  Exit Section: akhir dari critical section, mengizinkan proses lain Remainder Section: kode istirahat setelah masuk ke critical section.

Solusi ke Masalah Critical-Section

Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:
·       Mutual exclution
Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka.
·       Progress
Jika tidak ada proses yang sedang dieksekusi dalam critical section  dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda.
·       Bounded Waiting
Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum  permintaan itu diterima.
a.      Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.
b.      Tidak ada asumsi mengenai kecepatan relative dan n proses.
Cara-cara memecahkan masalah
·       Hanya dua proses, Po dan P1
·       Struktur umum dari proses adalah Pi (proses lain Pj)

Bakery Algorithm

Critical section untuk n proses:
a.       Sebelum memasuki critical Section-nya, proses menerima nomor pemilik nomor terkecil memasuki critical section.
b.      Jika proses Pi dan Pj menerima nomor yang sama, jika i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j, then Pi is served first; else Pj is served first).
c.      Skema penomoran selalu menghasilkan angka –angka yang disebutkan satu per satu, yaitu 1,2,3,3,3,3,4,5….

Semaphore

Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.
Semaphore mempunyai dua sifat, yaitu:
i.      Semaphore dapat diinisialisasi dengan nilai non-negatif.
ii.    Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.

Ø  Operasi Down
Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked. Operasi Down adalah atomic, tak dapat diinterupsi sebelaum diselesaikan.Emnurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore sampai operasi selesai atau diblocked.
Ø  Operasi Up
Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion mempunyai bagan sebagai berikut:
Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil.

Problem Klasik pada Sinkronisasi
Ada tiga hal yang selalu memjadi masalah pada proses sinkronisasi:
a.    Problem Bounded buffer.
b.    Problem Reades and Writer.
c.    Problem Dining Philosophers.

Monitors

Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.
Properti-properti monitor adalah sebagai berikut:
a.    Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.
b.    Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).
c.    Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.
d.   Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.
e.    Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.
f.     Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.
g.    Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.

Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.

Prilaku Produsen

PERILAKU PRODUSEN
   
Produsen adalah orang yang menghasilkan barang atau jasa untuk dijual atau dipasarkan. Sedangkan perilaku produsen adalah kegiatan pengaturan produksi sehingga produk yang dihasilkan bermutu tinggi sehingga bisa di terima di masyarakat dan menghasilkan laba.

Secara matematis, fungsi produksi dapat ditulis sebagai berikut :
Q = f(L, R, C, T)
Dimana :
Q         = jumlah barang yang dihasilkan (quantity)
F          = symbol persamaan (function)
L          = tenaga kerja (labour)
R         = kekayaan alam (resources)
C         = modal (capital)
T         = teknologi (technology)

Persaingan global semakin pesat dengan persaingan yang sangat kuat, maka produsen dan perusahaannya harus mampu memikirkan perkembangan produksinya demi majunya perusahaan dalam persaingan.

Contoh perilaku produsen :
1.                   Produsen mencari keuntungan dengan menghasilkan barang atau jasa sebanyak-banyaknya         dengan modal yang seminimum mungkin.
2.                   Produsen memberikan Diskon kepada pembeli atau konsumen yang membeli barang dalam jumlah yang banyak yang telah diakantentukan produsen itu sendiri.
3.                   Produsen mematok biaya produksi berdasarkan faktor input produksi tersebut, sehingga ketika harga salah satu faktor input naik, maka harga jual hasil produksi pun akan ikut naik.
4.                   Selain produsen menghasilkan barang atau jasa sesuai kebutuhan konsumen, produsen juga menghasilkan barang atau jasa sesuai trend atau sesuatu yang sedang banyak diminati oleh masyarakat.
5.                   Produsen juga mengadaptasi isu global atau keadaan sosial yang sedang terkenal saat itu untuk memasarkan barang atau jasa yang mereka jual.
6.                   Produsen juga memberikan diskon besar-besaran untuk barang yang sudah lama disimpan di gudang atau biasa disebut cuci gudang.

Faktor-faktor produksi

Yaitu segala sesuatu yang dibutuhkan untuk memproduksi barang dan jasa. Antara lain:
1) Alam ialah semua kekayaan yang terdapat di alam semesta yang dapat digunakan dalam proses produksi.
2) Tenaga kerja merupakan faktor produksi insani yang secara langsung maupun tidak langsung menjalankan kegiatan produksi.
3) Modal sebagai penunjang dalam mempercepat/ menambah kemampuan dalam memproduksi.
4) Keahlian merupakan faktor yan sangat penting dalam menentukan maksimal/ tidak hasil suatu proses produksi.

Macam-macam sifat produksi yang dapat dipilih produsen:
1) Produksi satuan
2) Produksi masa
3) Produksi seri
4) Produksi pesanan

Teori Perilaku Produsen

 Erat kaitannya dengan:
-Menjadi kreator dan desainer dalam penciptaan barang/ jasa.
-Memilih, mengkombinasikan faktor-faktor produksi dan teknologi, serta mengunakan secara efisien.
-Memilih tempat dan menata letak mesin untuk proses produksi.
-Melaksanakan proses produksi untuk meningkatkan daya guna barang/ jasa dan memperbanyak persediaan barang/jasa untuk kepentinga masyarakat.

-Mendistribusikan dan menjual barang/ jasa kepada konsumen.

Perilaku Konsumen, Surplus Konsumen dan Elastisitas Harga

1.  Perilaku Konsumen

Perilaku konsumen adalah proses dan aktivitas ketika seseorang berhubungan dengan pencarian, pemilihan, pembelian, penggunaan, serta pengevaluasian produk dan jasa demi memenuhi kebutuhan dan keinginan. Perilaku konsumen merupakan hal-hal yang mendasari konsumen untuk membuat keputusan pembelian. Untuk barang berharga jual rendah (low-involvement) proses pengambilan keputusan dilakukan dengan mudah, sedangkan untuk barang berharga jual tinggi (high-involvement) proses pengambilan keputusan dilakukan dengan pertimbangan yang matang.

Pemahaman akan perilaku konsumen cerdas dapat diaplikasikan dalam beberapa hal, yang pertama adalah untuk merancang sebuah strategi pemasaran yang baik, misalnya menentukan kapan saat yang tepat perusahaan memberikan diskon untuk menarik pembeli. Ke dua, perilaku konsumen dapat membantu pembuat keputusan membuat kebijakan publik. Misalnya dengan mengetahui bahwa konsumen akan banyak menggunakan transportasi saat lebaran, pembuat keputusan dapat merencanakan harga tiket transportasi di hari raya tersebut. Aplikasi ke tiga adalah dalam hal pemasaran sosial (social marketing), yaitu penyebaran ide di antara konsumen.

Dengan memahami sikap konsumen dalam menghadapi sesuatu, seseorang dapat menyebarkan ide dengan lebih cepat dan efektif.Dan juga dapat memberikan gambaran kepada para pemasar dalam pembuatan produk,pnyesuaian harga produk,mutu produk,kemasan dan sebagainya agar dalam penjualn produknya tidak menimbulkan kekecewaan pada pemasar tersebut. 

Terdapat tiga pendekatan utama dalam meneliti perilaku konsumen. Pendekatan pertama adalah pendekatan interpretif. Pendekatan ini menggali secara mendalam perilaku konsumsi dan hal yang mendasarinya. Studi dilakukan dengan melalui wawancara panjang dan focus group discussion untuk memahami apa makna sebuah produk dan jasa bagi konsumen dan apa yang dirasakan dan dialami konsumen ketika membeli dan menggunakannya.

Pendekatan ke dua adalah pendekatan tradisional yang didasari pada teori dan metode dari ilmu psikologi kognitif, sosial, dan behaviorial serta dari ilmu sosiologi. Pendekatan ini bertujuan mengembangkan teori dan metode untuk menjelaskan perilaku dan pembuatan keputusan konsumen. Studi dilakukan melalui eksperimen dan survei untuk menguji coba teori dan mencari pemahaman tentang bagaimana seorang konsumen memproses informasi, membuat keputusan, serta pengaruh lingkungan sosial terhadap perilaku konsumen.

Pendekatan ke tiga disebut sebagai sains pemasaran yang didasari pada teori dan metode dari ilmu ekonomi dan statistika. Pendekatan ini dilakukan dengan mengembangkan dan menguji coba model matematika berdasarkan hierarki kebutuhan manusia menurut Abraham Maslow untuk memprediksi pengaruh strategi marketing terhadap pilihan dan pola konsumsi, yang dikenal dengan sebutan moving rate analysis.

Ketiga pendekatan sama-sama memiliki nilai dan tinggi dan memberikan pemahaman atas perilaku konsumen dan strategi marketing dari sudut pandang dan tingkatan analisis yang berbeda. Sebuah perusahaan dapat saja menggunakan salah satu atau seluruh pendekatan, tergantung permasalahan yang dihadapi perusahaan tersebut.  

Proses pengambilan keputusan pembelian

Sebelum dan sesudah melakukan pembelian, seorang konsumen akan melakukan sejumlah proses yang mendasari pengambilan keputusan, yakni: 
1.    Pengenalan masalah (problem recognition). Konsumen akan membeli suatu produk sebagai solusi atas permasalahan yang dihadapinya. Tanpa adanya pengenalan masalah yang muncul, konsumen tidak dapat menentukan produk yang akan dibeli.  
2.    Pencarian informasi (information source). Setelah memahami masalah yang ada, konsumen akan termotivasi untuk mencari informasi untuk menyelesaikan permasalahan yang ada melalui pencarian informasi. Proses pencarian informasi dapat berasal dari dalam memori (internal) dan berdasarkan pengalaman orang lain (eksternal). 
3.    Mengevaluasi alternatif (alternative evaluation). Setelah konsumen mendapat berbagai macam  informasi, konsumen akan mengevaluasi alternatif yang ada untuk mengatasi permasalahan yang dihadapinya.
4.    Keputusan pembelian (purchase decision). Setelah konsumen mengevaluasi beberapa alternatif  strategis yang ada, konsumen akan membuat keputusan pembelian. Terkadang waktu yang dibutuhkan antara membuat keputusan pembelian dengan menciptakan pembelian yang aktual tidak sama dikarenakan adanya hal-hal lain yang perlu dipertimbangkan. 
5.    Evaluasi pasca-pembelian (post-purchase evaluation) merupakan proses evaluasi yang dilakukan konsumen tidak hanya berakhir pada tahap pembuatan keputusan pembelian. Setelah membeli produk tersebut, konsumen akan melakukan evaluasi apakah produk tersebut sesuai dengan harapannya. Dalam hal ini, terjadi kepuasan dan ketidakpuasan konsumen. Konsumen akan puas jika produk tersebut sesuai dengan harapannya dan selanjutnya akan meningkatkan permintaan akan merek produk tersebut pada masa depan. 

Sebaliknya, konsumen akan merasa tidak puas jika produk tersebut tidak sesuai dengan harapannya dan hal ini akan menurunkan permintaan konsumen pada masa depan. 

Faktor-faktor yang memengaruhi

Terdapat lima faktor internal yang relevan terhadap proses pembuatan keputusan pembelian: 
1.    Motivasi (motivation) merupakan suatu dorongan yang ada dalam diri manusia untuk mencapai tujuan tertentu. 
2.    Persepsi (perception) merupakan hasil pemaknaan seseorang terhadap stimulus atau kejadian yang diterimanya berdasarkan informasi dan pengalamannya terhadap rangsangan tersebut. 
3.    Pembentukan sikap (attitude formation) merupakan penilaian yang ada dalam diri seseorang yang mencerminkan sikap suka/tidak suka seseorang akan suatu hal. 
Integrasi (integration) merupakan kesatuan antara sikap dan tindakan. Integrasi merupakan respon atas sikap yang diambil. Perasaan suka akan mendorong seseorang untuk membeli dan perasaan tidak suka akan membulatkan tekad seseorang untuk tidak membeli produk tersebut.

2.  Surplus Konsumen

Surplus Konsumen (Consumer’s surplus ) adalah utilitas untuk konsumen dengan mampu membeli produk dengan harga yang kurang dari harga tertinggi yang mereka akan bersedia membayar. Surplus Konsumen mencerminkan suatu keuntungan lebih atau surplus yang dinikmati oleh konsumen tertentu yang terjadi karena terdapat selisih harga antara harga maksimum yang diminta produsen dan harga yang dapat dibayar konsumen (yang disebabkan oleh terjadinya  keseimbangan harga dipasar). 

Jika konsumen akan bersedia membayar lebih dari harga minta saat ini, maka mereka mendapatkan manfaat lebih dari produk yang dibeli dari mereka habiskan untuk membelinya. Sebuah contoh yang baik dengan surplus konsumen umumnya tinggi adalah air minum. 

Orang-orang akan membayar harga yang sangat tinggi untuk minum air, karena mereka membutuhkannya untuk bertahan hidup. Perbedaan harga yang mereka akan membayar, jika mereka harus, dan jumlah yang mereka bayar sekarang adalah surplus konsumen mereka. Perhatikan bahwa utilitas dari pertama liter air minum sangat tinggi (karena mencegah kematian), sehingga beberapa liter pertama kemungkinan akan surplus konsumen lebih dari liter berikutnya. 

Harga maksimum konsumen akan bersedia membayar jumlah yang diberikan adalah jumlah dari harga maksimum ia akan bersedia membayar untuk unit pertama, harga tambahan maksimum ia akan bersedia membayar untuk unit kedua, dll Biasanya harga ini mengalami penurunan, dalam hal bahwa mereka diberikan oleh individu kurva permintaan . Jika harga ini adalah yang pertama meningkat dan kemudian menurun mungkin ada jumlah nol dengan nol surplus konsumen. Konsumen tidak akan membeli jumlah yang lebih besar dari nol dan lebih kecil dari jumlah ini karena surplus konsumen akan negatif. 

Harga tambahan maksimum konsumen akan bersedia membayar untuk setiap unit tambahan juga dapat alternatingly menjadi tinggi dan rendah, misalnya jika dia ingin bahkan jumlah unit, seperti dalam kasus tiket ia menggunakan di pasang pada tanggal. Nilai-nilai yang lebih rendah tidak muncul dalam kurva permintaan karena mereka sesuai dengan jumlah konsumen tidak membeli, terlepas dari harga. Untuk harga yang diberikan konsumen membeli jumlah yang surplus konsumen tertinggi. 

Surplus Konsumen agregat 'adalah jumlah surplus konsumen untuk masing-masing individu konsumen. Hal ini dapat diwakili pada sosok kurva permintaan agregat. 

Perhitungan dari penawaran dan permintaan 

The surplus konsumen (individu atau agregat) adalah area di bawah kurva permintaan (individu atau gabungan) dan di atas garis horizontal pada harga aktual (dalam kasus agregat: harga keseimbangan). Jika kurva permintaan adalah garis lurus, surplus konsumen adalah luas segitiga: 


            
Dimana mkt P adalah harga ekuilibrium (mana supply sama demand), mkt Q adalah kuantitas jumlah pembelian pada harga keseimbangan dan max P adalah harga di mana jumlah kuantitas pembelian akan turun menjadi 0 (yaitu, di mana kurva permintaan penyadapan yang harga sumbu).

Untuk permintaan yang lebih umum dan fungsi penawaran, daerah ini bukan segitiga tapi masih dapat ditemukan dengan menggunakan integral kalkulus. Surplus konsumen adalah demikian integral tentu dari fungsi permintaan terhadap harga, minus integral tertentu konstan D fungsi (P) = Q mkt (yaitu P Q mkt mkt), dari harga pasar dengan harga pemesanan maksimum (yaitu harga-intercept dari fungsi permintaan):

                  Grafik menunjukkan, bahwa jika kita melihat kenaikan harga keseimbangan dan penurunan jumlah ekuilibrium, maka surplus konsumen jatuh. 

Pembagian manfaat ketika harga turun 

Ketika pasokan yang baik memperluas, harga turun (asumsi kurva permintaan adalah miring ke bawah) dan meningkatkan surplus konsumen. Ini manfaat dua kelompok orang. Konsumen yang telah bersedia untuk membeli pada harga awal manfaat dari penurunan harga; juga mereka bisa membeli lebih banyak dan menerima surplus konsumen bahkan lebih, dan konsumen tambahan yang tidak mau membeli dengan harga awal tetapi akan membeli pada harga baru dan juga menerima beberapa surplus konsumen. 

Pertimbangkan contoh pasokan linear dan kurva permintaan. Untuk kurva penawaran awal S 0, surplus konsumen adalah segitiga di atas garis yang dibentuk oleh harga P 0 ke baris permintaan (dibatasi di sebelah kiri dengan sumbu harga dan di atas dengan garis kebutuhan). Jika pasokan memperluas dari S0 ke S 1, konsumen surplus mengekspansi pada segitiga atas P 1dan di bawah garis kebutuhan (masih dibatasi oleh sumbu harga). Perubahan surplus konsumen perbedaan di daerah antara dua segitiga, dan itu adalah kesejahteraan konsumen terkait dengan perluasan pasokan. 

Beberapa orang bersedia membayar harga yang lebih tinggi P 0.Bila harga berkurang, keuntungan mereka adalah area persegi panjang yang terbentuk di atas oleh P 0, pada bagian bawah oleh P 1, di sebelah kiri dengan sumbu harga dan di sebelah kanan oleh garis vertikal membentang dari Q 0.

Set kedua penerima adalah konsumen yang membeli lebih banyak, dan konsumen baru, mereka yang akan membayar harga yang lebih rendah baru (P 1) tetapi bukan harga yang lebih tinggi (P 0). konsumsi tambahan mereka membentuk perbedaan antara Q 1 dan Q 0. surplus konsumen mereka adalah segitiga dibatasi di sebelah kiri dengan garis vertikal membentang dari Q 0, di kanan dan atas oleh garis permintaan, dan pada bagian bawah oleh garis memperluas horizontal ke kanan dari P 1.

Peraturan satu-setengah 

Aturan-setengah perkiraan satu perubahan surplus untuk perubahan kecil dalam pasokan dengan kurva permintaan konstan. Catatan bahwa dalam kasus khusus di mana kurva permintaan konsumen linear, surplus konsumen adalah luas segitiga. Setelah gambar diatas. Dimana:
·         CS = Konsumen Surplus
·         Q 0 dan Q 1 adalah kuantitas yang diminta sebelum dan setelah perubahan pasokan
·         P 0 dan P 1 adalah harga sebelum dan setelah perubahan pasokan

3.  Elastisitas Harga

Elastisitas harga adalah tingkat kepekaan relatif dari jumlah yang diminta konsumen, akibat adanay perubahan tingkat barang. Dengan kata lain elastisitas harga adalah perubahan proporsional dari sejumlah barang yang diminta dibagi dengan perubahan proporsional dari harga.Elastisitas harga (Ep) mengukur berapa persen permintaan terhadap suatu barang berubah bila harganya berubah sebesar satu persen.  
Angka elastisitas harga bernilai negatif. Ep = 2 mernpunyai arti bila harga barang naik 1%, permintaan terhadap barang itu turun 2%, ceteris paribus. Begitu juga sebaliknya. Semakin besar nilai negatifnya, serna kin elastis permintaannya, sebab perubahan permintaan jauh lebih besar dibanding perubahan harga. Angka Ep dapat disebut dalam nilai absolut. Ep = 2, artinya sama dengan Ep = -2. 

Angka Elastisitas Harga (Ep)  
a.     Inelastis (Ep < 1) 
Perubahan permintaan (dalarn persentase) lebih kecil daripada perubahan harga. Kalau harga naik 10% rnenyebabkan perrnintaan barang turun sebesar, rnisalnya, 6%.
Perrnintaan barang kebutuhan pokok umumnya inelastis. Misalnya perubahan harga beras di Indonesia, tidak berpengaruh besar terhadap perubahan perrnintaan terhadap beras.  
b.    Elastis(Ep>l)
Permintaan terhadap suatu barang dikatakan elastis bila perubahan harga suatu barang rnenyebabkan perubahan perrnintaan yang besar. Misalnya, bila harga turun 10% menyebabkan permintaan barang naik 20%. Karena itu nilai Ep lebih besar dari satu. Barang mewah seperti rnobil umumnya permintaannya elastis.
c.     Elastis unitari (Ep = 1) 
Jika harga naik 10%, permintaan barang turun 10% juga. 
d.    Inelastis sempurna (Ep = 0)
Berapa pun harga suatu barang, orang akan tetap mernbeli jumlah yang dibutuhkan. Contohnya adalah permintaan garam. 
e.    Elastis tak terhingga (Ep = 00) 
Perubahan harga sedikit saja menyebabkan perubahan permintaan tak terbilang besarnya. 
Secara gratis tingkat elastisitas harga terlihat dari slope (kemiringan) kurva permintaan. Bila kurva permintaan tegak lurus, permintaan inelastis sempuma (perfect inelastic); Perubahan harga, tidak memengaruhi jumlah barang yang diminta. Bila kurva sejajar surnbu datar, permintaan elastis fak terhingga (perfect elastic); Perubahan harga sedikit saja, rnenyebabkan pembahan jumlah barang yang diminta tak terhingga besamya. Permintaan dikatakan elastis unitari (unitary elastic), bila slope kurvanya minus satu (kurvanya membentuk sudut 45°). Dapat disimpulkan, semakin datar kurva permintaan, makin elastis permintaan suatu barang.


Selasa, 09 April 2013

contoh program C++

LA C++ 07 by Lucyanna Lessi

Kebebasan

kebebasan adalah
hak manusia untuk mencapai kebahagiaan individu
tanpa merusak kebebasan individu lain.

Kebebasan merupakan tempat bergantungnya
ketinggian harga diri manusia. Setiap kebebasan
hakikatnya adalah aturan yang menjadi pilihan.

Akal dan kecerdasan tidak ada artinya tanpa kebebasan.

Kebebasan juga dapat berarti kehendak bebas
manusia yang dengannya kita dapat memutuskan
suatu hal dari banyak pilihan-pilihan dan peristiwa
yang terjadi dalam hidup kita.

Kita memiliki kebebasan, untuk mencintai atau membenci...
Marah atau memaafkan...
Terpuruk atau bangkit...
Bahagia atau sebaliknya...

Kita bebas memilih atau mengontrol respon
dari setiap kejadian yang datang dalam kehidupan kita.
Itulah kebebasan.

TAPI... walaupun kita memiliki KEBEBASAN dalam
memilh respon untuk setiap kejadian, saya sarankan
kita tetap fokus memilih pada KEBEBASAN yang
bersifat POSITIF.

Rangkullah kehidupan.
Rengkuhlah cinta baru.
Penuhilah tawa, keriangan di setiap hari-hari.
Bukalah hati untuk kemungkinan-kemungkinan yang baik:
rezeki, pekerjaan, orang-orang, lingkungan baru
yang membahagiakan.

Anda BEBAS untuk menjalani itu semua!
Dan menjadi bahagia.

Tuhan tidak pernah mengutuk kita, namun kitalah yang
sering mengutuk kehidupan dan diri kita sendiri.

Kita memiliki berbagai macam kebebasan,
Pilihlah kebebasan-kebebasan yang baik.
Buatlah hal-hal baik, terbaik yang bisa kita lakukan setiap harinya.

Selalu pilih respon terbaik, pikiran & emosi baik, pada setiap kejadian.
Jalanilah setiap kebebasan dan kehidupan dengan
energi positif, hingga menjadikan hidup ini pernuh warna... :-)