Anda di halaman 1dari 14

MAKALAH SISTEM OPERASI

MANAJEMEN MEMORI, THREAD, DAN BUFFER

Dosen Pembimbing
Ferdi Chahyadi. S.Kom., M.Cs

Disusun Oleh
Afrio Tri Putra sitompul(170155201017)
Fathoni Andika Darma (170155201042)
Fikri Dwi (170155201022)
Andika Rahman (1701552010)

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS MARITIM RAJA ALI HAJI

2019

1
KATA PENGANTAR

Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa karena berkat
rahmat dan karunia-Nya kami dapat menyelesaikan makalah Manajemen Memori,
Thread, dan Buffer untuk memenuhi tugas mata kuliah Sistem Operasi ini tepat pada
waktunya.

Penyusun telah berusaha untuk menyusun laporan ini dengan baik, namun
kami menyadari bahwa masih banyak kekurangan dalam penyusunan laporan ini,
baik dari segi penulisan maupun isi. Kritik serta saran yang membangun dari Dosen
Pembimbing maupun semua pembaca sangat kami harapkan untuk membenahi diri
agar selanjutnya kami dapat menyusun laporan dengan lebih baik lagi.

Kami berharap dengan disusunnya laporan ini dapat memberikan gambaran


dan penjelasan lebih lanjut mengenai manajemen memori, thread dan buffer.

Tanjungpinang, 4 April 2019

Penyusun

2
DAFTAR ISI

COVER. .................................................................................................................. i

KATA PENGANTAR ............................................................................................ ii

DAFTAR ISI ......................................................................................................... .iii

BAB I – PENDAHULUAN .................................................................................... 1

1.1. Latar Belakang ....................................................................................................... 1


1.2. Rumusan Masalah .................................................................................................. 1
1.3. Tujuan .................................................................................................................... 2

BAB II – PEMBAHASAN ..................................................................................... 3

2.1. Manajemen Memori ............................................................................................... 3


2.2. Thread .................................................................................................................... 5
2.2.1. Thread Cancellation ......................................................................................
2.2.2. Thread Pools .................................................................................................
2.3. Buffer ................................................................................................................... 11

BAB III – PENUTUP ........................................................................................... 15

3.1. Kesimpulan .......................................................................................................... 15


3.2. Saran ..................................................................................................................... 15

3
BAB I

PENDAHULUAN

1.1. Latar Belakang


Memori merupakan istilah umum yang merujuk pada media penyimpanan
data sementara pada komputer. Setiap program dan data yang sedang diproses oleh
processor akan disimpan di dalam memori fisik. Data yang disimpan dalam memori
fisik bersifat sementara, karena data yang disimpan di dalamnya akan tersimpan
selama komputer tersebut masih dialiri daya. Ketika komputer itu direset atau
dimatikan, data yang disimpan dalam memori fisik akan hilang.
Pada umumnya, software yang berjalan pada komputer modern dirancang
secara multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang
terpisah dengan beberapa thread yang berfungsi sebagai pengendali.
Terkadang ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang
serupa. Sebagai contohnya sebuah web server yang memiliki ratusan klien yang
mengaksesnya secara concurrent.
Di zaman yang modern ini, multi-threading telah menjadi pendekatan alami
untuk banyak masalah. Sebuah pekerjaan besar dibagi menjadi beberapa bagian dan
masing-masing bagian ditugaskan untuk unit eksekusi yang disebut thread.

1.2. Rumusan Masalah


1. Apa itu manajemen memori dan apa saja fungsinya?
2. Apa itu thread dan apa saja fungsinya?
3. Apa itu buffer dan apa saja fungsinya?

1.3. Tujuan
Tujuan dibuatnya makalah ini adalah untuk menambah wawasan pembaca
tentang istilah-istilah dan suatu hal yang terjadi di komputer mengenai manajemen
memori, thread dan buffer.

4
BAB II

PEMBAHASAN

2.1. Manajemen Memori


