Memory
Memori --> Untuk proses pada sebuah instruksi
Hirarki memory
-Register
-Chace memory
-Main memory
-Secondary memory
Klsifikasi memory ada 2 :
1. internal
2. eksternal
1.Memory Internal --> memory dalam CPU : Register , chace memory , main memory.
2.Memory Eksternal --> memory di luar CPU
• secondary memory --> penyimpanan permanent.
• Main memory --> tidak permanent.
*Metode acces memory :
1. sequential acces
-memory di organisasi menjadi unit unit data yang disebut record.
-acces di bentuk pada urutan linier specific.
Contoh : pita magnetic
2. direct acces
-setiap record mempunyai alamat unit berdasar lokasi fisiknya
-acces dilakukan langsung pada alamat memory
Contoh : hardisk
3. random acces
-setiap acces memory itu di random dan di alamati secra langsung.
Contoh : main memory
4. associative acces
-ada proses ini data di cari berdasarkan isinya bukan alamatnya.
Contoh : chace memory
Secara fisiknya memory di bedakan jadi 2 yaitu :
1. volatile(erasable) jenis informasi akan hilang informasinya apabila daya listrik dimatikan.
2. non volatile(non erasable) memory yg tidak hilang walau listriknya di matikan.
Jenis memory ada 2 :
1. RAM --> random acces memory
Suatu bentuk memory volatile yang dapat di baca dan di tulis oleh CPU
2. ROM --> read only memory
- di isi pada saat produksi
- data yang di simpan bias permanent
3. PROM --> programmable read only memory
Dapat di program setelah pembuatan chip.
Variasi dari PROM :
a. EPROM
b. OTP
c. EEPROM
a. EPROM dapat di hapus dengan menyinarinya denga ultra vioet.
b. OTP (one time progaming)
Sekali program dan isinya tidak bias di hapus.
c. EEPROM (electrical erasable progamable read only memory )
Dapat di hapus secara elektrik dengan perinta menggunakan micro controller.
21:28 | Labels: Sistem Operasi | 0 Comments
Set Instruksi
Set Instruksi
Tujuan
-Memahami representasi set instruksi dan jenis-jenis format instruksi.
-Mengetahui jenis-jenis type operand yang digunakan.
-Macam-macam mode pengalamatan
-Format instruksi
-Format instruksi pada pentium
-Memahami implementasi set instruksi pada pentium II
Sasaran
-Pengetahuan tentang set instruksi sangat dirasakan manfaatnya oleh programmer bahasa tingkat rendah,
seperti bahasa assembler.
-Bagi programmer bahasa tingkat rendah sangat memerlukan informasi tentang penggunaan register
dan spesifikasinya, struktur memory, maupun format instruksi.
-Bab ini juga akan membahas tentang karakteristik mesin instruksi, tipe-tipe operasi,
mode pengalamatan dan format instruksi.
Karakteristik instruksi mesin
1.Instruksi mesin (machine instruction) yang dieksekusi membentuk suatu operasi dan berbagai macam fungsi CPU.
2.Kumpulan fungsi yang dapat dieksekusi CPU disebut set instruksi (instruction set) CPU.
3.Mempelajari karakteristik instruksi mesin, meliputi:
- elemen-elemen instruksi mesin
- representasi instruksinya
- jenis-jenis instruksi
- penggunaan alamat
- rancangan set instruksi
1. Elemen Instruksi Mesin
-Untuk dapat dieksekusi CPU, suatu instruksi harus berisi elemen informasi yang diperlukan CPU secara lengkap dan jelas.
-Elemen – elemennya:
1. Operation Code (Opcode)
menspesifikasikan operasi yang akan dilakukan. Kode operasi berbentuk kode biner.
2. Source Operand Reference
operasi dapat berasal dari lebih satu sumber. Operand adalah input instruksi.
3. Result Operand Reference
Merupakan hasil atau keluaran operasi.
4. Next Instruction Reference
elemen ini menginformasikan CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi
Operand dari Operasi
Melihat dari operasi, operand suatu operasi dapat berada di salah satu dari ketiga daerah berikut:
- memori utama atau memori virtual
- register CPU
- perangkat I/O
2. Representasi Instruksi
-Instruksi komputer direpresentasikan oleh sekumpulan bit. Instruksi dibagi menjadi beberapa field.
-Field-field ini diisi oleh elemen-elemen instruksi yang membawa informasi bagi operasi CPU.
-Layout instruksi dikenal dengan format instruksi.
Format Instruksi
[opcode] [alamat]
* Kode operasi (opcode) direpresentasikan dengan singkatan-singkatan yang disebut mnemonic.
* Mnemonic mengindikasikan suatu operasi bagi CPU.
* Contoh mnemonic:
- ADD = penambahan
- SUB = subtract (pengurangan)
- LOAD = muatkan data ke memori
*Contoh representasi operand secara simbolik:
- ADD X, Y
artinya: tambahkan nilai yang berada pada lokasi Y dengan isi register X dan simpan hasilnya di register X.
*Programmer dapat menuliskan program bahasa mesin dalam bentuk simbolik.
*Setiap opcode simbolik memiliki representasi biner yang tetap dan programmer dapat menetapkan lokasi masing-masing operand.
3. Jenis – jenis Instruksi
Contoh suatu ekspresi bilangan:
X = X + Y;
X dan Y berkorespondensi dengan lokasi 210 dan 211.
Pernyataan dalam bahasa tingkat tinggi tersebut menginstruksikan komputer untuk melakukan
langkah berikut ini:
-Muatkan sebuah register dengan isi lokasi memori 210.
-Tambahkan isi lokasi memori 211 ke register.
-Simpan isi register ke lokasi memori 210.
Korelasi
-Terlihat hubungan antara ekspresi bahasa tingkat tinggi dengan bahasa mesin.
-Dalam bahasa tangkat tinggi, operasi dinyatakan dalam bentuk aljabar singkat menggunakan variabel.
-Dalam bahasa mesin hal tersebut diekspresikan dalam operasi perpindahan antar register.
-Dapat ditarik kesimpulan bahwa instruksi-instruksi mesin harus mampu mengolah data sebagai implementasi keinginan-keinginan kita.
-Terdapat kumpulan unik set instruksi, yang dapat digolongkan dalam jenis-jenisnya, yaitu:
*.Pengolahan data (data processing)
Meliputi operasi-operasi aritmatika dan logika. Operasi aritmatika memiliki kemampuan komputasi
untuk pengolahan data numerik. Sedangkan instruksi logika beroperasi terhadap bit-bit word sebagai
bit, bukannya sebagai bilangan, sehingga instruksi ini memiliki kemampuan untuk pengolahan data lain.
*.Perpindahan data (data movement)
berisi instruksi perpindahan data antar register maupun modul I/O.
untuk dapat diolah oleh CPU maka diperlukan instruksi-instruksi yang bertugas memindahkan
data operand yang diperlukan.
*.Penyimpanan data (data storage)
berisi instruksi-instruksi penyimpanan ke memori. Instruksi penyimpanan sangat penting
dalam operasi komputasi, karena data tersebut akan digunakan untuk operasi berikutnya,
minimal untuk ditampilkan pada layar harus diadakan penyimpanan walaupun sementara.
*.Kontrol aliran program (program flow control)
berisi instruksi pengontrolan operasi dan percabangan. Instruksi ini berfungsi untuk pengontrolan status dan mengoperasikan percabangan ke set instruksi lain.
4. Jumlah Alamat
-Jumlah register atau alamat yang digunakan dalam operasi CPU tergantung format masing-masing CPU.
-Ada format operasi yang menggunakan 3, 2, 1 dan 0 register.
-Umumnya yang digunakan adalah 2 register dalam satu operasi.
-Desain CPU saat ini telah menggunakan 3 alamat dalam satu operasi,
-terutama dalam MIPS. (million instruction per second)
-Alamat instruksi yang lebih sedikit akan membuat instruksi lebih sederhana dan pendek, tetapi lebih sulit diimplementasikan fungsi-fungsi yang kita inginkan.
-Karena instruksi CPU sederhana maka rancangan CPU juga lebih sederhana.
-Jumlah bit dan referensi per instruksi lebih sedikit sehingga fetch dan eksekusi lebih cepat.
-Jumlah instruksi per program biasanya jauh lebih banyak.
-Pada jumlah alamat per instruksi banyak, jumlah bit dan referensi instruksi lebih banyak sehingga waktu eksekusi lebih lama.
-Diperlukan register CPU yang banyak, namun operasi antar register lebih cepat.
-Lebih mudah mengimplementasikan fungsi-fungsi yang kita inginkan.
-Jumlah instruksi per program jauh lebih sedikit.
-Untuk lebih jelas perhatikan contoh instruksi – instruksi dengan jumlah register berbeda untuk menyelesaikan persoalan yang sama.
Contoh penggunaan instruksi dengan alamat 1, 2 dan 3 untuk menyelesaikan operasi hitungan:
Y = (A - B) : (C + D * E)
Contoh instruksi 2 dan 3 alamat
Instruksi 3 alamat
Instruksi Komentar
SUB Y, A, B Y =A — EI
MF'Y T, D, E T= D >< E
ADD T, T, C T=T + C
DIV Y, Y, T Y= Y + T
Instruksi 2 alamat
Instruksi KOmmentar
MOVE Y, A Y = A
SUB Y, B Y = Y - B
MOVE T, D T = D
MPY T, E T = T E
ADD T, C T = T + C
DIV Y, T Y = Y + T
Contoh instruksi 1 alamat
Instruksi Komentar
LOAD D AC =D
MPY E AC = AC E
ADD C AC= AC + C
STOP Y Y = AC
LOAD A AC = A
SUB B AC = AC - B
DN Y AC =AC + Y
STOP Y Y= AC
Instruksi Keterangan isi stack
PUSH B B
PUSH A B.A
SUB A-B (A-B)
PUSH E (A·B).E
PUSH D (A-B).E.D
MUL D*E (A-B).(D*E)
PUSH C [A-B).(D*E).C
ADD C+(D*E) (A-B).(C+D*E)
DIV {A-B)/(C+(D*E)} (A-B)/(C+(D"E}}
Spesifikasi instruksi 3 alamat
-Simbolik: a = b + c
-Format alamat: hasil, operand1, operand2
-Digunakan dalam arsitektur MIPS
Spesifikasi instruksi 2 alamat
-Simbolik: a = a + b
-Satu alamat diisi operand terlebih dahulu kemudian digunakan untuk menyimpan hasilnya.
-Tidak memerlukan instruksi yang panjang.
-Jumlah instruksi per program akan lebih banyak dari 3 alamat.
-Diperlukan penyimpanan sementara untuk menyimpan hasil.
Spesifikasi instruksi 1 alamat
-Memerlukan alamat implisit untuk operasi
-Menggunakan register accumulator (AC) dan digunakan pada mesin lama.
Spesifikasi instruksi 0 alamat
-Seluruh alamat yang digunakan adalah implisit
-Digunakan pada organisasi memori, terutama operasi stack
5. Rancangan Set Instruksi
-Aspek paling menarik dalam arsitektur komputer adalah perancangan ini berpengaruh banyak pada aspek lainnya.
-Set instruksi menentukan banyaknya fungsi yang harus dilakukan CPU.
-Set instruksi merupakan alat bagi pemrogram untuk mengontrol kerja CPU.
-Pertimbangan: kebutuhan pemrogram menjadi bahan pertimbangan dalam merancang set instruksi.
Masalah yang fundamental meliputi:
*Operation repertoire:
Berapa banyak dan operasi-operasi apa yang tersedia.
Sekompleks apakah operasi itu seharusnya
*Data Types:
Jenis data
Format data
*Instruction format:
Panjang instruksi
Jumlah alamat
Ukuran field
*Register:
Jumlah register CPU yang dapat direferensikan oleh instruksi dan fungsinya
*Addressing:
Mode untuk menspesifikasikan alamat suatu operand
Tipe Operasi
Dalam perancangan arsitektur komputer, jumlah kode operasi akan sangat berbeda untuk masing-masing komputer,
tetapi terdapat kemiripan dalam jenis operasinya.
Jenis operasi komputer
-Transfer data – konversi
-Aritmatika – input/output
-Logika – kontrol sistem dan transfer kontrol
Transfer Data
1.Instruksi transfer data harus menetapkan:
-Lokasi operand sumber
-Lokasi operand tujuan
-Panjang data yang akan dipindahkan
-Mode pengalamatannya
2.Apabila sebuah atau kedua operand berada di dalam memori, maka CPU harus melakukan sebagian atau seluruh tindakan berikut:
-Menghitung alamat memori, yang didasarkan pada mode alamat.
-Apabila alamat mengacu pada virtual memori harus dicari alamat memori sebenarnya.
-Menentukan apakah alamat berada dalam cache memori.
-Bila di cache tidak ada, dikeluarkan perintah ke modul memori.
13:52 | Labels: Sistem Operasi | 0 Comments
Memori Virtual
Memori Virtual
Selama bertahun-tahun, pelaksanaan berbagai strategi managemen memori yang ada menuntut keseluruhan bagian proses berada di memori sebelum proses dapat mulai dieksekusi. Dengan kata lain, semua bagian proses harus memiliki alokasi sendiri pada memori fisiknya.
Pada nyatanya tidak semua bagian dari program tersebut akan diproses, misalnya:
Terdapat pernyataan-pernyataan atau pilihan yang hanya akan dieksekusi jika kondisi tertentu dipenuhi. Apabila kondisi tersebut tidak dipenuhi, maka pilihan tersebut tak akan pernah dieksekusi/ diproses. Contoh dari pilihan itu adalah: pesan-pesan error yang hanya akan muncul bila terjadi kesalahan dalam eksekusi program.
Terdapat fungsi-fungsi yang jarang digunakan, bahkan sampai lebih dari 100x pemakaian.
Terdapat pealokasian memori lebih besar dari yang sebenarnya dibutuhkan. Contoh pada: array, list, dan tabel.
Hal-hal di atas telah menurunkan optimalitasi utilitas dari ruang memori fisik. Pada memori berkapasitas besar, hal ini mungkin tidak menjadi masalah. Akan tetapi, bagaimana jika memori yang disediakan terbatas?
Salah satu cara untuk mengatasinya adalah dengan overlay dan dynamic loading . Namun hal ini menimbulkan masalah baru karena implementasinya yang rumit dan penulisan program yang akan memakan tempat di memori. Tujuan semula untuk menghemat memori bisa jadi malah tidak tercapai apabila program untuk overlay dan dynamic loading . malah lebih besar daripada program yang sebenarnya ingin dieksekusi.
Maka sebagai solusi untuk masalah-masalah ini digunakanlah konsep memori virtual.
Pengertian
Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh bagian program perlu ikut masuk ke dalam memori.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori utama yang tersedia.
Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."
Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang : 2001).
Keuntungan
Sebagaimana dikatakan di atas bahwa hanya sebagian dari program yang diletakkan di memori. Hal ini berakibat pada:
Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal, untuk program butuh membaca dari disk dan memasukkan dalam memory setiap kali diakses.
Berkurangnya memori yang dibutuhkan (space menjadi lebih leluasa). Contoh, untuk program 10 MB tidak seluruh bagian dimasukkan dalam memori. Pesan-pesan error hanya dimasukkan jika terjadi error.
Meningkatnya respon, sebagai konsekuensi dari menurunnya beban I/O dan memori.
Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari user.
Implementasi
Gagasan dari memori virtual adalah ukuran gabungan program, data dan stack melampaui jumlah memori fisik yang tersedia. Sistem operasi menyimpan bagian-bagian proses yang sedang digunakan di memori utama (main memory) dan sisanya ditaruh di disk. Begitu bagian di disk diperlukan, maka bagian di memori yang tidak diperlukan akan disingkirkan (swap-out) dan diganti (swap-in) oleh bagian disk yang diperlukan itu.
Memori virtual diimplementasikan dalam sistem multiprogramming. Misalnya: 10 program dengan ukuran 2 Mb dapat berjalan di memori berkapasitas 4 Mb. Tiap program dialokasikan 256 KByte dan bagian-bagian proses di-swap masuk dan keluar memori begitu diperlukan. Dengan demikian, sistem multiprogramming menjadi lebih efisien.
Memori virtual dapat dilakukan melalui dua cara:
1.Permintaan pemberian halaman (demand paging).
2.Permintaan segmentasi (demand segmentation). Contoh: IBM OS/2. Algoritma dari permintaan segmentasi lebih kompleks, karenanya jarang diimplementasikan.
Permintaan Pemberian Halaman (Demand Paging)
Merupakan implementasi yang paling umum dari memori virtual.
Prinsip permintaan pemberian halaman (demand paging) hampir sama dengan sistem penomoran (paging) dengan menggunakan swapping. Perbedaannya adalah page pada permintaan pemberian halaman tidak akan pernah di-swap ke memori sampai ia benar-benar diperlukan. Untuk itu diperlukan adanya pengecekan dengan bantuan perangkat keras mengenai lokasi dari page saat ia dibutuhkan.
Permasalahan pada Page Fault
Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan pada page yang dibutuhkan, yaitu:
1.
Page ada dan sudah berada di memori.
2.
Page ada tetapi belum ditaruh di memori (harus menunggu sampai dimasukkan).
3.
Page tidak ada, baik di memori mau pun di disk (invalid reference --> abort).
Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami page fault.
Skema Bit Valid - Tidak Valid
Dengan meminjam konsep yang sudah pernah dijelaskan dalam Bab 9, maka dapat ditentukan page mana yang ada di dalam memori dan mana yang tidak ada di dalam memori.
Konsep itu adalah skema bit valid - tidak valid, di mana di sini pengertian "valid" berarti bahwa page legal dan berada dalam memori (kasus 1), sedangkan "tidak valid" berarti page tidak ada (kasus 3) atau page ada tapi tidak ditemui di memori (kasus 2).
Pengesetan bit:
Bit 1 -->
page berada di memori
Bit 0 -->
page tidak berada di
memori.
(Dengan inisialisasi: semua bit
di-set 0).
Apabila ternyata hasil dari translasi, bit page = 0, berarti page fault terjadi.
Penanganan Page Fault
Prosedur penanganan page fault sebagaimana tertulis di buku Operating System Concept 5th Ed. halaman 294 adalah sebagai berikut:
1.
Cek tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.
2.
Apabila tidak valid, program akan di-terminate (interupsi oleh illegal address trap).
3.
Memilih frame kosong (free-frame), misal dari free-frame list. Jika tidak ditemui ada frame yang kosong, maka dilakukan swap-out dari memori. Frame mana yang harus di-swap-out akan ditentukan oleh algoritma (lihat sub bab Page Replacement).
4.
Menjadualkan operasi disk untuk membaca page yang diinginkan ke frame yang baru dialokasikan.
5.
Ketika pembacaan komplit, tabel internal akan dimodifikasi dan page diidentifikasi ada di memori.
6.
Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi page fault terjadi saat instruksi di-fetch, maka akan dilakukan fecthing lagi. Jika terjadi saat operan sedang di-fetch, maka harus dilakukan fetch ulang, decode, dan fetch operan lagi.
Permasalahan Lain yang berhubungan dengan Demand Paging
Sebagaimana dilihat di atas, bahwa ternyata penanganan page fault menimbulkan masalah-masalah baru pada proses restart instruction yang berhubungan dengan arsitektur komputer.
Masalah yang terjadi, antara lain mencakup:
1.
Bagaimana mengulang instruksi yang memiliki beberapa lokasi yang berbeda?
2.
Bagaimana pengalamatan dengan menggunakan special-addresing mode, termasuk autoincrement dan autodecrement mode?
3.
Bagaimana jika instruksi yang dieksekusi panjang (contoh: block move)?
Masalah pertama dapat diatasi dengan dua cara yang berbeda.
*
komputasi microcode dan berusaha untuk mengakses kedua ujung dari blok, agar tidak ada modifikasi page yang sempat terjadi.
*
memanfaatkan register sementara (temporary register ) untuk menyimpan nilai yang sempat tertimpa/ termodifikasi oleh nilai lain.
Masalah kedua diatasi dengan menciptakan suatu special-status register baru yang berfungsi menyimpan nomor register dan banyak perubahan yang terjadi sepanjang eksekusi instruksi.
Sedangkan masalah ketiga diatasi dengan mengeset bit FPD (first phase done) sehingga restart instruction tidak akan dimulai dari awal program, melainkan dari tempat program terakhir dieksekusi.
Persyaratan Perangkat Keras
Pemberian nomor halaman melibatkan dukungan perangkat keras, sehingga ada persyaratan perangkat keras yang harus dipenuhi. Perangkat-perangkat keras tersebut sama dengan yang digunakan untuk paging dan swapping, yaitu:
*Page-table, menandai bit valid-tidak valid.
*Secondary memory, tempat menyimpan page yang tidak ada di memori utama.
Lebih lanjut, sebagai konsekuensi dari persyaratan ini, akan diperlukan pula perangkat lunak yang dapat mendukung terciptanya pemberian nomor halaman.
Pemindahan Halaman
Pada dasarnya, kesalahan halaman (page fault) sudah tidak lagi menjadi masalah yang terlalu dianggap serius. Hal ini disebabkan karena masing-masing halaman pasti akan mengalami paling tidak satu kali kesalahan dalam pemberian halaman, yakni ketika halaman ini ditunjuk untuk pertama kalinya. Representasi seperti ini sebenarnya tidaklah terlalu akurat. Berdasarkan pertimbangan tersebut, sebenarnya proses-proses yang memiliki 10 halaman hanya akan menggunakan setengah dari jumlah seluruh halaman yang dimilikinya. Kemudian demand paging akan menyimpan I/O yang dibutuhkan untuk mengisi 5 halaman yang belum pernah digunakan. Kita juga dapat meningkatkan derajat multiprogramming dengan menjalankan banyak proses sebanyak 2 kali.
Jika kita meningkatkan derajat multiprogramming, itu sama artinya dengan melakukan over-allocating terhadap memori. Jika kita menjalankan 6 proses, dengan masing-masing mendapatkan 10 halaman, walau pun sebenarnya yang digunakan hanya 5 halaman, kita akan memiliki utilisasi CPU dan throughput yang lebih tinggi dengan 10 frame yang masih kosong.
Lebih jauh lagi, kita harus mempertimbangkan bahwa sistem memori tidak hanya digunakan untuk menangani pengalamatan suatu program. Penyangga (buffer) untuk I/O juga menggunakan sejumlah memori. Penggunaan ini dapat meningkatkan pemakaian algoritma dalam penempatan di memori. Beberapa sistem mengalokasikan secara pasti beberapa persen dari memori yang dimilikinya untuk penyangga I/O, dimana keduanya, baik proses pengguna mau pun subsistem dari I/O saling berlomba untuk memanfaatkan seluruh sistem memori.
Skema Dasar
Pemindahan halaman mengambil pendekatan seperti berikut. Jika tidak ada frame yang kosong, kita mencari frame yang tidak sedang digunakan dan mengosongkannya. Kita dapat mengosongkan sebuah frame dengan menuliskan isinya ke ruang pertukaran (swap space), dan merubah tabel halaman (juga tabel-tabel lainnya) untuk mengindikasikan bahwa halaman tesebut tidak akan lama berada di memori. Sekarang kita dapat menggunakan frame yang kosong sebagai penyimpan halaman dari proses yang salah. Rutinitas pemindahan halaman:
1.
Cari lokasi dari halaman yang diinginkan pada disk
2.
Cari frame kosong:
1.
Jika ada frame kosong, gunakan.
2.
Jika tidak ada frame kosong, gunakan algoritma pemindahan halaman untuk menyeleksi frame yang akan digunakan.
3.
Tulis halaman yang telah dipilih ke disk, ubah tabel halaman dan tabel frame.
3.
Baca halaman yang diinginkan kedalam frame kosong yang baru, ubah tabel halaman dan tabel frame.
4.
Ulang dari awal proses pengguna.
Jika tidak ada frame yang kosong, pentransferan dua halaman (satu masuk, satu keluar) akan dilakukan. Situasi ini secara efektif akan menggandakan waktu pelayanan kesalahan halaman dan meningkatkan waktu akses efektif. Kita dapat mengurangi pemborosan ini dengan menggunakan bit tambahan. Masing- masing halaman atau frame mungkin memiliki bit tambahan yang diasosiasikan didalam perangkat keras.
Pemindahan halaman merupakan dasar dari demand paging. Yang menjembatani pemisahan antara memori lojik dan memori fisik. Dengan mekanisme seperti ini, memori virtual yang sangat besar dapat disediakan untuk programmer dalam bentuk memori fisik yang lebih kecil. Dengan nondemand paging, alamat dari user dipetakan kedalam alamat fisik, jadi 2 set alamat dapat berbeda. Seluruh halaman dari proses masih harus berada di memori fisik. Dengan demand paging, ukuran dari ruang alamat logika sudah tidak dibatasi oleh memori fisik.
Kita harus menyelesaikan 2 masalah utama untuk mengimplementasikan demand paging. Kita harus mengembangkan algoritma pengalokasian frame dan algoritma pemindahan halaman. Jika kita memiliki banyak proses di memori, kita harus memutuskan berapa banyak frame yang akan dialokasikan ke masing-masing proses. Lebih jauh lagi, saat pemindahan halaman diinginkan, kita harus memilih frame yang akan dipindahkan. Membuat suatu algoritma yang tepat untuk menyelesaikan masalah ini adalah hal yang sangat penting.
Ada beberapa algoritma pemindahan halaman yang berbeda. Kemungkinan setiap Sistem Operasi memiliki skema pemindahan yang unik. Algoritma pemindahan yang baik adalah yang memiliki tingkat kesalahan halaman terendah.
Kita mengevaluasi algoritma dengan menjalankannya dalam string khusus di memori acuan dan menghitung jumlah kesalahan halaman. String dari memori acuan disebut string acuan (reference string).
Sebagai contoh, jika kita memeriksa proses khusus, kita mungkin akan mencatat urutan alamat seperti dibawah ini:
0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105,
dimana pada 100 bytes setiap halaman, diturunkan menjadi string acuan seperti berikut:
1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
Perlu diperhatikan bahwa selama jumlah frame meningkat, jumlah kesalahan halaman menurun. Penambahan memori fisik akan meningkatkan jumlah frame.
Pemindahan Halaman Secara FIFO
Algoritma ini adalah algoritma paling sederhana dalam hal pemindahan halaman. Algoritma pemindahan FIFO (First In First Out) mengasosiasikan waktu pada saat halaman dibawa kedalam memori dengan masing-masing halaman. Pada saat halaman harus dipindahkan, halaman yang paling tua yang dipilih. Sebagai contoh:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 4 4 4 0 0 0 7 7 7
0 0 0 3 3 3 2 2 2 1 1 1 0 0
1 1 1 0 0 0 3 3 3 2 2 2 1
frame halaman
Dari contoh diatas, terdapat 15 kesalahan halaman. Algoritma FIFO mudah untuk dipahami dan diimplementasikan. Namun performance-nya tidak selalu bagus. Salah satu kekurangan dari algoritma FIFO adalah kemungkinan terjadinya anomali Beladi, dimana dalam beberapa kasus, tingkat kesalahan akan meningkat seiring dengan peningkatan jumlah frame yang dialokasikan.
Pemindahan Halaman Secara Optimal
Salah satu akibat dari upaya mencegah terjadinya anomali Beladi adalah algoritma pemindahan halaman secara optimal. Algoritma ini memiliki tingkat kesalahan halaman terendah dibandingkan dengan algoritma-algoritma lainnya. Algoritma ini tidak akan mengalami anomaly Belady. Konsep utama dari algoritma ini adalah mengganti halaman yang tidak akan digunakan untuk jangka waktu yang paling lama. Algoritma ini menjamin kemungkinan tingkat kesalahan terendah untuk jumlah frame yang tetap. Sebagai contoh:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 2 7
0 0 0 0 4 0 0 0
1 1 3 3 3 1 1
Dari contoh diatas, terdapat 9 kesalahan halaman. Dengan hanya 9 kesalahan halaman, algoritma optimal jauh lebih baik daripada algoritma FIFO.
Perlu disayangkan, algoritma optimal susah untuk diimplementasikan kedalam program, karena algoritma ini menuntut pengetahuan tentang string acuan yang akan muncul.
Pemindahan Halaman Secara LRU
Jika algoritma optimal sulit untuk dilakukan, mungkin kita dapat melakukan pendekatan terhadap algoritma tersebut. Jika kita menggunakan waktu yang baru berlalu sebagai pendekatan terhadap waktu yang akan datang, kita akan memindahkan halaman yang sudah lama tidak digunakan dalam jangka waktu yang terlama. Pendekatan ini disebut algoritma LRU (Least Recently Used).
Algoritma LRU mengasosiasikan dengan masing-masing halaman waktu dari halaman yang terakhir digunakan. Ketika halaman harus dipindahkan, LRU memilih halaman yang paling lama tidak digunakan pada waktu yang lalu. Inilah algoritma LRU, melihat waktu yang telah lalu, bukan waktu yang akan datang. Sebagai contoh:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 4 4 4 0 1 1 1
0 0 0 0 0 0 3 3 3 0 0
1 1 3 3 2 2 2 2 2 7
frame halaman
Dari contoh diatas, terdapat 12 kesalahan halaman. Meski pun algoritma ini menghasilkan 12 kesalahan halaman, algoritma ini masih lebih baik daripada algoritma FIFO, yang menghasilkan 15 kesalahan halaman. Untuk mengimplementasikan algoritma LRU, terdapat 2 implementasi yang dapat digunakan, yaitu dengan counter dan stack.
Selain algoritma optimal, algoritma LRU juga dapat terhindar dari anomali Beladi. Salah satu kelas dari algoritma pemindahan halaman adalah algoritma stack, yang juga tidak akan pernah mengalami anomali Beladi. Algoritma stack ini menyimpan nomor-nomor halaman pada stack. Kapan pun suatu halaman ditunjuk, halaman ini dikeluarkan dari stack dan diletakkan di blok paling atas dari stack. Dengan cara seperti ini, blok paling atas dari stack selalu berisi halaman yang baru digunakan, sedangkan blok terbawah dari stack selalu berisi halaman yang sudah lama tidak digunakan. Karena suatu halaman dalam stack dapat dikeluarkan meski pun berada ditengah-tengah stack, maka implementasi terbaik untuk algoritma ini adalah dengan daftar mata rantai ganda (doubly linked list), dengan kepala dan ekor sebagai penunjuk. Pendekatan ini sangat tepat untuk perangkat lunak atau implementasi kode mikro dari algoritma LRU. Sebagai contoh:
4 7 0 7 1 0 1 2 1 2 7 1 2
4 7 0 7 1 0 1 2 1 2 7 1 2
4 7 0 7 1 0 1 2 1 2 7 1
4 4 0 7 7 0 0 0 1 2 7
4 4 4 7 7 7 0 0 0
4 4 4 4 4 4
frame halaman.
Pemindahan Halaman Secara Perkiraan LRU
Hanya sedikit sistem komputer yang menyediakan perangkat lunak yang memberikan cukup dukungan terhadap algoritma pemindahan halaman secara LRU. Banyak sistem yang tidak menyediakan perangkat lunak yang memberikan dukungan terhadap algoritma LRU, sehingga terpaksa menggunakan algoritma lain, seperti FIFO. Banyak sistem menyediakan bantuan untuk menangani masalah ini, misalnya dengan bit acuan. Bit acuan untuk halaman diset oleh perangkat lunak kapan pun halaman tersebut ditunjuk. Bit acuan diasosiasikan dengan masing-masing isi dari tabel halaman.
Awalnya, seluruh bit dikosongkan oleh sistem operasi. Selama proses pengguna dijalankan, bit yang diasosiasikan ke masing-masing halaman acuan diset menjadi 1 oleh perangkat keras. Setelah beberapa waktu, kita dapat menentukan halaman mana yang sudah digunakan dan halaman mana yang belum digunakan dengan menguji bit-bit acuan. Informasi tersebut memberikan informasi penting untuk banyak algoritma pemindahan halaman yang memperkirakan halaman mana yang sudah lama tidak digunakan.
Algoritma Additional-Reference-Bit
Kita bisa mendapatkan informasi tambahan mengenai urutan dengan mencatat bit-bit acuan pada suatu interval yang tetap. Kita dapat menyimpan 8-bit byte untuk masing-masing halaman pada tabel di memori. Pada interval tertentu, pencatat waktu (timer) melakukan interupsi dengan mentransfer kontrol kepada sistem operasi. Sistem operasi mengubah bit acuan untuk masing-masing halaman kedalam bit high-order dari 8-bit byte ini dan membuang bit low-order. Register pengganti 8-bit ini berisi sejarah penggunaan halaman dalam periode 8 waktu terakhir.
Sebagai contoh, seandainya register pengganti berisi 00000000, maka itu berarti halaman sudah tidak digunakan dalam periode 8 waktu terakhir, halaman yang digunakan paling tidak 1 kali akan memiliki nilai register penggati 11111111.
Algoritma Second-Chance
Algoritma "second-chance" didasari oleh algoritma FIFO. Pada saat suatu halaman ditunjuk, kita akan menginspeksi bit acuannya. Jika bit acuan tersebut bernilai 0, kita memproses untuk membuang halaman ini. Jika bit acuan tersebut bernilai 1, kita berikan kesempatan kedua untuk halaman ini dan menyeleksi halaman FIFO selanjutnya.
Ketika suatu halaman mendapatkan kesempatan kedua, bit acuannya dikosongkan dan waktu tibanya direset menjadi saat ini. Karena itu, halaman yang mendapatkan kesempatan kedua tidak akan dipindahkan sampai seluruh halaman dipindahkan. Tambahan lagi, jika halaman yang digunakan cukup untuk menampung 1 set bit acuan, maka halaman ini tidak akan pernah dipindahkan.
Algoritma Second-Chance (Yang Diperbaiki)
Kita dapat memperbaiki kekurangan dari algoritma second-chance dengan mempertimbangkan 2 hal sekaligus, yaitu bit acuan dan bit modifikasi. Dengan 2 bit ini, kita akan mendapatkan 4 kemungkinan yang akan terjadi, yaitu:
*
(0,0) tidak digunakan dan tidak dimodifikasi, bit terbaik untuk dipindahkan.
*
(0,1) tidak digunakan tapi dimodifikasi, tidak terlalu baik untuk dipindahkan karena halaman ini perlu ditulis sebelum dipindahkan.
*
(1,0) digunakan tapi tidak dimodifikasi, terdapat kemungkinan halaman ini akan segera digunakan lagi.
*
(1,1) digunakan dan dimodifikasi, halaman ini mungkin akan segera digunakan lagi dan halaman ini perlu ditulis ke disk sebelum dipindahkan.
Algoritma ini digunakan dalam skema manajemen memori virtual Macintosh.
Dasar Perhitungan Pemindahan Halaman
Banyak algoritma-algoritma lain yang dapat digunakan untuk pemindahan halaman. Sebagai contoh, kita dapat menyimpan counter dari nomor acuan yang sudah dibuat untuk masing-masing halaman, dan mengembangkan 2 skema dibawah ini:
ALGORITMA PEMINDAHAN HALAMAN LFU Algoritma LFU (Least Frequently Used) menginginkan halaman dengan nilai terkecil untuk dipindahkan. Alasannya, halaman yang digunakan secara aktif akan memiliki nilai acuan yang besar.
ALGORITMA PEMINDAHAN HALAMAN MFU Algoritma MFU (Most Frequently Used) didasarkan pada argumen yang menyatakan bahwa halaman dengan nilai terkecil mungkin baru saja dimasukkan dan baru digunakan.
Kedua algoritma diatas tidaklah terlalu umum, hal ini disebabkan karena implementasi dari kedua algoritma diatas sangatlah mahal.
Algoritma Page-Buffering
Prosedur lain sering digunakan untuk menambah kekhususan dari algoritma pemindahan halaman. Sebagai contoh, pada umumnya sistem menyimpan pool dari frame yang kosong. Prosedur ini memungkinkan suatu proses mengulang dari awal secepat mungkin, tanpa perlu menunggu halaman yang akan dipindahkan untuk ditulis ke disk karena frame-nya telah ditambahkan kedalam pool frame kosong.
Teknik seperti ini digunakan dalam sistem VAX/ VMS, dengan algoritma FIFO. Ketika algoritma FIFO melakukan kesalahan dengan memindahkan halaman yang masih digunakan secara aktif, halaman tersebut akan dengan cepat diambil kembali dari penyangga frame-kosong, untuk melakukan hal tersebut tidak ada I/O yang dibutuhkan. Metode ini diperlukan oleh VAX karena versi terbaru dari VAX tidak mengimplementasikan bit acuan secara tepat.
Alokasi Frame
Terdapat masalah dalam alokasi frame dalam penggunaan memori virtual, masalahnya yaitu bagaimana kita membagi memori yang bebas kepada berbagai proses yang sedang dikerjakan? Jika ada sejumlah frame bebas dan ada dua proses, berapakah frame yang didapatkan tiap proses?
Kasus paling mudah dari memori virtual adalah sistem satu pemakai. Misalkan sebuah sistem mempunyai memori 128K dengan ukuran halaman 1K, sehingga ada 128 frame. Sistem operasinya menggunakan 35K sehingga ada 93 frame yang tersisa untuk proses tiap user. Untuk pure demand paging, ke-93 frame tersebut akan ditaruh pada daftar frame bebas. Ketika sebuah proses user mulai dijalankan, akan terjadi sederetan page fault. Sebanyak 93 page fault pertama akan mendapatkan frame dari daftar frame bebas. Saat frame bebas sudah habis, sebuah algoritma pergantian halaman akan digunakan untuk memilih salah satu dari 93 halaman di memori yang diganti dengan yang ke 94, dan seterusnya. Ketika proses selesai atau diterminasi, sembilan puluh tiga frame tersebut akan disimpan lagi pada daftar frame bebas.
Terdapat macam-macam variasi untuk strategi sederhana ini, kita bisa meminta sistem operasi untuk mengalokasikan seluruh buffer dan ruang tabel-nya dari daftar frame bebas. Saat ruang ini tidak digunakan oleh sistem operasi, ruang ini bisa digunakan untuk mendukung paging dari user. Kita juga dapat menyimpan tiga frame bebas yang dari daftar frame bebas, sehingga ketika terjadi page fault, ada frame bebas yang dapat digunakan untuk paging. Saat pertukaran halaman terjadi, penggantinya dapat dipilih, kemudian ditulis ke disk, sementara proses user tetap berjalan.
Variasi lain juga ada, tetapi ide dasarnya tetap yaitu proses pengguna diberikan frame bebas yang mana saja. Masalah lain muncul ketika demand paging dikombinasikan dengan multiprogramming. Hal ini terjadi karena multiprogramming menaruh dua (atau lebih) proses di memori pada waktu yang bersamaan.
Jumlah Frame Minimum
Tentu saja ada berbagai batasan pada strategi kita untuk alokasi frame. Kita tidak dapat mengalokasikan lebih dari jumlah total frame yang tersedia (kecuali ada page sharing). Ada juga jumlah minimal frame yang dapat di alokasikan. Jelas sekali, seiring dengan bertambahnya jumlah frame yang dialokasikan ke setiap proses berkurang, tingkat page fault bertambah dan mengurangi kecepatan eksekusi proses.
Selain hal tersebut di atas, ada jumlah minimum frame yang harus dialokasikan. Jumlah minimum ini ditentukan oleh arsitektur set instruksi. Ingat bahwa ketika terjadi page fault, sebelum eksekusi instruksi selesai, instruksi tersebut harus diulang. Sehingga kita harus punya jumlah frame yang cukup untuk menampung semua halaman yang dirujuk oleh sebuah instruksi tunggal.
Jumlah minimum frame ditentukan oleh arsitektur komputer. Sebagai contoh, instruksi move pada PDP-11 adalah lebih dari satu kata untuk beberapa modus pengalamatan, sehingga instruksi tersebut bisa membutuhkan dua halaman. Sebagai tambahan, tiap operannya mungkin merujuk tidak langsung, sehingga total ada enam frame. Kasus terburuk untuk IBM 370 adalah instruksi MVC. Karena instruksi tersebut adalah instruksi perpindahan dari penyimpanan ke penyimpanan, instruksi ini butuh 6 bit dan dapat memakai dua halaman. Satu blok karakter yang akan dipindahkan dan daerah tujuan perpindahan juga dapat memakai dua halaman, sehingga situasi ini membutuhkan enam frame.
Kesimpulannya, jumlah minimum frame yang dibutuhkan per proses tergantung dari arsitektur komputer tersebut, sementara jumlah maksimumnya ditentukan oleh jumlah memori fisik yang tersedia. Di antara kedua jumlah tersebut, kita punya pilihan yang besar untuk alokasi frame.
Algoritma Alokasi
Cara termudah untuk membagi m frame terhadap n proses adalah untuk memberikan bagian yang sama, sebanyak m/n frame untuk tiap proses. Sebagai contoh ada 93 frame tersisa dan 5 proses, maka tiap proses akanmendapatkan 18 frame. Frame yang tersisa, sebanyak 3 buah dapat digunakan sebagai frame bebas cadangan. Strategi ini disebut equal allocation.
Sebuah alternatif yaitu pengertian bahwa berbagai proses akan membutuhkan jumlah memori yang berbeda. Jika ada sebuah proses sebesar 10K dan sebuah proses basis data 127K dan hanya kedua proses ini yang berjalan pada sistem, maka ketika ada 62 frame bebas, tidak masuk akal jika kita memberikan masing-masing proses 31 frame. Proses pertama hanya butuh 10 frame, 21 frame lain akan terbuang percuma.
Untuk menyelesaikan masalah ini, kita menggunakan proportional allocation. Kita mengalokasikan memori yang tersedia kepada setiap proses tergantung pada ukurannya.
Let the size of the virtual memory for process pi be si, and define S = si.
Lalu, jika jumlah total dari frame yang tersedia adalah m, kita mengalokasikan proses ai ke proses pi, dimana ai mendekati
ai = si / S x m
Dalam kedua strategi ini, tentu saja, alokasi untuk setiap proses bisa bervariasi berdasarkan multiprogramming level-nya. Jika multiprogramming level-nya meningkat, setiap proses akan kehilangan beberapa frame guna menyediakan memori yang dibutuhkan untuk proses yang baru. Di sisi lain, jika multiprogramming level-nya menurun, frame yang sudah dialokasikan pada bagian process sekarang bisa disebar ke proses-proses yang masih tersisa.
Mengingat hal itu, dengan equal atau pun proportional allocation, proses yang berprioritas tinggi diperlakukan sama dengan proses yang berprioritas rendah. Berdasarkan definisi tersebut, bagaimanapun juga, kita ingin memberi memori yang lebih pada proses yang berprioritas tinggi untuk mempercepat eksekusi-nya, to the detriment of low-priority processes.
Satu pendekatan adalah menggunakan proportional allocation scheme dimana perbandingan frame-nya tidak tergantung pada ukuran relatif dari proses, melainkan lebih pada prioritas proses, atau tergantung kombinasi dari ukuran dan prioritas.
Alokasi Global lawan Local
Faktor penting lain dalam cara-cara pengalokasian frame ke berbagai proses adalah penggantian halaman. Dengan proses-proses yang bersaing mendapatkan frame, kita dapat mengklasifikasikan algoritma penggantian halaman kedalam dua kategori broad: Penggantian Global dan Penggantian Lokal. Penggantian Global memperbolehkan sebuah proses untuk menyeleksi sebuah frame pengganti dari himpunan semua frame, meski pun frame tersebut sedang dialokasikan untuk beberapa proses lain; satu proses dapat mengambil sebuah frame dari proses yang lain. Penggantian Lokal mensyaratkan bahwa setiap proses boleh menyeleksi hanya dari himpunan frame yang telah teralokasi pada proses itu sendiri.
Untuk contoh, pertimbangkan sebuah skema alokasi dimana kita memperbolehkan proses berprioritas tinggi untuk meyeleksi frame dari proses berprioritas rendah untuk penggantian. Sebuah proses dapat menyeleksi sebuah pengganti dari frame-nya sendiri atau dari frame-frame proses yang berprioritas lebih rendah. Pendekatan ini memperbolehkan sebuah proses berprioritas tinggi untuk meningkatkan alokasi frame-nya pada expense proses berprioritas rendah.
Dengan strategi Penggantian Lokal, jumlah frame yang teralokasi pada sebuah proses tidak berubah. Dengan Penggantian Global, ada kemungkinan sebuah proses hanya menyeleksi frame-frame yang teralokasi pada proses lain, sehingga meningkatkan jumlah frame yang teralokasi pada proses itu sendiri (asumsi bahwa proses lain tidak memilih frame proses tersebut untuk penggantian).
Masalah pada algoritma Penggantian Global adalah bahwa sebuah proses tidak bisa mengontrol page-fault-nya sendiri. Himpunan halaman dalam memori untuk sebuah proses tergantung tidak hanya pada kelakuan paging dari proses tersebut, tetapi juga pada kelakuan paging dari proses lain. Karena itu, proses yang sama dapat tampil berbeda (memerlukan 0,5 detik untuk satu eksekusi dan 10,3 detik untuk eksekusi berikutnya) due to totally external circumstances. Dalam Penggantian Lokal, himpunan halaman dalam memori untuk sebuah proses hanya dipengaruhi kelakuan paging proses itu sendiri. Penggantian Lokal dapat menyembunyikan sebuah proses dengan membuatnya tidak tersedia bagi proses lain, menggunakan halaman yang lebih sedikit pada memori. Jadi, secara umum Penggantian Global menghasilkan sistem throughput yang lebih bagus, maka itu artinya metode yang paling sering digunakan.
Thrashing
Jika suatu proses tidak memiliki frame yang cukup, walau pun kita memiliki kemungkinan untuk mengurangi banyaknya frame yang dialokasikan menjadi minimum, tetap ada halaman dalam jumlah besar yang memiliki kondisi aktif menggunakannya. Maka hal ini akan mengakibatkan kesalahan halaman. Pada kasus ini, kita harus mengganti beberapa halaman menjadi halaman yang dibutuhkan walau pun halaman yang diganti pada waktu dekat akan dibutuhkan lagi. Hal ini mengakibatkan kesalahan terus menerus.
Aktivitas yang tinggi dari paging disebut thrashing. Suatu proses dikatakan thrashing jika proses menghabiskan waktu lebih banyak untuk paging daripada eksekusi (proses sibuk untuk melakukan swap-in swap-out).
Penyebab Thrashing
Penyebab dari thrashing adalah utilisasi CPU yang rendah. Jika utilisasi CPU terlalu rendah, kita menambahkan derajat dari multiprogramming dengan menambahkan proses baru ke sistem.
Sejalan dengan bertambahnya derajat dari multiprogramming, utilisasi CPU juga bertambah dengan lebih lambat sampai maksimumnya dicapai. Jika derajat dari multiprogramming ditambah terus menerus, utilisasi CPU akan berkurang dengan drastis dan terjadi thrashing. Untuk menambah utilisasi CPU dan menghentikan thrashing, kita harus mengurangi derajat dari multiprogramming.
Kita dapat membatasi efek dari thrashing dengan menggunakan algoritma penggantian lokal atau prioritas. Dengan penggantian lokal, jika satu proses mulai thrashing, proses tersebut tidak dapat mencuri frame dari proses yang lain dan menyebabkan proses tersebut tidak langsung mengalami thrashing. Jika proses thrashing, proses tersebut akan berada di antrian untuk melakukan paging yang mana hal ini memakan banyak waktu. Rata-rata waktu layanan untuk kesalahan halaman akan bertambah seiring dengan makin panjangnya rata-rata antrian untuk melakukan paging. Maka, waktu akses efektif akan bertambah walau pun untuk suatu proses yang tidak thrashing.
Untuk menghindari thrashing, kita harus menyediakan sebanyak mungkin frame sesuai dengan kebutuhan suatu proses. Cara untuk mengetahui berapa frame yang dibutuhkan salah satunya adalah dengan strategi Working Set yang akan dibahas pada bagian 10.5.2 yang mana strategi tersebut dimulai dengan melihat berapa banyak frame yang sesungguhnya digunakan oleh suatu proses. Ini merupakan model lokalitas dari suatu eksekusi proses.
Selama suatu proses dieksekusi, model lokalitas berpindah dari satu lokalitas ke lokalitas lainnya. Lokalitas adalah kumpulan halaman yang secara aktif digunakan bersama. Suatu program pada umumnya dibuat pada beberapa lokalitas, sehingga ada kemungkinan dapat terjadi overlap. Thrashing dapat muncul bila ukuran lokalitas lebih besar dari ukuran memori total.
Model Working Set
Model Working Set didasarkan pada asumsi lokalitas. Model ini menggunakan parameter (delta) untuk mendefinisikan jendela Working Set. Idenya adalah untuk menentukan halaman yang dituju yang paling sering muncul. Kumpulan dari halaman dengan halaman yang dituju yang paling sering muncul disebut Working Set. Working Set adalah pendekatan dari program lokalitas.
Contoh 4-1. Tabel Halaman
Jika terdapat tabel halaman yang dituju dengan
isinya
1 3 5 7 2 5 8 9 dengan
= 8,
Working Set pada waktu t1 adalah
{1, 2, 3, 5, 7, 8, 9}
Keakuratan Working Set tergantung pemilihan dari :
*
Jika terlalu kecil, tidak akan dapat mewakilkan keseluruhan dari lokalitas.
*
Jika terlalu besar, akan menyebabkan overlap beberapa lokalitas.
*
Jika tidak terbatas, Working Set adalah kumpulan halaman sepanjang eksekusi proses.
Jika kita menghitung ukuran dari Working Set, WWSi, untuk setiap proses pada sistem, kita hitung dengan D = WSSi, dimana D merupakan total demand untuk frame.
Jika total demand lebih dari total banyaknya frame yang tersedia (D > m), thrashing dapat terjadi karena beberapa proses akan tidak memiliki frame yang cukup. Jika hal tersebut terjadi, dilakukan satu pengeblokan dari proses-proses yang sedang berjalan.
Strategi Working Set menangani thrashing dengan tetap mempertahankan derajat dari multiprogramming setinggi mungkin.
Kesulitan dari model Working Set ini adalah menjaga track dari Working Set. Jendela Working Set adalah jendela yang bergerak. Suatu halaman berada pada Working Set jika halaman tersebut mengacu ke mana pun pada jendela Working Set. Kita dapat mendekati model Working Set dengan fixed interval timer interrupt dan reference bit.
Contoh: = 10000 reference, Timer interrupt setiap 5000 reference.
Ketika kita mendapat interrupt, kita kopi dan hapus nilai reference bit dari setiap halaman. Jika kesalahan halaman muncul, kita dapat menentukan current reference bit dan 2 pada bit memori untuk memutuskan apakah halaman itu digunakan dengan 10000 ke 15000 reference terakhir.
Jika digunakan, paling sedikit satu dari bit-bit ini akan aktif. Jika tidak digunakan, bit ini akan menjadi tidak aktif.
Halaman yang memiliki paling sedikit 1 bit aktif, akan berada di working-set.
Hal ini tidaklah sepenuhnya akurat karena kita tidak dapat memberitahukan dimana pada interval 5000 tersebut, reference muncul. Kita dapat mengurangi ketidakpastian dengan menambahkan sejarah bit kita dan frekuensi dari interrupt.
Contoh: 20 bit dan interrupt setiap 1500 reference.
Frekuensi Kesalahan Halaman
Working-set dapat berguna untuk prepaging, tetapi kurang dapat mengontrol thrashing. Strategi menggunakan frekuensi kesalahan halaman mengambil pendekatan yang lebih langsung.
thrashing memiliki kecepatan kesalahan halaman yang tinggi. Kita ingin mengontrolnya. Ketika terlalu tinggi, kita mengetahui bahwa proses membutuhkan frame lebih. Sama juga, jika terlalu rendah, maka proses mungkin memiliki terlalu banyak frame. Kita dapat menentukan batas atas dan bawah pada kecepatan kesalahan halaman.
Jika kecepatan kesalahan halaman yang sesungguhnya melampaui batas atas, kita mengalokasikan frame lain ke proses tersebut, sedangkan jika kecepatan kesalahan halaman di bawah batas bawah, kita pindahkan frame dari proses tersebut. Maka kita dapat secara langsung mengukur dan mengontrol kecepatan kesalahan halaman untuk mencegah thrashing.
Contoh Pada Sistem Operasi
Pada bagian ini kita akan membahas beberapa contoh dalam penggunaan memori virtual.
Windows NT
Windows NT mengimplementasikan memori virtual dengan menggunakan demand paging melalui clustering. Clustering menanganani page fault dengan menambahkan tidak hanya page yang terkena fault, tetapi juga beberapa page yang ada dekat pagetersebut. Saat proses pertama dibuat, dia diberikan Working Set minimum yaitu jumlah minimum page yang dijamin akan dimiliki oleh proses tersebut dalam memori. Jika memori yang cukup tersedia, proses dapat diberikan page sampai sebanyak Working Set maximum. Manager memori virtual akan menyimpan daftar dari frame page yang bebas. Terdapat juga sebuah nilai batasan yang diasosiasikan dengan daftar ini untuk mengindikasikan apakah memori yang tersedia masih mencukupi. Jika proses tersebut sudah sampai pada Working Set maximum-nya dan terjadi page fault, maka dia harus memilih page pengganti dengan menggunakan kebijakan penggantian page lokal FIFO.
Saat jumlah memori bebas jatuh di bawah nilai batasan, manager memori virtual menggunakan sebuah taktik yang dikenal sebagai automatic working set trimming untuk mengembalikan nilai tersebut di atas batasan. Hal ini bekerja dengan mengevaluasi jumlah page yang dialokasikan kepada proses. Jika proses telah mendapat alokasi page lebih besar daripada Working Set minimum-nya, manager memori virtual akan menggunakan algoritma FIFO untuk mengurangi jumlah page-nya sampai working-set minimum. Jika memori bebas sudah tersedia, proses yang bekerja pada working set minimum dapat mendapatkan page tambahan.
Solaris 2
Dalam sistem operasi Solaris 2, jika sebuah proses menyebabkan terjadi page fault, kernel akan memberikan page kepada proses Tersebut dari daftar page bebas yang disimpan. Akibat dari hal ini adalah, kernel harus menyimpan sejumlah memori bebas. Terhadap daftar ini ada dua parameter yg disimpan yaitu minfree dan lotsfree, yaitu batasan minimum dan maksimum dari memori bebas yang tersedia. Empat kali dalam tiap detiknya, kernel memeriksa jumlah memori yang bebas. Jika jumlah tersebut jatuh di bawah minfree, maka sebuah proses pageout akan dilakukan, dengan pekerjaan sebagai berikut. Pertama clock akan memeriksa semua page dalam memori dan mengeset bit referensi menjadi 0. Saat berikutnya, clock kedua akan memeriksa bit referensi page dalam memori, dan mengembalikan bit yang masih di set ke 0 ke daftar memori bebas. Hal ini dilakukan sampai jumlah memori bebas melampaui parameter lotsfree. Lebih lanjut, proses ini dinamis, dapat mengatur kecepatan jika memori terlalu sedikit. Jika proses ini tidak bisa membebaskan memori, maka kernel memulai pergantian proses untuk membebaskan page yang dialokasikan ke proses-proses tersebut.
Linux
Seperti pada solaris 2, linux juga menggunakan variasi dari algoritma clock. Thread dari kernel linux (kswapd) akan dijalankan secara periodik (atau dipanggil ketika penggunaan memori sudah berlebihan). Jika jumlah page yang bebas lebih sedikit dari batas atas page bebas, maka thread tersebut akan berusaha untuk membebaskan tiga page. Jika lebih sedikit dari batas bawah page bebas, thread tersebut akan berusaha untuk membebaskan 6 page dan 'tidur' untuk beberapa saat sebelum berjalan lagi. Saat dia berjalan, akan memeriksa mem_map, daftar dari semua page yang terdapat di memori. Setiap page mempunyai byte umur yang diinisialisasikan ke 3. Setiap kali page ini diakses, maka umur ini akan ditambahkan (hingga maksimum 20), setiap kali kswapd memeriksa page ini, maka umur akan dikurangi. Jika umur dari sebuah page sudah mencapai 0 maka dia bisa ditukar. Ketika kswapd berusaha membebaskan page, dia pertama akan membebaskan page dari cache, jika gagal dia akan mengurangi cache sistim berkas, dan jika semua cara sudah gagal, maka dia akan menghentikan sebuah proses. Alokasi memori pada linux menggunakan dua buah alokasi yang utama, yaitu algoritma buddy dan slab. Untuk algoritma buddy, setiap rutin pelaksanaan alokasi ini dipanggil, dia memeriksa blok memori berikutnya, jika ditemukan dia dialokasikan, jika tidak maka daftar tingkat berikutnya akan diperiksa. Jika ada blok bebas, maka akan dibagi jadi dua, yang satu dialokasikan dan yang lain dipindahkan ke daftar yang di bawahnya.
Pertimbangan Lain
Pemilihan algoritma penggantian dan aturan alokasi adalah keputusan-keputusan utama yang kita buat untuk sistem pemberian halaman. Masih banyak pertimbangan lain.
Sebelum Pemberian Halaman
Sebuah ciri dari sistem demand-paging adalah adanya page fault yang terjadi saat proses dimulai. Situasi ini adalah hasil dari percobaan untuk mendapatkan tempat pada awalnya. Situasi yang sama mungkin muncul di lain waktu. Saat proses swapped-out dimulai kembali, seluruh halaman ada di disk dan setiap halaman harus dibawa masuk oleh page-fault-nya masing-masing. Sebelum pemberian halaman mencoba untuk mencegah tingkat tinggi dari paging awal. Stateginya adalah untuk membawa seluruh halaman yang akan dibutuhkan pada satu waktu ke memori.
Pada sistem yang menggunakan model working-set, sebagai contoh, kita tetap dengan setiap proses sebuah daftar dari halaman-halaman di working-set-nya. Jika kita harus menunda sebuah proses (karena menunggu I/O atau kekurangan frame bebas), kita mengingat working-set untuk proses itu. Saat proses itu akan melanjutkan kembali (I/O komplit atau frame bebas yang cukup), kita secara otomatis membawa kembali ke memori seluruh working-set sebelum memulai kembali proses tersebut.
Sebelum pemberian halaman bisa unggul di beberapa kasus. Pertanyaan sederhananya adalah apakah biaya untuk menggunakan sebelum pemberian halaman itu lebih rendah daripada biaya melayani page-fault yang berhubungan. Itu mungkin menjadi kasus dimana banyak halaman dibawa kembali ke memori dengan sebelum pemberian halaman tidak digunakan.
Ukuran Halaman
Para perancang sistem operasi untuk mesin yang ada kini jarang memiliki pilihan terhadap ukuran halaman. Bagaimana pun, saat mesin-mesin baru sedang dibuat, pemilihan terhadap ukuran halaman terbaik harus dibuat. Seperti yang kau mungkin harapkan, tidak ada sebuah ukuran halaman yang terbaik. Namun, ada himpunan faktor-faktor yang mendukung ukuran-ukuran yang bervariasi. Ukuran-ukuran halaman selalu dengan pangkat 2, secara umum berkisar dari 4.096 (2^12) ke 4.194.304 (2^22) bytes
Bagaimana kita memilih sebuah ukuran halaman? Sebuah perhatian adalah ukuran dari tabel halaman. Untuk sebuah memori virtual dengan ukuran 4 megabytes (2^22), akan ada 4.096 halaman 1.024 bytes, tapi hanya 512 halaman 8.192 bytes. Sebab setiap proses aktif harus memiliki salinan dari tabel halamannya, sebuah halaman yang besar diinginkan.
Di sisi lain, memori lebih baik digunakan dengan halaman yang lebih kecil. Jika sebuah proses dialokasikan di memori mulai dari lokasi 00000, melanjutkan sampai memiliki sebanyak yang dibutuhkan, itu mungkin tidak akan berakhir secara tepat di batas halaman. Kemudian, sebuah bagian dari halaman terakhir harus dialokasikan (sebab halaman-halaman adalah unit-unit dari alokasi) tapi tidak digunakan (pemecahan bagian dalam). Asumsikan ketergantungan antara ukuran proses dan ukuran halaman, kita dapat mengharapkan bahwa, dalam rata-rata, satu-setengah dari halaman terakhir dari setiap proses akan dibuang. Kehilangan ini hanya 256 bytes dari sebuah halaman 512 bytes, tapi akan 4.096 bytes dari halaman 8.192 bytes. Untuk meminimalkan pemecahan bagian dalam, kita membutuhkan ukuran halaman yang kecil.
Masalah lain adalah waktu yang dibutuhkan untuk membaca atau menulis halaman. Waktu I/O terdiri dari mencari, keterlambatan dan waktu pemindahan. Waktu transfer proporsional terhadap jumlah yang dipindahkan (yaitu, ukuran tabel). Sebuah fakta bahwa yang mungkin terasa janggal untuk ukuran tabel yang kecil. Ingat kembali dari Bab 2, bagaimana pun, keterlambatan dan waktu pencarian normalnya membuat waktu pemindahan menjadi kecil. Pada saat laju pemindahan 2 megabytes per detik, hanya menghabiskan 0.2 millidetik untuk memindahkan 512 bytes. Keterlambatan, di sisi lain, kira-kira 8 millidetik dan waktu pencarian 20 millidetik. Dari total waktu I/O (28.2 millidetik), untuk itulah, 1 persen dapat dihubungkan dengan pemindahan sebenarnya. Menggandakan ukuran halaman meningkatkan waktu I/O hingga 28.4 millidetik. Menghabiskan 28.4 millidetik untuk membaca halaman tunggal dari dari 1.024 bytes, tapi 56.4 millidetik untuk jumlah yang sama sebesar dua halaman masing-masing 512 bytes. Kemudian, keinginan untuk meminimalisir waktu I/O untuk ukuran halaman yang lebih besar
Tabel Halaman yang Dibalik
Kegunaan dari bentuk manajemen halaman adalah untuk mengurangi jumlah memori fisik yang dibutuhkan untuk melacak penerjemahan alamat virtual-to-physical. Kita menyelesaikan metode penghematan ini dengan membuat tabel yang memiliki hanya satu masukan tiap halaman memori fisik, terdaftar oleh pasangan (pengenal proses, nomor halaman).
Karena mereka tetap menjaga informasi tentang halaman memori virtual yang mana yang disimpan di setiap frame fisik, tabel halaman yang terbalik mengurangi jumlah fisik memori yang dibutuhkan untuk menyimpan informasi ini. Bagaimana pun, tabel halaman yang dibalik tidak lagi mengandung informasi yang lengkap tentang alamat ruang logical dari sebuah proses, dan informasi itu dibutuhkan jika halaman yang direferensikan tidak sedang berada di memori. Demand paging membutuhkan informasi ini untuk memproses page faults. Agar informasi ini tersedia, sebuah tabel halaman luar (satu tiap proses) harus tetap dijaga. Setiap tabel tampak seperti tabel halaman tiap proses tradisional, mengandung informasi dimana setiap halaman virtual berada.
Tetapi, melakukan tabel halaman luar menegasikan kegunaan tabel halaman yang dibalik? Sejak tabel-tabel ini direferensikan hanya saat page fault terjadi, mereka tidak perlu untuk tersedia secara cepat. Namun, mereka masing-masing diberikan atau dikeluarkan halaman dari memori sesuai kebutuhan. Sayangnya, sebuah page fault mungkin sekarang muncul di manager memori virtual menyebabkan halaman lain fault seakan-akan halaman ditabel halaman luar perlu untuk mengalokasikan virtual page di bantuan penyimpanan. Ini merupakan kasus spesial membutuhkan penanganan di kernel dan delay di proses melihat halaman.
Struktur Program
Demand paging didesain untuk menjadi transparan kepada program pemakai. Di banyak kasus, pemakai sama sekali tidak mengetahui letak halaman di memori. Di kasus lain, bagaimana pun, kinerja sistem dapat ditingkatkan jika pemakai (atau kompilator) memiliki kesadaran akan demand paging yang mendasar
Pemilihan yang hati-hati dari struktur data dan struktur permograman dapat meningkatkan locality dan karenanya menurunkan laju page fault dan jumlah halaman di himpunan kerja. Sebuah stack memiliki locality yang baik, sejak akses selalu dibuat di atas. Sebuah hash table, di sisi lain, didesain untuk menyebar referensi-referensi, menghasilkan locality yang buruk. Tentunya, referensi akan locality hanyalah satu ukuran dari efisiensi penggunaan struktur data. Faktor-faktor lain yang berbobot berat termasuk kecepatan pencarian, jumlah total dari referensi dan jumlah total dari halaman yang disentuh.
Penyambungan Masukan dan Keluaran
Saat demand paging digunakan, kita terkadang harus mengizinkan beberapa halaman untuk dikunci di memori. Salah satu situasi muncul saat I/O sering diimplementasikan oleh pemroses I/O yang terpisah. Sebagai contoh, sebuah pengendali pita magnetik pada umumnya diberikan sejumlah bytes untuk memindahkan dan sebuah alamat memoro untuk buffer. Saat pemindahan selesai, CPU diinterupsi.
Kita harus meyakinkan urutan dari kejadian-kejadian berikut tidak muncul: Sebuah proses mengeluarkan permintaan I/O, dan diletakkan di antrian untuk I/O tersebut. Sementara itu, CPU diberikan ke proses-proses lain. Proses-proses ini menyebabkan kesalahan penempatan halaman, dan, menggunakan algoritma penggantian global, salah satu dari mereka menggantikan halaman yang mengandung memory buffer untuk proses yang menunggu. Halaman itu dikeluarkan. Kadang-kadang kemudian, saat permintaan I/O bergerak maju menuju ujung dari antrian device, I/O terjadi ke alamat yang telah ditetapkan. Bagaimana pun, frame ini sekarang sedang digunakan untuk halaman berbeda milik proses lain.
Pemrosesan Waktu Nyata
Diskusi-diskusi di bab ini telah dikonsentrasikan dalam menyediakan penggunaan yang terbaik secara menyeluruh dari sistem komputer dengan meningkatkan penggunaan memori. Dengan menggunakan memori untuk data yang aktif, dan memindahkan data yang tidak aktif ke disk, kita meningkatkan throughput. Bagaimana pun, proses individual dapat menderita sebagai hasilnya, sebab mereka sekarang dapat menyebabkan page faults tambahan selama eksekusi mereka.
Pertimbangkan sebuah proses atau thread waktu-nyata. Sebuah proses mengharapkan untuk memperoleh kendali CPU, dan untuk menjalankan penyelesaian dengan delay yang minimum. Memori virtual adalah saingan yang tepat untuk perhitungan waktu-nyata, sebab dapat menyebabkan delay jangka panjang, yang tidak diharapkan pada eksekusi sebuah proses saat halaman dibawa ke memori. Untuk itulah, sistem-sistem waktu-nyata hampir tidak memiliki memori virtual.
Pada kasus Solaris 2, para pengembang di Sun Microsystems ingin mengizinkan baik time-sharing dan perhitungan waktu nyata pada sebuah sistem. Untuk memecahkan masalah page-fault, mereka memiliki Solaris 2 mengizinkan sebuah proses untuk memberitahu bagian halaman mana yang penting untuk proses itu. Sebagai tambahan untuk mengizinkan petunjuk-petunjuk akan halaman yang digunakan, sistem operasi mengizinkan pemakai-pemakai yang berhak dapat mengunci halaman yang dibutuhkan di memori. Jika, disalah-gunakan, mekanisme ini dapat mengunci semua proses lain keluar dari sistem. Adalah perlu untuk mengizinkan proses-proses waktu-nyata untuk dapat dibatasi low-dispatch latency
01:58 | Labels: Sistem Operasi | 0 Comments
INPUT/OUTPUT
INPUT/OUTPUT
Fungsi : Memindahkan informasi antara CPU atau memori
utama dengan dunia luar
I/O terdiri :
- Piranti l/O (peripheral)
- Pengendali I/O (device controller)
- Perangkat lunak
Proses transfer informasi antara CPU dengan sebuah
peripheral :
- Memilih I/O dan mengujinya.
- Menginisialisasi transfer dan mengkoordinasikan
pengaturan waktu operasi I/O.
- Mentransfer informasi.
- Menghentikan proses transfer.
Klasifikasi piranti I/O terdiri 3 kelompok:
- Kelompok yang memasukkan informasi (input), contoh :
keyboard, ADC, scanner
- Kelompok yang rnenampilkan informasi (output),
contoh : VDU (monitor), printer
- Kelompok yang melayani input dan output, contoh :
Floppy disk
Pengaksesan I/O terdiri dari 2 cara :
1. Memory mapped I/O
Piranti I/O dihubungkan sebagai lokasi memori virtual
dimana port I/O tergantung memori utama.
Karakteristik:
- Port I/O dihubungkan ke bus alamat.
- Piranti input sebagai bagian memori yang
memberikan data ke bus data. Piranti output sebagai
bagian memori yang memiliki data yang tersimpan di
dalamnya.
- Port I/O menempati lokasi tertentu pada ruang alamat
dan diakses seolah-olah adalah lokasi memori.
2. I/O mapped I/O (I/O isolated)
Piranti I/O dihubungkan sebagai lokasi terpisah dengan
lokasi memori, dimana port I/O tidak tergantung pada
memori utama.
Karakteristik:
- Port I/O tidak tergantung memori utama.
- Transfer informasi dilakukan di bawah kendali sinyal
kontrol yang menggunakan instruksi INPUT dan
OUTPUT.
- Operasi I/O tergantung sinyal kendali dari CPU.
- lnstruksi I/O mengaktifkan baris kendali read/write
pada port I/O, sedangkan instruksi memori akan
mengaktifkan baris kendali read/write pada memori.
- Ruang memori dan ruang alamat I/O menyatu,
sehingga dapat memiliki alamat yang sama.
Kelebihan dan kekurangan:
- I/O mapped I/O Iebih cepat dan efisien, karena lokasi
I/O terpisah dengan lokasi memori.
- I/O mapped I/O mempunyai keterbatasan jumlah
instruksi yang dapat digunakan untuk operasi I/O.
Operasi I/O terbagi menjadi 3 metode :
1. I/O terprogram
Metode di mana CPU mengendalikan operasi I/O secara
keseluruhan dengan menjalankan serangkaian instruksi
I/O dengan sebuah program.
Karakteristik:
- Program tersebut digunakan untuk memulai,
mengarahkan dan menghentikan operasi-operasi I/O.
- Membutuhkan sejumlah perangkat keras (register)
yaitu:
• Register status, berisi status piranti I/O dan data
yang akan dikirimkan.
• Register buffer, menyimpan data sementara
sampai CPU siap menerimanya
• Pointer buffer, menunjuk ke lokasi memori di mana
sebuah karakter harus ditulis atau dan mana
karakter tersebut harus dibaca.
• Counter data, tempat penyimpanan jumlah karakter
dan akan berkurang nilainya jika karakter
ditransfer.
- Membutuhan waktu proses yang lama dan tidak
efesien dalarn pemanfaatan CPU.
2. I/O interupsi
Metode di mana CPU akan bereaksi ketika suatu piranti
mengeluarkan permintaan untuk pelayanan.
Karakteristik:
- Lebih efisien dalam pemanfaatan CPU, karena tidak
harus menguji status dari piranti.
- Interupsi dapat berasal dari piranti I/O, interupsi
perangkat keras misalnya : timer, memori, power
supply, dan Interupsi perangkat lunak misalnya :
overflow, opcode/data yang ilegal, pembagian
dengan nol.
Ada 2 jenis interupsi:
1. lnterupsi maskable
Interupsi yang dapat didisable (dimatikan) untuk
sementara dengan sebuah instruksi disable interupsi
khusus.
2. Interupsi nonmaskable
Interupsi yang tidak dapat didisable dengan instruksi
perangkat lunak.
Dalam sistem komputer terdapat lebih dari satu piranti
yang memerlukan pelayanan interupsi, dapat digunakan
metode:
- Polling/polled interupt
Berdasarkan urutan prioritas yang telah ditentukan
sebelum piranti memerlukan interupsi.
Misal: piranti A dan B mempunyai urutan prioritas A
lebih Iebih dulu dari B, maka jika A dan B secara
bersamaan memerlukan pelayanan interupsi, maka
piranti A akan didahulukan.
- Vector Interupt
Peralatan yang berinterupsi diidentifikasikan secara
Iangsung dan dihubungkan routine pelayanan vector
interupt.
INTR = Sinyal yang dikeluarkan oleh peralatan.
INTA = Sinyal kendali yang digunakan CPU untuk
menyiapkan pelayanan interupt
Cara yang biasa digunakan dengan metode daisy chain
dan encoder prioritas
3. Direct Memory Access (DMA)
Metode transfer data secara langsung antara memori
dengan piranti tanpa pengawasan dan pengendalian CPU.
• Skema transfer blok DMA dual port
CPU dan DMA controller mengakses memori utama
melalui MAR dan MBR dengan menggunakan
sebuah memori utama dual port (2 port).
Port I ----> melayani CPU
Port II ----> melayani DMA controller
• Skema transfer blok DMA cycle stealing (pencurian
siklus)
Hanya memerlukan sebuah memori port tunggal di
mana CPU dan piranti I/O beradu cepat pada basis
asinkron, prioritas utama akan diberikan pada piranti
I/O.
Interfacing
Adalah peralatan yang digunakan untuk menghubungkan
suatu piranti dengan CPU melalui bus.
Keterangan:
• Register kendali (CR) digunakan untuk mencatat
berbagai perintah dan informasi lainnya dalam
peripheral.
• Register status (SR) digunakan untuk menyimpan
status piranti dan memberitahukan pesan-pesan
kesalahan .
• Register data input (IDR) dan register data output
(ODR) masing-masing berfungsi sebagai bufer data
untuk operasi input dan output.
• Urutan operasi interface:
- Unit logika handshaking memasok unit kendali
dengan empat sinyal.
- Dua sinyal, register kendali penulisan (WCR atau
write control register) dan register status
pembacaan (RSR atau read status register),
masing-masing berhubungan dengan CR dan
SR.
- Sedangkan dua sinyal lainnya adalah register
pembacaan data input (RIDR atau read input data
register) dan register penulisan data output
(WODR atau write output data register ), masing-
masing mengendalikan IDP dan ODR.
Transfer data
Format transfer
- Paralel : semua bit pada karakter (word dengan
panjang tertentu) dikirim secara bersamaan dalam
batas waktu yang diberikan.
- Serial : Data dikirim secara berurutan dalam satu
saluran.
Transfer data secara paralel lebih cepat daripada secara
serial karena saluran transmisinya banyak, kelemahannya
kalau terlalu panjang akan terjadi interferensi antar
saluran.
Mode transfer data
1. Synchronous mode
Baris kendali digunakan untuk mengsinkronkan waktu
pada semua kejadian yang terjadi selama periode
waktu tertentu.
Kelemahan:
• Tiap piranti I/O berbeda-beda kecepatan operasinya,
sehingga harus diturunkan pada kecepatan yang
paling rendah.
2. Asynchronous mode
Menggunakan teknik jabat tangan (hand shaking) untuk
menyakinkan transfer data antara pengirim dan
penerima tidak ada kesalahan (data valid)
Kelemahan :
- memerlukan lebih banyak kendali
- kecepatan transfer lebih rendah dari yang sebenarnya.
Kelebihan :
- memungkinkan penggunaan piranti I/O yang memiliki
berbagai varasi kecepatan dalama system yang sama.
Sistem Prosesor I/O
Saluran I/O:
Merupakan sebuah prosesor khusus dengan
kemampuan terbatas yang disusun untuk interface
beberapa piranti I/O ke memori.
- Saluran I/O dapat melakukan pendeteksian dan
pembetulan kesaIahan dan beroperasi dalam basis
cycle stealing.
- Saluran I/O berkomunikasi dengan CPU sebagai
suatu fasiIitas DMA dan berkomunikasi dengan
piranti I/O seolah-olah sebuah CPU.
Karena piranti I/O mempunyai kecepatan transfer yang
berbeda-beda, maka saluran dibagi menjadi 3
pelayanan, yaitu:
- Saluran Multiplexer
Digunakan untuk menghubungkan piranti yang
berkecepatan rendah dan sedang serta serta
mengoperasikannya secara bersamaan dengan
multiplexing.
- Saluran Selektor
Digunakan untuk menghubungkan piranti I/O yang
berkecepatan tinggi tanpa multiplexing.
Contoh: pita magnetis, disk
-Saluran Multiplexer Blok Merupakan kombinasi dari
dua pelayanan diatas.
Prosesor I/O (IOP)
Merupakan komputer umum yang berkomunikasi dengan
memori utama melalui fasilitas DMA system bus dan
dengan piranti I/O atas satu atau lebih bus I/O.
Ada 2 mode yaitu :
1. Single Shared bus
Setiap IOP mengendalikan sejumlah piranti I/O
tertentu yang tetap.
2. Switching matriks bus
Setiap IOP mengendalikan satu piranti I/O
Konfigurasi Multiprosesor
Di dalam satu komputer seakan-akan terdapat
beberapa mikroprosesor, meskipun sebenarnya
mikroprosesor utamanya hanya satu, sedangkan yang
Iainnya berupa prosesor I/O (lOP).
Hubungan yang paling sederhana menggunakan
common bus.
• Bus umum bersifat membagi waktu (time shared)
oleh semua prosesor dan hanya satu prosesor
yang dapat mengakses memori pada waktu
tertentu.Tetapi dapat juga menggunakan bus
umum ke dalam organisasi multiprosesor dual bus.
• Setiap komputer dihubungkan suatu pengendali
sistem ke bus umum
• Komunikasi interkomputer ini dilakukan pada
sistem bus melalui memori umum.
01:53 | Labels: Sistem Operasi | 0 Comments
PENGENALAN SISTEM OPERASI
PENGENALAN SISTEM OPERASI
DEFINISI secara umum SISTEM OPERASI adalah
1.sebagai Sebuah program yang mengatur hardware,dengan
menyediakan Landasan untuk aplikasi yang berada diatasnya
2. Bertindak Sebagai penghubung antara user dengan hardware.
3. Bertugas untuk mengendalikan & mengkoordinasi penggunaan
Hardware untuk berbagai program aplikasi bagi bermacam2 user.
Pengertian SISTEM OPERASI ditinjau dari
3 sudut pandang yg berbeda :
1.SUDUT PANDANG PENGGUNA
SISTEM OPERASI adalah alat untuk mempermudah penggunaan komputer.
Sistem operasi seharusnya dirancang dengan mengutamakan kemudahan pengguna.
Dibandingkan menggunakan kinerja ataupun utilitas sumber daya. Sebaliknya dalam
Lingkungan multiuser, sistem operasi dapat dipandang sebagai alat untuk memaksimal
Penggunaan sumber daya komputer. Tetapi pada sejumlah komputer, sudut pandang
Pengguna dapat dikatakan hanya sedikit.
2. SUDUT PANDANG SISTEM
Sistem operasi adalah sebagai alat yang menempatkan sumber daya
Secara efisien.
Sistem operasi merupakan manajer bagi sumber daya yang menangani konflik
Permintaan sumber daya secara efisien. Selain itu juga untuk mengatur eksekusi
Aplikasi dan operasi dari INPUT / OUTPUT ( I/O ). Fungsi ini juga dikenal sebagai
Program pengendali. Sistem operasi merupakan suatu bagian program yang
Berjalan setiap saat yang dikenal dengan istilah “kernel”
3. SUDUT PANDANG TUJUAN
Sistem operasi adalah sebagai alat yang membuat komputer lebih nyaman
Digunakan untuk menjalankan aplikasi dan menyelesaikan masalah user.
Komponen komputer lainnya adalah HARDWARE, SOFTWARE & USER??
HARDWARE : penyedia sumber daya untuk komputasi yang dapat dilihat secara fisik dan dapat disentuh
SOFTWARE : sarana yang memberitahukan hardware apa yang akan dilakukannya terhadap hardware.
Software tsb dibagi 2 yaitu sistem operasi & program aplikasi.
Program aplikasi merupakan merupakan software yang menentukan bagaimana sumber daya digunakan untuk menyelesaikan masalah para user.
USER : manusia yang menjalankan program aplikasi atau komputer lain.
LAYANAN SISTEM OPERASI
1.Pembuatan program
Sistem operasi menyediakan berbagai fasilitas yang membantu
Programmer dalam membuat program seperti editor. Walaupun
Bukan bagian dari sistem operasi, tapi layanan ini diakses
Melalui sistem operasi
2. Eksekusi program
Sistem harus bisa me-load program ke memori dan menjalankan
Program tsb. Program harus bisa menghentikan pengeksekusian
Baik secara normal maupun dalam keadaan error.
3. Operasi I / O
Program sedang dijalankan kadang kala membutuhkan I / O. untuk
Efisiensi dan keamanan, pengguna biasanya tidak bisa mengatur
Piranti I / O secara langsung. Untuk itulah sistem operasi harus
Menyediakan mekanisme dalam melakukan operasi I / O.
4. Manipulasi sistem berkas
Program harus membaca dan menulis berkas, kadangkala juga
Harus membuat dan menghapus berkas
5. Komunikasi
Kadangkala sebuah proses memerlukan informasi dari proses
Yang lain. Ada 2 cara umum komunikasi dilakukan : yaitu antara
Proses dalam satu komputer, atau antara proses yang berada
Dalam komputer yang berbeda. Tetapi dihubungkan oleh
Jaringan komputer. Komunikasi dapat dilakukan dengan
share-memori / meseage passing, yakni sejumlah informasi
Dipindahkan antara proses oleh sistem operasi.
6. Deteksi error
Sistem operasi harus selalu waspada terhadap kemungkinan
Error. Error dapat terjadi di CPU dan memori perangkat keras,
I / O dan didalam program yang dijalankan user.
Misalnya; dengan jalan menghentikan jalannya program, mencoba
Kembali melakukan operasi yang dijalankan atau melaporkan
Kesalahan yang terjadi agar pengguna dapat mengambil langkah
Selanjutnya.
PROSES BOOTING
Adalah kegiatan pelaksanaan awal (start-up) komputer untuk
Mengambil sisitem operasi dari disk yang mendasari
Aktifnya komputer.
Proses booting dapat dilakukan dengan 2 cara :
1.Menghidupkan komputer (dari power off menjadi power on)
2.Menekan 3 tombol bersamaan (tombol crtl-alt-del) pada saat
Komputer sudah hidup.
JENIS-JENIS SISTEM OPERASI
1. DOS (Disk Operating Sistem)
2. WINDOWS
3. MACINTOSH
4. OS/2 (operating sistem /2 )
5. UNIX
1.DOS (Disk Operating Sistem)
DOS merupakan sistem operasi yang pertama kali digunakan
Hingga saat ini.DOS dibagi menjadi 3, yakni ;
1.DR-DOS
Dibuat oleh perusahaan digital research pada tahun 1988 dari Hasil transformasi
CP/M (control program/monitor). DigitalResearch didirikan oleh
Gory Kildall (1942-1994). Sistem operasi Ini digunakan sampai
pada komputer pentium.
2. PC-DOS
Dirancang dan dibuat oleh perusahaan microsoft corp. namun dengan
Dikeluarkannya sistem operasi windows, sistem operasi ini sudah jarang /
Tidak digunakan lagi saat ini.
3. MS-DOS
Dirancang dan dibuat oleh perusahaan microsft corp. sistem operasi ini
Digunakan hingga saat ini dan terus dikembangkan versinya sesuai
Dengan kebutuhan.
2. WINDOWS
Dirancang oleh Microsoft Corp. pada awalnya dibuat nya windows
Bukan merupakan sistem operasi karena windows versi 3.x
Untuk menjalankannya masih bergantung pada sistem operasi DOS
Tujuan awalnya hanya untuk mengatasi masalah yang dihadapi
Pengguna komputer dalam melakukan :
MULTITASKING : penggunaan program komputer secara
Bersamaan.
- MULTIUSER : pengaturan pemakai komputer oleh banyak
Pemakai.
3. MACINTOSH
Macintosh pertama dikeluarkan oleh perusahaan APPLE CORP.
Berbeda dengan sistem operasi yang lain, sistem ini hanya
Ditujukan untuk komputer berbasis grafis dengan istilah
GUI (Graphical User Interface)
Penggunaanya sangat spesifik karena tidak dapat digunakan
Pada komputer lain (PC), tetapi hanya dapat digunakan pada
Komputer mancitosh saja, karena pada komputer macintosh
Tidak dikenal adanya extention (.exe) file seperti pada sistem
Operasi DOS dan WINDOS.
4. OS / 2 (operating sistem / 2 )
OS/2 dibuat pertama kali dengan tujuan untuk
Menggantikan sistem operasi DOS. Namun sistem
Ini jarang digunakan karena harganya lebih mahal
Dan pengembangannya lebih lambat bila
Dibandingkan dengan DOS.
5. UNIX
UNIX pertama kali digunakan untuk komputer mini dan mainframe,
tetapi kini Sudah dapat digunakan oleh komputer mikro.
Diciptakan oleh ahli riset BELL LABORATORIES (amerika).
Tetapi kurang diMinati oleh pengguna komputer mikro
karena sulitnya menyatukan standartSistem. Perkembangannya
tidak sepesat DOS, namun kini UNIX telah Mengeluarkan
versi terbarunya dengan nama LINUX.
Untuk mempromosikan dan memperkenalkan sistem operasi LINUX
Pada Masyarakat, maka perusahaan pembuatnya
memasarkan secara gratis.
01:48 | Labels: Sistem Operasi | 0 Comments
Tujuan belajar aritmatika?????
Tujuan belajar aritmatika?????
Mengerti bagian-bagian ALU
Memahami representasi integer
Memahami cara operasi penambahan, pengurangan, perkalian, pembagian dengan representasi integer
Memahami representasi floating point
Memahami cara operasi penambahan, pengurangan, perkalilan, pembagian dengan representasi floating point
Kode Biner
HURUF ---> KODE ASCII ---> BINER
-Data gambar merupakan kumpulan dari angka-angka yang merupakan perwakilan dari warna tiap-tiap pixel
dan angka-angka tersebut yang akan dirubah menjadi biner
-Semua data direpresentasikan dalam bentuk 0 atau 1
ASCII
Kode Standar Amerika untuk Pertukaran Informasi atau ASCII
(American Standard Code for Information Interchange)
merupakan suatu standar internasional dalam kode huruf
dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal,
contohnya 124 adalah untuk karakter "|".
Ia selalu digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks.
Kode ASCII sebenarnya memiliki komposisi bilangan biner sebanyak 8 bit.
Dimulai dari 00000000 hingga 11111111.
Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan Desimal.
Operasi Aritmatika
-Sebagian besar operasi yang dilakukan oleh komputer adalah operasi aritmatika
-Operasi aritmatika :
- penambahan
- pengurangan
- perkalian
- pembagian
Data seperti apa yang dioperasikan
-Data yang berupa angka
-Data angka dibedakan menjadi:
1.Data bilangan bulat / integer
2.Data bilangan pecahan / floating point
ALU (Arithmetic and Logic Unit)
1.Semua proses aritmatika diproses oleh ALU.
2.Merupakan salah satu bagian dari CPU yang berfungsi membentuk operasi-operasi aritmatika dan logika terhadap data
3.Semua komponen CPU yang lainnya dan komponen penyusun komputer secara keseluruhan berfungsi:
- membawa data ke ALU untuk diproses
- mengambil data hasil proses dari ALU
Komponen-komponen CPU
-Register adalah tempat penyimpanan data sementara dalam CPU selama proses eksekusi.
Apabila terjadi proses eksekusi, data dalam register dikirim ke ALU untuk diproses
dan hasil eksekusi akan diletakkan ke register kembali
-Flag diset ALU sebagai hasil dari suatu operasi.
Ex: overflow flag, diset 1 jika hasil eksekusi melampaui panjang register tempat flag disimpan
-Unit Control akan menghasilkan sinyal yang akan mengontrol operasi ALU dan pemindahan data ke dan dari ALU
-Hubungan interkoneksi ALU dengan register, flag dan unit kontrol melalui bus internal CPU
Representasi Integer
1.Sistem bilangan:
- biner
- oktal
- desimal
- heksadesimal
2.Bilangan yang digunakan untuk mekanisme representasi data komputer adalah bilangan biner
3.Mengapa?
Alasan
1.karena komputer secara elektronika hanya mampu membaca 2 kondisi sinyal
- ada tegangan / ada sinyal
- tidak ada tegangan / tidak ada sinyal
2.kondisi tersebut yang digunakan untuk merepresentasikan bilangan dan kode-kode biner
- ada tegangan sebagai representasi nilai 1
- tidak ada tegangan sebagai representasi nilai 0
Sistem bilangan
-Sistem bilangan merupakan tata aturan atau susunan dalam menentukan nilai suatu bilangan,
antara lain sistem desimal, biner, hexadesimal, oktal, BCD, Grey Code,
Exess-3 dan lain-lainnya yang dibagi berdasarkan basis yang digunakan dalam penentuan nilai dari bilangan tersebut. Sistem bilangan yang umum dipakai adalah sistem bilangan desimal.
-Desimal
Merupakan suatu sistem bilangan yang berbasis 10 (tiap bilangan dalam sistem tersebut dikalikan dengan 10x),
terdiri dari angka : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
-Biner
Merupakan suatu system bilangan yang berbasiskan 2 (tiap bilangan dalam sistem tersebut dikalikan dengan 2x),
terdiri dari angka 0 dan 1.
-Heksadesimal
Merupakan suatu sistem bilangan yang berbasiskan 16 (tiap bilangan dalam sistem tersebut dikalikan dengan 16x), terdiri dari 10 angka yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 dan 6 huruh yaitu A, B, C, D, E, F.
-Oktal
Merupakan suatu sistem bilangan yang berbasiskan 8 (tiap bilangan dalam sistem tersebut dikalikan dengan 8x), terdiri dari delapan angka yaitu 0, 1, 2, 3, 4, 5, 6, 7.
-BCD (Binary-Coded decimal)
Merupakan format untuk merepresentasikan bilangan desimal (integer) dengan empat bit (satu nibble) untuk setiap angka penyusunnya
-Gray Code
Merupakan sistem bilangan yang memliki sistem mirip dengan biner hanya saja dalam susunan bilangan ini yang boleh berubah pada urutan selanjutnya hanya 1 angka. Misalnya 001 berikutnya 011 berikutnya 010 dan selanjutnya
-Excess-3
Merupakan sistem bilangan yang secara sederhana dapat diartikan sebagai bilangan biner yang memiliki lebih tiga angka dari bilangan biner biasa. Contohnya 0 = 011, 1 = 100, 2 = 101 dan seterusnya.
Representasi Integer oleh Biner
* Dalam sistem bilangan biner ada 4 macam sistem untuk merepresentasikan integer
- representasi unsigned integer
- representasi nilai tanda (sign magnitude)
- representasi bias
- representasi komplemen dua (2’s complement)
1. Unsigned Integer
-Untuk keperluan penyimpanan dan pengolahan komputer diperlukan bilangan biner yang terdiri atas 0 dan 1
-1 byte (8 bit binary digit) dapat digunakan untuk menyatakan bilangan desimal dari 0 – 255
Kelemahan Unsigned Integer
Kelemahan
- hanya dapat menyatakan bilangan positif
- sistem ini tidak bisa digunakan untuk menyatakan bilangan integer negatif
2. Representasi Nilai Tanda (sign magnitude)
-Karena kelemahan unsigned integer
-Dikembangkan beberapa konvensi untuk menyatakan bilangan integer negatif
Konvensi
-Perlakuan bit yang paling kiri (MSB) di dalam byte sebagai tanda
-Bila MSB = 0 maka bilangan tersebut positif
-Jika MSB = 1 maka bilangan tersebut negatif
Kelemahan sign magnitude
Adanya representasi ganda pada bilangan 0, yaitu
3. Representasi Bias
-Digunakan untuk menyatakan exponen (bilangan pemangkat) pada representasi floating point
-Dapat menyatakan bilangan bertanda, yaitu dengan mengurutkan dari bilangan negatif terkecil yang
dapat dijangkau sampai bilangan positif paling besar yang bisa dijangkau
-Mengatasi permasalahan pada sign magnitude yaitu +0 dan -0
4. Representasi komplemen 2 (two’s complement)
Merupakan perbaikan dari representasi nilai bertanda (sign magnitude) yang mempunyai kekurangan
pada operasi penjumlahan dan pengurangan serta representasi nilai 0
Bilangan Negatif Pada 2’s Complement
1.Sistem bilangan dalam 2’s complement menggunakan bit paling kiri (MSB) sebagai bit tanda dan sisanya sebagai bit nilai seperti pada sign magnitude
2.Bilangan negatif dalam 2’s complement dibentuk dari:
- komplemen satu dari bilangan biner semula (nilai positif)
- menambahkan 1 pada LSB
01:38 | Labels: Sistem Operasi | 0 Comments