Memori merupakan pusat dari operasi pada sistem komputer modern,
berfungsi sebagai tempat penyimpanan informasi. Memori adalah array besar dari
word atau byte yang disebut alamat. CPU mengambil instruksi dari memori
berdasarkan nilai dari program counter.
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
I/O secara efisien, sehingga memori dapat menampung sebanyak mungkin proses
dan sebagai upaya agar pemrogram atau proses tidak dibatasi kapasitas memori fisik
di sistem komputer.
Fungsi manajemen memori antara lain:
1. Meningkatkan utilitas CPU.
2. Mempercepat akses data dan instruksi oleh CPU.
3. Efisisensi dalam pemakaian memori yang terbatas tercapai.
4. Transfer data dari memori utama ke CPU ataupun sebaliknya menjadi lebih efisien.
5. Mengelola informasi yang dipakai dan tidak dipakai.
6. Mengalokasikan memori ke proses yang memerlukan.
7. Mendealokasikan memori dari proses yang telah selesai.
8. Mengelola swapping atau paging antara memori utama dan disk.

Tipe-tipe manajemen memori berdasarkan keberadaan swapping atau paging:


1. Manajemen tanpa swapping atau paging
Manajemen memori ini tanpa melakukan pemindahan citra proses antara memori
utama dan disk selama eksekusi.

5
2. Manajemen dengan swapping atau paging
Manajemen memori ini melakukan pemindahan citra proses antara memori utama
dan disk selama eksekusi.

Tipe-tipe manajemen memori berdasarkan alokasi memori:

1. Alokasi memori berurutan (Contigouos Allocation)


Pada alokasi memori berurutan, setiap proses menempati satu blok tunggal alokasi
memori yang berurutan. Alokasi memori ini bersifat sederhana, tidak ada rongga
memori yang bersebaran dan proses yang berurutan sehingga dapat dieksekusi
dengan cepat. Kelemahan dari alokasi memori ini adalah boros memori, tidak dapat
disisip apabila tidak ada satu blok memori yang mencukupi.
2. Alokasi memori tak berurutan (Non Contiguous Allocation)
Pada alokasi memori tak berurutan, proses ditempatkan pada beberapa segmen
berserakan, tidak perlu saling berdekatan atau berurutan. Biasanya digunakan untuk
lokasi memori maya sebagai lokasi page. Sistem ini dapat memanfaatkan memori
utama lebih efisien, dan sistem operasi masih dapat menyisip proses apabila jumlah
lubang-lubang memori cukup untuk memuat proses yang akan dieksekusi.
Kekurangan dari alokasi memori ini memerlukan pengendalian yang lebih rumit dan
memori jadi banyak berserakan tidak terpakai.

Manajemen memori terbagi menjadi dua:

1. Manajemen memori statis


Manajemen memori statis termasuk ke dalam bagian dari manajemen memori tanpa
swapping atau paging. Dengan pemartisi statis, jumlah, lokasi, dan ukuran proses di
memori tidak beragam sepanjang waktu secara tetap. Dalam kondisi tanpa swapping,
manajemen memori terbagi menjadi dua kondisi:
a. Monoprogramming
Merupakan manajemen memori paling sederhana, sistem komputer hanya
mengizinkan satu program berjalan pada satu waktu. Semua sumber daya
sepenuhnya dikuasai oleh proses yang sedang berjalan.

6
b. Multiprogramming dengan pemartisian statis
Multiprogramming dapat dilakukan dengan pemartisian statis, yaitu memori dibagi
menjadi beberapa jumlah partisi tetap. Pada partisi-partisi tersebut proses-proses
ditempatkan. Multiprogramming dengan pemartisian statis terbagi menjadi dua:
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.
2. Manajemen memori dinamis
Dengan pemartisian dinamis, jumlah, lokasi, dan ukuran proses di memori dapat
berseragam sepanjang waktu secara dinamis. Proses yang akan masuk ke memori
segera dibuatkan partisi sesuai kebutuhan, sehingga meningkatkan utilisasi memori.
Manajemen memori dinamis ini termasuk ke dalam multiprogramming dengan
swapping. Kelemahan dari manajemen memori ini antara lain dapat terjadi lubang-
lubang kecil memori di antara partisi-partisi yang dipakai, serta merumitkan alokasi
dan dealokasi memori. Solusinya adalah lubang-lubang kecil di antara blok-blok
memori yang digunakan dapat diatasi dengan pemadatan memori yaitu dengan
menggabungkan semua lubang kecil menjadi satu lubang besar dengan
memindahkan semua proses agar saling berdekatan.

Strategi alokasi memori terbagi menjadi lima:

1. First-fit Algorithm
Merupakan alokasi memori dengan scan list untuk menemukan hole (lubang) yang
cukup untuk menampung proses yang baru. Proses akan menempati hole pertama
yang ditemui dan cukup untuk proses tersebut.
2. Next-fit Algorithm
Sama dengan first-fit algorithm, tetapi pencarian hole dimulai dari hole yang
ditemuinya dari scan sebelumnya.
3. Best-fit Algorithm

7
Pada alokasi memori ini dicari hole yang akan menghasilkan sisa paling sedikit
setelah dimasuki proses.
4. Worst-fit Algorithm
Merupakan alokasi memori yang berkebalikan dengan best-fit algorithm. Mencari
hole yang menghasilkan sisa paling banyak setelah dimasuki proses.
5. Quick-fit Algorithm
Alokasi memori ini mengelompokkan hole-hole dan membuat listnya sendiri.
Misalnya ada list untuk hole 4K, satu list untuk 8K, dan seterusnya.

2.2. Thread
Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh
sistem operasi. Thread mengandung Thread ID, program counter, register set, dan
stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem
operasi dengan thread lain yang dimiliki oleh proses yang sama.
Thread terbagi menjadi single-threading dan multi-threading. Single-
threading adalah sebuah proses sederhana (lightweight process) yang mempunyai
thread tunggal yang berfungsi sebagai pengendali (controller). Multi-threading
adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas
dalam satu waktu.
Banyak software yang berjalan ada PC modern yang didesain secara
multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang
terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan,
sedangkan thread yang lain berfungsi untuk menerima data dari jaringan.Keuntungan
dari multi-threading antara lain:
1. Responsif
Membuat aplikasi yang interaktif menjadi multi-threading dapat membuat sebuah
program terus berjalan meskipun sebagian dari program tersebut diblock atau
melakukan proses yang panjang, sehingga dapat meningkatkan respon pengguna.

8
Contohnya dalam web browser yang multi-threading, sebuah thread melayani
permintaan pengguna sementara thread lain berusaha menampilkan gambar.
2. Pembagian sumber daya
Secara default thread berbagi memori dan sumber daya dengan thread lain yang
dimiliki oleh proses yang sama. Ketika thread berjalan pada data yang sama, thread
tersebut bisa berbagi cache memori.
3. Ekonomis
Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan
sumber daya yang relatif mahal. Alternatifnya, karena thread membagi sumber daya
dari proses, ini lebih ekonomis untuk membuat thread.
4. Pemberdayaan arsitektur multiprocessor.
Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multi-
processor, dimana setiap thread dapat berjalan secara paralel pada prosesor yang
berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara
setiap thread dengan cepat, sehingga menciptakan ilusi paralel. Tetapi pada
kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu
(quantum).
Kerugian multi-threading antara lain:
1. Multiple-thread bisa mengganggu satu sama lain saat berbagi hardware resource,
misalnya cache memori.
2. Execution time (waktu proses) dari sebuah single-thread tidak dapat ditambah, tapi
bisa dikurangi. Ini terjadi karena penurunan frekuensi yang dibutuhkan ketika terjadi
pergantian thread yang berjalan.
3. Harus ada dukungan dari hardware maupun software untuk melakukan multi-
threading.

Model-model threading terbagi menjadi dua, yaitu:


1. Kernel-level threading
Thread ini dibuat oleh pengguna yang berkorespondensi one-to-one dengan entitas-
entitas yang terjadwalkan yang berada di kernel. Ini merupakan implementasi paling

9
sederhana dari threading. Thread kernel didukung langsung oleh sistem operasi.
Dalam pembuatan, penjadwalan dan manajemen thread dilakukan pada kernel space.
Untuk pengaturan akan dilakukan oleh sistem operasi, sehingga pembuatan dan
pengaturan kernel thread lebih lambat dibandingkan user thread.
2. User-level threading
Sebuah pemetaan many-to-one, yang berarti bahwa semua level aplikasi thread
dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini pergantian
proses dapat dilakukan dengan cepat. Thread pengguna didukung kernel sehingga
diimplementasikan dengan library thread pada tingkatan pengguna. Library
menyediakan fasilitas untuk pembuatan, penjadwalan dan manajemen thread tanpa
dukungan dari kernel. Semua pembuatan dan penjadwalan thread dilakukan dalam
ruang pengguna tanpa campur tangan kernel.
Model multi-threading terbagi menjadi tiga, yaitu:
1. Many-to-one
Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread
tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga lebih
efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu
waktu.
2. One-to-one
Model ini memetakan setiap thread tingkatan pengguna ke thread kernel. Model ini
menyediakan lebih banyak konkurensi dibandingkan model many-to-one.
3. Many-to-many
Model ini mengelompokkan banyak thread pengguna untuk dipetakan ke thread
kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. Model ini
juga mengizinkan sistem operasi untuk membuat sejumlah thread kernel.

2.2.1. Thread Cancellation


Thread cancellation atau pembatalan thread adalah pemberhentian thread sebelum
tugasnya selesai. Misalnya jika dalam program Java ingin mematikan Java Virtuan
Machine, sebelum Java Virtual Machine dimatikan, maka seluruh thread yang

10
berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan disebut
dengan target thread. Pembatalan terdiri dari dua jenis:
1. Asynchronous cancellation
Suatu thread saat itu juga akan memberhentikan target thread.
2. Deffered cancellation
Target thread secara periodic memeriksa apakah ia harus berhenti atau tidak, cara ini
memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

2.2.2. Thread Pools


Thread pools adalah cara kerja dengan membuat beberapa thread pada proses
startupdan menempatkan mereka ke pools.
Keuntungan menggunakan thread pools:
1. Lebih cepat melayani permintaan dengan thread yang ada dibanding dengan
menunggu thread baru dibuat.
2. Thread pools membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting
pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara
concurrent.

2.3. Buffer
Buffer merupakan bagian dari memori pada perangkat komputer yang
berfungsi untuk menyediakan tempat sementara untuk data sebelum diproses. Selain
itu buffer juga berfungsi untuk membantu meminimalkan potensi kerusakan data
pada saat diproses. Salah satu mekanisme dasar yang ditemukan pada buffer data
adalah bahwa informasi diproses dalam urutan logis yang lebih dikenal dengan
sebutan First in First Out atau FIFO buffering.
Dengan adanya buffer, dapat membantu suatu sistem yang kewalahan pada
saat memproses permintaan oleh para pengguna serta membantu mengurutkan urutan
permintaan proses yang dilakukan oleh pengguna.
Sebagai bagian dari proses, buffer data dapat melakukan dua tugas utama
pada satu waktu. Contohnya tugas pertama menulis data ke tempat penyimpanan

11
sementara dari memori sekaligus sebagai persiapan untuk merespon permintaan
pengguna. Tugas kedua difokuskan untuk membaca data dengan menggunakan
protokol yang telah ditentukan untuk membantu dalam proses aliran data informasi
secara teratur dan benar.
Buffering digunakan karena beberapa alasan, antara lain:
1. Untuk mengatasi perbedaan kecepatan antara produsen dan konsumen dari sebuah
aliran data.
Sebagai contoh, sebuah berkas diterima melalui sebuah modem dan disimpan ke
harddisk. Kita tahu bahwa modem itu ribuan kali lebih lambat daripada harddisk.
Sehingga sebuah buffer dibuat pada memori utama untuk menampung sejumlah byte
yang diterima dari modem. Ketika semua data sudah sampai di buffer, buffer dapat
ditulis ke disk dengan operasi tunggal. Karena penulisan ke disk tidak terjadi
seketika dan modem masih membutuhkan ruang untuk menyimpan data tambahan
yang masuk, maka digunakanlah dua buffer. Setelah modem mengisi buffer pertama,
penulisan ke disk dilakukan. Modem kemudian mulai mengisi buffer kedua
sementara buffer pertama ditulis ke disk. Pada saat modem sudah mengisi buffer
kedua, penulisan disk dari buffer pertama seharusnya sudah selesai sehingga modem
dapat menggunakan kembali buffer pertama ketika buffer kedua melakukan
penulisan ke disk. Metode ini disebut double buffering.
2. Untuk menyesuaikan antara perangkat-perangkat yang mempunyai perbeaan ukuran
transfer data.
Perbedaan ukuran transfer data ini sangat umum terjadi pada jaringan komputer
dimana buffer digunakan secara luas untuk fragmentasi dan pengaturan kembali
pesan-pesan. Pada bagian pengiriman, pesan yang ukurannya besar akan dipecah-
pecah menjadi paket-paket kecil (fragmentasi). Paket-paket ini dikirim melalui
jaringan, di ruang penerimaan, paket-paket kecil tadi diletakkan dalam buffer untuk
disatukan kembali.
3. Untuk mendukung copy semantik pada aplikasi I/O.
Sebuah contoh akan menjelaskan arti dari copy semantik. Misalkan sebuah aplikasi
mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan

12
memanggil system call write, lalu menyediakan sebuah pointer ke buffer dan sebuah
bilangan bulat (integer) yang menspesifikasikan jumlah byte yang ditulis. Setelah
system call selesai, versi data yang ditulis ke disk sama dengan versi data pada saat
aplikasi memanggil system call write, tidak tergantung dengan perubahan apapun
yang ada pada buffer. Cara sederhana sistem operasi dapat menjamin copy semantik
adalah untuk system call write dengan menyalin data aplikasi ke buffer kernel
sebelum mengembalikan kontrol ke aplikasi. Penulisan ke disk dilakukan dari buffer
kernel sehingga perubahan yang terjadi pada buffer aplikasi tidak mempunyai efek
apapun. Menyalin data antara buffer kernel dan buffer aplikasi adalah hal yang
umum dalam sistem operasi. Efek yang diperoleh adalah hasil lebih efisien dengan
penggunaan yang cermat pada pemetaan memori virtual dan perlindungan halaman
copy-on-write.

BAB III

PENUTUP

3.1. Kesimpulan
 Memori merupakan pusat dari operasi pada sistem komputer modern yang berfungsi
sebagai tempat penyimpanan informasi. Sedangkan manajemen memori adalah suatu
kegiatan untuk mengelola memori komputer.
3.2. Saran

13
DAFTAR PUSTAKA

Masyarakat Digital Gotong Royong (MDGR), Pengantar Sistem Operasi Komputer,


2006

Bambang H, Sistem Operasi, Revisi Kelima, Penerbit Informatika, 2012

https://www.academia.edu/34608699/Definisi_Manajemen_Memori

Diakses pada 24 Februari 2019 pukul 20.03 WIB

https://www.sridianti.com/perbedaan-proses-dan-thread-dalam-os.html

Diakses pada 24 Februari 2019 pukul 20.14 WIB

https://id.m.wikipedia.org/wiki/Memori_(komputer)

Diakses pada 23 Maret 2019 pukul 18.27 WIB

http://openstorage.gunadarma.ac.id/linux/docs/v06/

Diakses pada 31 Maret 2019 pukul 13.47 WIB

http://www.zetmagz.com/2016/09/apa-itu-buffer-data.html?m=1

Diakses pada 31 Maret 2019 pukul 13.48 WIB

14