Search....

Sabtu, 07 Januari 2017

ARM MEMORY MANAGEMENT

ARM menyediakan arsitektur sistem memori virtual yang serbaguna dapat disesuaikan dengan kebutuhan dari desainer sistem embedded.

Sistem memori Organisasi
Hardware memori virtual terjemahan menggunakan satu atau dua tingkat tabel untuk terjemahan dari virtual ke alamat fisik, seperti yang dijelaskan selanjutnya. Para melihat sisi terjemahan buffer (TLB) adalah cache dari entri tabel halaman terakhir. Jika entri tersedia dalam TLB, maka TLB langsung mengirim alamat fisik ke memori utama untuk operasi membaca atau menulis. Data yang dipertukarkan antara prosesor dan memori utama melalui cache. Jika sebuah organisasi cache yang logis digunakan, maka persediaan ARM bahwa alamat langsung ke cache serta memasok ke TLB saat terjadi cache miss. Jika sebuah organisasi cache yang fisik digunakan, maka TLB harus memberikan alamat fisik ke cache. Entri dalam tabel penerjemahan juga termasuk bit kontrol akses, yang menentukan apakah suatu proses dapat mengakses bagian tertentu memori. Jika akses ditolak, akses kontrol hardware pasokan sinyal membatalkan ke prosesor ARM.

Virtual Memory Address Translation
ARM mendukung akses memori didasarkan pada baik bagian atau halaman:
• Supersections (opsional): Terdiri dari 16-MB blok memori utama
• Sections : Terdiri dari 1-MB blok memori utama
• Large pages : Terdiri dari 64-KB blok memori utama
• Small pages : Terdiri dari 4-KB blok memori utama

Bagian dan supersections didukung untuk memungkinkan pemetaan wilayah besar memori sementara hanya menggunakan satu entri dalam TLB. Mekanisme akses kontrol tambahan diperpanjang dalam halaman kecil untuk Subpages 1KB, dan dalam halaman besar untuk 16KB Subpages. Tabel terjemahan diselenggarakan di memori utama memiliki dua tingkat:
• First-level table : Gelar terjemahan bagian dan supersection, dan pointer ke tingkat kedua tabel
• Second-level tables : Pegang baik terjemahan halaman besar dan kecil

Unit memori-manajemen (MMU) menerjemahkan alamat virtual yang dihasilkan oleh prosesor ke alamat fisik untuk mengakses memori utama, dan juga berasal dan memeriksa izin akses.Terjemahan terjadi sebagai akibat dari miss TLB, dan mulai dengan mengambil tingkat pertama. Sebuah mengakses seksi-dipetakan hanya membutuhkan tingkat pertama mengambil, sedangkan mengakses halaman-dipetakan juga membutuhkan tingkat kedua-fetch.
Sebuah prosedur dua halaman pencarian yang serupa digunakan untuk halaman yang besar. Untuk bagian dan supersection, hanya halaman L1 tabel lookup diperlukan.

Manajemen Format Memori
Untuk mendapatkan pemahaman yang lebih baik dari skema manajemen memori ARM, kita mempertimbangkan format kunci.
• Bit [01:00] = 01 dan bit 19 = 0: entri ini adalah bagian untuk alamat deskriptor terkait virtual.
• Bit [01:00] = 01 dan bit 19 = 1: entri ini adalah deskriptor supersection untuk alamat terkait virtual.
Entri dengan bit [01:00] = 11 disediakan.
Untuk memori terstruktur ke halaman, dua-tingkat halaman akses tabel diperlukan. Bit [31:10] dari halaman masuk L1 berisi pointer ke tabel halaman L1. Untuk halaman kecil, entri L2 berisi pointer 20-bit untuk alamat dasar halaman 4-KB di memori utama.
Parameter Manajemen Memori ARM 
Access Permission (AP), Access Permission Extension (APX)
Bit-bit kontrol akses ke wilayah memori yang sesuai. Jika mengakses dibuat untuk area memori tanpa izin diperlukan, Patahan Izin dinaikkan.
Bufferable (B) bit
Menentukan, dengan bit TEX, bagaimana menulis buffer digunakan untuk memori cacheable.

Cacheable (C) bit
Menentukan apakah wilayah ini memori dapat dipetakan melalui cache.

Domain
Koleksi kontrol memori regions.Access dapat diterapkan berdasarkan domain.

not Global (nG)
Menentukan apakah terjemahan harus ditandai sebagai global (0), atau spesifik proses (1).

Shared (S)
Menentukan apakah terjemahan ini karena tidak-berbagi memori (1) (0), atau berbagi.

SBZ
Should be zero.

Type Extension (TEX)
Bit ini, bersama dengan bit B dan C, kontrol akses ke cache, bagaimana menulis buffer digunakan, dan jika wilayah memori dibagikan dan oleh karena itu harus disimpan koheren.

Execute Never (XN)
Menentukan apakah wilayah ini dieksekusi (0) atau tidak dieksekusi (1).

Kisaran ruang alamat fisik dapat diperluas hingga delapan bit alamat tambahan (bit [23:20] dan [8:05]). Jumlah bit tambahan bit dependent. Implementasi tambahan dapat diartikan sebagai memperluas ukuran dari memori fisik sebanyak faktor demikian, memori fisik mungkin sebenarnya sebanyak 256 kali lebih besar ruang memori yang tersedia untuk setiap proses individu.

Access Control
AP bit kontrol akses dalam setiap akses entri tabel kontrol ke wilayah memori dengan suatu wilayah tertentu process.A memori dapat ditunjuk sebagai tidak ada akses, read only, atau membaca-menulis. Selanjutnya, wilayah ini dapat ditunjuk sebagai akses istimewa saja, dicadangkan untuk digunakan oleh OS dan bukan oleh aplikasi.
ARM juga mempekerjakan konsep dari sebuah domain, yang merupakan kumpulan bagian dan / atau halaman yang memiliki izin akses tertentu. Mendukung arsitektur ARM 16 domain. Fitur domain memungkinkan beberapa proses untuk menggunakan tabel terjemahan yang sama tetap menjaga beberapa perlindungan dari satu sama lain.
Setiap entri tabel halaman dan masuk BIS berisi field yang menentukan entri yang domain yang masuk Sebuah medan 2-bit dalam Access Control Domain mengontrol akses ke setiap domain. Setiap bidang memungkinkan akses ke seluruh domain akan diaktifkan dan dinonaktifkan dengan sangat cepat, sehingga daerah seluruh memori dapat ditukarkan dalam dan keluar dari memori virtual yang sangat efisien. Dua jenis akses domain yang didukung:
• Clients: Pengguna domain (mengeksekusi program dan data akses) yang harus memperhatikan hak akses dari bagian individu dan / atau halaman yang membentuk domain tersebut.
• Managers: Kontrol perilaku dari domain (bagian saat ini dan halaman dalam domain, dan akses domain), dan memotong hak akses untuk entri tabel dalam domain tersebut
Salah satu program dapat menjadi klien dari beberapa domain, dan manajer dari beberapa domain lainnya, dan tidak memiliki akses ke domain yang tersisa. Hal ini memungkinkan perlindungan memori yang sangat fleksibel untuk program yang mengakses sumber daya memori yang berbeda.

PENTIUM MEMORY MANAGEMENT

Sejak diperkenalkannya dari arsitektur 32-bit, mikroprosesor telah berevolusi skema manajemen memori canggih yang membangun pembelajaran dengan sistem menengah dan skala besar. Dalam banyak kasus, versi mikroprosesor lebih unggul dengan yang lebih besar-sistem mereka pendahulunya. Karena skema tersebut dikembangkan oleh vendor perangkat keras mikroprosesor dan dapat digunakan dengan berbagai sistem operasi, mereka cenderung menjadi cukup umum purpose. Sebagai contoh yang representatif adalah skema yang digunakan pada perangkat keras II. Pentium II manajemen memori pada dasarnya adalah sama seperti yang digunakan dalam Intel 80386 dan 80486 prosesor, dengan beberapa perbaikan.

Alamat Spasi
Pentium II mencakup perangkat keras untuk kedua segmentasi dan paging. Kedua mekanisme dapat dinonaktifkan, memungkinkan pengguna untuk memilih dari empat pandangan yang berbeda dari memori:
• Memori Unpaged Unsegmented: Dalam hal ini, alamat virtual adalah sama dengan alamat fisik. Hal ini berguna, misalnya, dalam kompleksitas rendah, highperformance aplikasi kontroler.
• Memori Paged Unsegmented: Berikut memori dipandang sebagai ruang alamat linier paged. Perlindungan dan manajemen memori dilakukan melalui paging. Ini disukai oleh beberapa sistem operasi (misalnya, Berkeley UNIX).
• Memori Unpaged Tersegmentasi: Berikut memori dipandang sebagai kumpulan dari ruang alamat logis. Keuntungan dari pandangan ini melalui pendekatan paged adalah bahwa hal ini memberikan perlindungan ke tingkat byte tunggal, jika perlu. Selanjutnya, tidak seperti paging, ia menjamin bahwa tabel terjemahan yang diperlukan (tabel segmen) yang on-chip ketika segmen tersebut dalam memori. Oleh karena itu, hasil memori tersegmentasi unpaged di waktu akses diprediksi.
• Segmented paged memori: Segmentasi digunakan untuk menentukan partisi memori logis tunduk pada kontrol akses, dan paging digunakan untuk mengelola alokasi memori dalam partisi.Sistem operasi seperti UNIX System V mendukung pandangan ini.

Segmentasi
Ketika segmentasi digunakan, masing-masing alamat virtual (disebut alamat logis di Pentium II dokumentasi) terdiri dari referensi segmen 16-bit dan 32-bit offset. Dua bit dari kesepakatan referensi segmen dengan mekanisme perlindungan, meninggalkan 14 bit untuk menentukan segmen tertentu. Jadi, dengan memori unsegmented, memori virtual pengguna adalah 232 = 4 GBytes. Dengan memori tersegmentasi, ruang total memori virtual sebagai terlihat oleh pengguna adalah 246 = 64 terabyte (TBytes). Ruang alamat fisik menggunakan alamat 32-bit untuk maksimal 4 GBytes.
Jumlah memori virtual sebenarnya dapat lebih besar dari 64 TBytes. Hal ini karena penafsiran prosesor dari alamat virtual tergantung pada proses yang sedang aktif. Ruang alamat virtual dibagi menjadi dua bagian. Satu-setengah dari ruang alamat virtual (8K segment x 4 GBytes) adalah global, bersama dengan semua proses, sisanya adalah lokal dan berbeda untuk setiap proses.
Terkait dengan segmen masing-masing dua bentuk perlindungan: hak istimewa tingkat dan atribut akses. Ada empat tingkat hak istimewa, dari yang paling dilindungi (tingkat 0) untuk paling tidak dilindungi (tingkat 3). Tingkat hak istimewa yang terkait dengan segmen data adalah “klasifikasi” nya, tingkat hak istimewa yang terkait dengan segmen program yang mengeksekusi Sebuah program hanya dapat mengakses segmen data untuk tingkat peluruhan yang lebih rendah dari (lebih istimewa) atau sama “izin.” untuk (hak istimewa yang sama) tingkat hak istimewa segmen data.
Hardware tidak menentukan bagaimana tingkat hak istimewa yang akan digunakan; ini tergantung pada desain OS dan implementasi. Hal ini dimaksudkan bahwa hak istimewa tingkat 1 akan digunakan untuk sebagian besar OS, dan tingkat 0 akan digunakan untuk itu sebagian kecil dari OS ditujukan untuk manajemen memori, perlindungan, dan kontrol akses. Hal ini meninggalkan dua tingkat untuk aplikasi. Dalam banyak sistem, aplikasi akan berada di tingkat 3, dengan tingkat 2 yang tidak terpakai. Subsistem aplikasi khusus yang harus dilindungi karena mereka menerapkan mekanisme keamanan mereka sendiri adalah kandidat yang baik untuk tingkat 2. Beberapa contoh adalah sistem manajemen database, sistem otomatisasi kantor, dan lingkungan rekayasa perangkat lunak.
Selain akses mengatur ke segmen data, mekanisme hak membatasi penggunaan instruksi tertentu. Beberapa instruksi, seperti yang berhubungan dengan manajemen memori register, hanya dapat dilaksanakan di tingkat 0. Instruksi I / O hanya dapat dieksekusi sampai ke tingkat tertentu yang ditunjuk oleh OS, biasanya, ini akan menjadi level 1. Atribut akses data segmen menentukan apakah membaca / menulis atau baca akses yang diizinkan. Untuk segmen program, menentukan atribut akses membaca / mengeksekusi atau membaca-hanya akses.
Terjemahan alamat mekanisme untuk segmentasi melibatkan pemetaan alamat virtual ke dalam apa yang disebut sebagai alamat linier.
Sebuah alamat maya terdiri dari 32-bit offset dan 16-bit segmen pemilih. Segmen pemilih terdiri dari bidang-bidang berikut:
• Tabel Indikator (TI): Menunjukkan apakah tabel segmen global atau tabel segmen lokal harus digunakan untuk terjemahan.
• Segmen Number: Jumlah segmen. Ini berfungsi sebagai indeks ke dalam tabel segmen.
• Requested Privilege Level (RPL): Tingkat diminta untuk hak akses ini.
Setiap entri dalam tabel segmen terdiri dari 64 bit.

Paging
Segmentasi merupakan fitur opsional dan dapat dinonaktifkan. Ketika segmentasi digunakan, alamat yang digunakan dalam program adalah alamat virtual dan dikonversi menjadi alamat linier, seperti yang baru saja dijelaskan. Ketika segmentasi tidak digunakan, alamat linier yang digunakan dalam program. Dalam kedua kasus, langkah berikut adalah untuk mengkonversi alamat linier ke alamat 32-bit nyata.
Untuk memahami struktur dari alamat linier, Anda perlu tahu bahwa mekanisme Pentium II sebenarnya paging dua tingkat tabel operasi pencarian. Tingkat pertama adalah direktori halaman, yang berisi hingga 1024 entri. Ini membagi ruang memori 4-GByte linier menjadi 1024 kelompok halaman, masing-masing dengan tabel halaman sendiri, dan masing-masing 4 MBytes panjang. Setiap tabel halaman berisi hingga 1024 entri; setiap entri sesuai ke halaman 4-KByte tunggal. Manajemen memori memiliki pilihan untuk menggunakan salah satu direktori halaman untuk semua proses, salah satu direktori halaman untuk setiap proses, atau beberapa kombinasi dari keduanya.Direktori halaman untuk tugas saat ini selalu dalam memori utama. Tabel halaman mungkin dalam memori virtual.
Pentium II juga membuat penggunaan buffer melihat sisi terjemahan. Buffer dapat menyimpan entri tabel halaman 32.Setiap kali bahwa direktori halaman berubah, buffer akan dihapus.
 Untuk kejelasan, melihat sisi terjemahan buffer dan mekanisme memori cache tidak ditampilkan.
Akhirnya, Pentium II termasuk ekstensi baru tidak ditemukan pada 80386 atau 80486, penyisihan untuk dua ukuran halaman.Jika PSE (ekstensi halaman ukuran) bit dalam kontrol mendaftar 4 adalah set ke 1, maka unit paging memungkinkan programmer OS untuk mendefinisikan sebuah halaman baik sebagai KByte 4 atau 4 MByte dalam ukuran.
Ketika 4-MByte halaman yang digunakan, hanya ada satu tingkat tabel lookup untuk halaman. Ketika hardware mengakses direktori halaman, direktori halaman masuk memiliki set bit ke 1 PS. Dalam hal ini, bit 9 sampai 21 bit diabaikan dan 22 sampai 31 menentukan alamat dasar untuk halaman 4-MByte dalam memori. Jadi, ada tabel halaman.
Segmen Descriptor (Segmen Entri Tabel)
Base
Mendefinisikan alamat awal segmen dalam ruang alamat 4-GByte linier.
D/B bit
Dalam sebuah segmen kode, ini adalah sedikit D dan menunjukkan apakah operand dan mode pengalamatan yang 16 atau 32 bit.
Descriptor Privilege Level (DPL)
Menentukan tingkat hak istimewa dari segmen disebut oleh deskriptor segmen.
Granularity bit (G)
Menunjukkan apakah bidang Batas harus ditafsirkan dalam unit dengan satu byte atau 4 KByte.
Limit
Mendefinisikan ukuran segmen. Prosesor menafsirkan bidang batas dalam salah satu dari dua cara, tergantung pada bit rincian: dalam satuan satu byte, hingga batas segmen berukuran 1 MByte, atau dalam satuan 4 KByte, hingga batas ukuran segmen 4 GBytes .
S bit
Menentukan apakah segmen yang diberikan adalah sistem atau segmen segmen kode atau data.

Segment Present bit (P)
Digunakan untuk sistem nonpaged. Hal ini menunjukkan apakah segmen hadir dalam memori utama. Untuk paged sistem, bit ini selalu diset ke 1.
Type
Membedakan antara berbagai macam segmen dan menunjukkan atribut akses.
Page Directory Entry and Page Table Entry
Accessed bit (A)
Bit ini diset ke 1 oleh prosesor dalam kedua tingkat tabel halaman saat membaca atau menulis operasi untuk halaman yang sesuai terjadi.

Dirty bit (D)
Bit ini diset ke 1 oleh prosesor ketika operasi menulis ke halaman yang sesuai terjadi.

Page Frame Address
Menyediakan alamat fisik dari halaman dalam memori jika bit ini diatur. Karena frame halaman yang sejajar pada batas-batas 4K, 12 bit bawah adalah 0, dan hanya bagian atas 20 bit termasuk dalam entri. Dalam direktori halaman, alamat adalah bahwa dari sebuah tabel halaman.

Page Cache Disable bit (PCD)
Menunjukkan apakah data dari halaman mungkin cache.

Page Size bit (PS)
Menunjukkan apakah ukuran halaman adalah 4 KByte atau 4 MByte.

Halaman Menulis Melalui bit (PWT)
Menunjukkan apakah write-through atau menulis-kembali kebijakan caching akan digunakan untuk data di halaman yang sesuai.

Present bit (P)
Menunjukkan apakah tabel halaman atau halaman dalam memori utama.

Read/Write bit (RW)
Untuk pengguna-tingkat halaman, menunjukkan apakah halaman akses read-only atau membaca / menulis akses untuk user-level program.

User/Supervisor bit (US)
Menunjukkan apakah halaman yang tersedia hanya untuk sistem operasi (tingkat pengawas) atau tersedia untuk kedua sistem operasi dan aplikasi (tingkat pengguna).
Penggunaan 4-MByte halaman mengurangi persyaratan penyimpanan memori-manajemen untuk kenangan utama besar.Dengan 4-KByte halaman, memori 4-GByte penuh utama membutuhkan sekitar 4 MBytes memori hanya untuk tabel halaman. Dengan 4-MByte halaman, tabel tunggal, 4 KByte panjang, sudah cukup untuk manajemen halaman memori.

Jumat, 06 Januari 2017

MEMORY MANAGEMENT

KONSEP DASAR MEMORI
Memori sebagai tempat penyimpanan instruksi/data dari program sehingga untuk dapat dieksekusi, program harus dibawa ke memori dan menjadi suatu proses.Pengertian memori disini adalah pusat operasi pada modem komputer, karena setiap proses yang akan dijalankan, harus melalui memori terlebih dahulu
Manajemen Memori merupakan salah satu bagian terpenting pada sistem operasi. Sejak awal komputer digunakan untuk keperluan komputasi, kebutuhan akan memori yang lebih besar dibandingkan dengan keadaan fisik memori di dalam sistem terus meningkat. 
Berbagai perhitungan dan strategi terus dilakukan untuk mengatasi keterbatasan ukuran memori fisik.Sistem operasi memberikan tanggapan terhadap manajemen memori utama untuk aktivitas-aktivitas sebagai berikut:
  1. Menjaga dan memelihara bagian-bagian memori yang sedang digunakan dan dari yang  menggunakan.
  2. Memutuskan proses-proses mana saja yang harus dipanggil kememori jika masih ada ruang di      memori.
  3. Mengalokasikan dan mendelokasikan ruang memori jika diperlukan

Media penyimpanan data di dalam komputer disebut sebagai memory atau storage.Dalam hal ini pengertian memori terbagi menjadi 2 (dua), yaitu internal memory dan external memory.Ada dua pengaruh dari manajemen memori dalam pembuatannya, yaitu :
  1. Diinginkan bahwa memory management harus sesederhana mungkin.
  2. Ada kehendak supaya pemakai bisa fleksibel dalam penggunaannya.Kebanyakan komputer, selain dilengkapi dengan memori utama (real memory), dilengkapi juga dengan media penyimpanan yang paling umum adalah disk, karena biayanya murah dan program dapat disimpan pada alat penyimpanan sekunder ini, maka ukuran program tidak dibatasi oleh ukuran memori utama, namun oleh ukuran ruang alamat logis komputer.

KONSEP BINDING
Binding adalah cara instruksi dan data (yang berada di disk sebagai file yang dapat dieksekusi) dipetakan ke alamat memori.
Ø Binding instruksi dan data ke memori dapat dapat terjadi dalam tiga cara yang berbeda:
    o Compilation Time. Jika kita tahu dimana proses akan ditempatkan di memori pada saat    mengkompilasi, maka kode absolut dapat dibuat. Kita harus mengkompilasi ulang kode jika lokasi    berubah.
    o Load Time. Kita harus membuat kode relokasi jika pada saat mengkompilasi kita tidak  mengetahui proses yang akan ditempatkan dalam memori. Pada kasus ini, binding harus ditunda    sampai load time.
   o Execution Time. Binding harus ditunda sampai waktu proses berjalan selesai jika pada saat    dieksekusi proses dapat dipindah dari satu segmen ke segmen yang lain di dalam memori. 
 Kita butuh perangkat keras khusus untuk melakukan ini.Sebagian besar sistem memperbolehkan  sebuah proses user (user process) untuk meletakkan di sembarang tempat dari memori fisik.  Sehingga, meskipun alamat dari komputer dimulai pada 00000, alamat pertama dari proses user tidak  perlu harus dimulai 00000

DYNAMIC LOADING
Dengan dynamic loading, suatu routine tidak diload sampai dipanggil. Semua routine disimpan pada disk sebagai format relocatable load
Mekanisme dasar :
› Program utama diload dahulu dan dieksekusi
› Bila suatu routine perlu memanggil routine yang lain, routine yang dipanggil lebih dahulu diperiksa apakah routine yang dipanggil sudah diload. Jika tidak, relocatable linking loader dipanggil untuk meload routine yang diminta ke memori dan mengupdate tabel alamat dari program yang mencerminkan perubahan ini.

DYNAMIC LINKING
Dynamic Linking adalah proses dengan banyak langkah, ditemukan juga penghubung-penghubung pustaka yang dinamis, yang menghubungkan semua rutin yang ada di pustaka. Beberapa sistem operasi hanya mendukung penghubungan yang statis, dimana seluruh rutin yang ada dihubungkan ke dalam suatu ruang alamat. Setiap program memiliki salinan dari seluruh pustaka. 
Konsep penghubungan dinamis, serupa dengan konsep pemanggilan dinamis. Pemanggilan lebih banyak ditunda selama waktu eksekusi, dari pada lama penundaan oleh penghubungan dinamis. Keistimewaan ini biasanya digunakan dalam sistem kumpulan pustaka, seperti pustaka bahasa subrutin. Tanpa fasilitas ini, semua program dalam sebuah sistem, harus mempunyai salinan dari pustaka bahasa mereka (atau setidaknya referensi rutin oleh program) termasuk dalam tampilan yang dapat dieksekusi.

OVERLAY
Overlay merupakan suatu metode untuk memungkinkan suatu proses yang membutuhkan memori yang cukup besar menjadi lebih sederhana. Penggunaan overlays ini dapat menghemat memori yang digunakan dalam pengeksekusian instruksi-instruksi. Hal ini sangat berguna terlebih jika suatu program yang ingin dieksekusi mempunyai ukuran yang lebih besar daripada alokasi memori yang tersedia.Cara kerjanya yaitu pertama-tama membuat beberapa overlays yang didasarkan pada instruksiinstruksi yang dibutuhkan pada satu waktu tertentu. Setelah itu, membuat overlays drivernya yang digunakan sebagai jembatan atau perantara antara overlays yang dibuat. Proses selanjutnya ialah me-load instruksi yang dibutuhkan pada satu waktu ke dalam absolut memori dan menunda instruksi lain yang belum di butuhkan pada saat itu. Setelah selesai dieksekusi maka instruksi yang tertunda akan diload menggantikan instruksi yang sudah tidak dibutuhkan lagi.



STRATEGI MANAJEMEN MEMORI
Strategi yang dikenal untuk mengatasi hal tersebut adalah memori maya. Memori maya menyebabkan sistem seolah-olah memiliki banyak memori dibandingkan dengan keadaan memori fisik yang sebenarnya. 
Memori maya tidak saja memberikan peningkatan komputasi, akan tetapi memori maya juga memiliki bberapa keuntungan seperti :
· Large Address Space Membuat sistem operasi seakan-akan memiliki jumlah memori melebihi kapasitas memori fisik yang ada. Dalam hal ini memori maya memiliki ukuran yang lebih besar daripada ukuran memori fisik.
· Proteksi. Setiap proses di dalam sistem memiliki virtual address space.Virtual address space tiap proses berbeda dengan proses yang lainnya lagi, sehingga apapun yang terjadi pada sebuah proses tidak akan berpengaruh secara langsung pada proses lainnya
· Memory Mapping Memory mapping digunakan untuk melakukan pemetaan image dan file-file data ke dalam alamat proses. Pada pemetaan memori, isi dari file akan di link secara langsung ke dalam virtual address space dari proses.
· Fair Physical Memory Allocation Digunakan oleh Manajemen Memori untuk membagi penggunaan memori fisik secara "adil" ke setiap proses yang berjalan pada sistem.
· Shared Virtual Memory. Meskipun tiap proses menggunakan address spaceyang berbeda dari memori maya, ada kalanya sebuah proses dihadapkan untuk saling berbagi penggunaan memori.

RUANG ALAMAT LOGIKA DAN FISIKA
Alamat logika ialah alamat yang diturunkan oleh CPU. Sedangkan alamat yang terdapat dalam memori disebut dengan alamat fisik. Pada saat compile time dan load time alamat logika dan alamat fisik menunjukkan nilai yang sama. Sedangkan pada saat execution time terjadi perbedaan antara alamat logika dengan alamat fisik. Sedangkan alamat fisik yang berhubungan dengan alamat logika disebut dengan ruang alamat fisik.

SWAPPING
Swapping adalah Suatu proses dapat di-swap secara temporary keluar dari memori dan dimasukkan ke backing store, dan dapat dimasukkan kembali ke dalam memori pada eksekusi selanjutnya.
   Ø Backing store –disk cepat yang cukup besar untuk mengakomodasi copy semua memori image      pada semua user; menyediakan akses langsung ke memori image.
   Ø Roll out, roll in – varian swapping yang digunakan dalam penjadualan prioritas; proses dengan  prioritas rendah di-swap out, sehingga proses dengan prioritas tinggi dapat di-load dan dieksekusi.
   
Bagian terbesar dari swap time adalah transfer time, total transfer time secara proporsional dihitung   dari jumlah memori yang di swap.

PENCATATAN PEMAKAIAN MEMORI
Memori yang tersedia harus dikelola, dilakukan dengan pencatatan pemakaian memori. Terdapat dua cara utama pencatatan pemakaian memori, yaitu

1) PETA BIT
Memori dibagi menjadi unit-unit alokasi,berkorespondensi dengan tiap unitalokasi adalah satu bit pada bit map.
   Ø Nilai 0 pada peta bit berarti unit itu masih bebas.
   Ø Nilai 1 berarti unit digunakan.

Masalah pada peta bit adalah penetapan mengenai ukuran unit alokasi memori, yaitu :
   Ø Unit lokasi memori berukuran kecil berarti membesarkan ukuran peta bit.
   Ø Unit alokasi memori n berukuran besar berarti peta bit kecil tapi memoribanyak disiakan pada unit      terakhir jika ukuran proses bukan kelipatan unit alokasi.· 
   Keunggulan :
   Ø Dealokasi dapat dilakukan secara mudah, hanya tinggal menset bit yang berkorespondensi    dengan unit yang telah tidak digunakan dengan 0.· 
   Kelemahan :
   Ø Harus dilakukan penghitungan blok lubang memori saat unit memori bebas.
   Ø Memerlukan ukutan bit map besar untuk memori yang besar.

2) LINKED LIST
Sistem operasi mengelola senarai berkait (linked list) untuk segmen-segmen memori yang telah dialokasikan dan bebas. Segmen memori menyatakan memori untuk proses atau memori yang bebas (lubang). Senarai segmen diurutkan sesuai alamat blok. Setiap node list terdiri atas : informasi yang menyatakan adanya proses (p) dan hole (H), lokasi awal dan panjang lokasi.· 
   Keunggulan :
   Ø Tidak harus dilakukan perhitungan blok lubang memori karena sudah tercatat di node.
   Ø Memori yang diperlukan relatif lebih kecil dibandingkan peta bit.· 
   Kelemahan :
   Ø Dealokasi sulit dilaksanakan mengingat akan terjadinya penggabungan antara beberapa mode.

MONOPROGRAMMING
Bila program komputer yang dijalankan hanya satu jenis selama proses berlangsung maka dikatakan mode kerja komputer itu adalah monoprogramming. Selama komputer itu bekerja maka memory RAM seluruhnya di kuasai oleh program tersebut. Jadi RAM tidak dapat di masuki oleh program lain. Mode serupa ini di temui pada komputer berbasis DOS.Penempatan program di memory diatur sedemikain rupa sehingga :
a) BIOS selalu di ROM (BIOS)
b) Sistem Operasi di RAM bawah (alamat rendah)
c) Program Aplikasi di RAM tengah (alamat sesudah OS terakhir)
d) Data Sementara di RAM atas (alamat sesudah Aplikasi terakhir).

Bila sistem operasi telah selasai dimuat maka tampillah prompt di layar monitor, dan itu adalah tanda bahwa komputer siap menerima program aplikasi. Letakkan disk yang berisi program aplikasi pada disk drive yang aktif lalu eksekusi , sehingga program itu termuat seluruhnya ke RAM. 
Dengan demikian program aplikasi siap digunakan menurut semestinya.Kita lihat ketika komputer mula-mula dinyalakan maka proses yang dibaca pertama kali adalah apa yang tertulis di dalam ROM. Setelah semua perintah di adalam ROM BIOS selesai dibaca maka komputer meminta kita memasukkan DOS ke dalam RAM-nya.Ketika DOS dibaca maka diletakkan sebagian dari program DOS yang terpenting saja ke dalam RAM, seperti : COMMAND.COM dan INTERNAL COMMAND. Sedangkan program DOS yang lain masih tetap di dalam disk dan apabila kita perlukan dapat di eksekusi. Hal itu berguna untuk mrnjaga agar RAM tidak penuh oleh Sistem Operasi saja.
Ketika kita bekerja dengan program aplikasi tadi maka kita akan menghasilkan data. Data itu akan di simpan sementara di RAM yang masih tersisa. Data yang disimpan di RAM bersifat voletile, artinya data hanya bisa bertahan selama catu daya komputer masih ON. Untuk berjaga-jaga biasakan menyimpan data ke disk dalam jangka waktu yang tidak terlalu lama, misalnya setiap 5 menit sekali. Selain menjaga data agar tidak amblas menyimpan ke disk bertujuan juga untuk mengosongkan RAM agar tidak cepat penuh.Didalam sistem juga dapat kita lihat bahwa sistem operasi terletak berdekatan dengan program lain di RAM sehingga kemungkinan sistem operasi ter ganggu atau terubah oleh proses yang sedang berjalan sangat besar .Hal itu tidak boleh terjadi.Untuk mencegah terganggu sitem operasi tersebut maka alamat tertinggi dari sistem operasi dletakkan pada register batas dalam CPU. Jika ada proses yang mengacu ke alamat itu atau yang lebih rendah dari itu maka proses di hentikan dan program akan menampilkan pesan kesalahan.

MULTIPROGRAMMING
Untuk sistem komputer yang berukuran besar (bukan small computers), membutuhkan pengaturan memori, karena dalam multiprogramming akan melibatkan banyak pemakai secara simultan sehingga di memori akan terdapat lebih dari satu proses bersamaan. Oleh karena itu dibutuhkan sistem operasi yang mampu mendukung dua kebutuhan tersebut, meskipun hal tersebut saling bertentangan, yaitu :
a) Pemisahan ruang-ruang alamat.
b) Pemakaian bersama memori.
Manajer memori harus memaksakan isolasi ruang-ruang alamat tiap proses agar mencegah proses aktif atau proses yang ingin berlaku jahat mengakses dan merusak ruang alamat proses lain. 
Manajer memori di lingkungan multiprogramming sekalipun melakukan dua hal, yaitu :
a) Proteksi memori dengan isolasi ruang-ruang alamat secara dis-joint.
b) Pemakaian bersama memori.Memungkinkan proses-proses bekerja sama mengakses daerah memori bersama. Ketika konsep multiprogramming digunakan, pemakaian CPU dapat ditingkatkan. Sebuah model untuk mengamati pemakaian CPU secara probabilistic :CPU utilization = 1 – p n
Dengan :
a) N menunjukkan banyaknya proses pada suatu saat, sehingga kemungkinan bahwa semua n proses akan menunggu menggunakan I/O (masalah CPU menganggur) adalah sebesar pn. Fungsi dari n disebut sebagai degree of multiprogramming.
b) P menunjukkan besarnya waktu yang digunakan sebuah proses

PENGALOKASIAN BERURUTAN
Pada Multiprogramming memori utama harus mengalokasikan tempat untuk sistem operasi dan beberapa user proses. Memori harus mengakomodasi baik OS dan proses user Memori dibagi menjadi 2 partisi :
    › Untuk OS yang resident
    › Untuk Proses User
 Ø Ada 2 tipe Contiguos Allocation :
    › Single Partition (Partisi Tunggal)
    › Multiple Partition (Partisi Banyak)
 Ø Single Partition (Partisi Tunggal)
    › Pada skema ini, diasumsikan OS ditempatkan di memori rendah, dan proses user dieksekusi di memori tinggi\
    › Proteksi dapat dilakukan dengan dengan menggunakan register relokasi dan register limit
    › Register relokasi à berisi nilai dari alamat fisik terkecil
    › Register Limit à berisi jangkauan alamat logika
    › Alamat logika harus lebih kecil dari register limit
 Ø Multiple Partition (Partisi Banyak)
    › Ruang kosong à blok memori yang tersedia, ruang kosong dengan berbagai ukuran tersebar pada    memori
    › Proses akan dialokasikan memori pada ruang kosong yang cukup besar untuk ditempatinya
    › OS akan mengelola informasi mengenai :
    › Partisi yang dialokasikan
    › Partisi bebas (ruang kosong)
    › Contoh multiple allocation

MULTIPROGRAMMING DENGAN PARTISI STATIS
Terdapat beberapa alasan kenapa multiprogramming digunakan, yaitu :
 a. Mempermudah pemogram.Pemogram dapat memecah program menjadi dua proses atau lebih.
 b. Agar dapat memberi layanan interaktif ke beberapa orang secara simultan.Untuk itu diperlukan kemampuan mempunyai lebih dari satu proses dimemori agar memperoleh kinerja yang baik.
 c. Efisiensi penggunaan sumber daya.Bila pada multiprogramming maka proses tersebut diblocked (hanya DMA yang bekerja) dan proses lain mendapat jatah waktu pemroses, maka DMA dapat meningkatkan efisiensi sistem.
 d. Eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil.
 e. Dapat mengerjakan sejumlah job secara simultan.

Multiprogramming dapat dilakukan dengan pemartisian statis, yaitu memori dibagi menjadi beberapa sejumlah partisi tetap. Pada partisi-partisi tersebut proses-proses ditempatkan. 
Pemartisian statis berdasarkan ukuran partisi-partisinya terbagi dua, yaitu :
1. Pemartisian menjadi partisi-partisi berukuran sama, yaitu ukuran semua partisi memori adalah sama.
2. Pemartisian menjadi partisi-partisi berukuran berbeda, yaitu ukuran semua partisi memori adalah berbeda.

MULTIPROGRAMMING DENGAN PARTISI DINAMIS
Pemartisian statis tidak menarik karena terlalu banyak diboroskan proses-proses yang lebih kecil dibanding partisi yang ditempatinya. Dengan pemartisian dinamis maka jumlah, lokasi dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. Proses yang akan masuk ke memori segera dibuatkan paritisi untuknya sesuai kebutuhannya. Teknik ini meningkatkan utilitasi memori.· Kelemahan pemartisian dinamis adalah :
 a. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 b. Merumitkan alokasi dan dealokasi memoria. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 c. Merumitkan alokasi dan dealokasi memoria. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 d. Merumitkan alokasi dan dealokasi memoria. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 e. Merumitkan alokasi dan dealokasi memoria. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 f. Merumitkan alokasi dan dealokasi memoria. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
 g. Merumitkan alokasi dan dealokasi memori

SISTEM BUDDY
Sistem buddy merupakan cara mengelola memori utama dengan memanfaatkan kelebihan penggunaan bilangan biner. Jika suatu proses berukuran 35 Kbyte, maka proses tersebut akan di tempatkan pada lubang 64 Kbyte, dan akan menyisakan 29 Kbyte. Hal ini sering disebut dengan istilah internal fragmentation, sebab sisi memori yang terbuang tersebut berasal dari segmen internalnya sendiri. Namun, dengan memakai sistem buddy ini, dealokasi proses dapat dilakukan dengan cepat.

PAGING
Salah satu cara mengatasi external fragmentation(munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaan dari proses). adalah membentuk teknik pengalokasian non-contigous(tidak berurutan). Paging adalah teknik yang berorientasi hardware untuk mengelola memori fisik. Paging digunakan agar program yang besar dapat berjalan pada komputer yang mempunyai memori fisik yang kecil. 
Dalam sistem paging, hardware memori virtual membagi alamat logis menjadi dua bagian, yaitu virtual page number atau disebut juga page number dan word offset dalam page. 
Hardware melakukan pembagian ini dengan menyekat atau memisahkan bit alamat, yaitu bit high order menjadi page number dan bit low order menjadi offset. Unit memori yang menyimpan page disebut page frame ( kerangka frame ), atau kadang disebut block, untuk membedakan mereka dengan page virtual. Untuk sistem yang baru, page mframe mempunyai jangkauan 512 sampai 4096 byte.Sebagai bagian dari peta page, sistem pengoperasian memelihara atau mengelola page tabel yang menyimpan berbagai bagian informasi mengenai page program. Page tabel terdiri atas sejumlah page tabel entries, dan setiap page tabel entries menyimpan informasi mengenai page tertentu. Virtual page number berfungsi sebagai offset terhadap page table.

Konsep Dasar 
Memori fisik dibagi menjadi blok-blok dengan ukuran tertentu disebut frame. Sedangkan memori logika dibagi menjadi blok-blok yang disebut page. Setiap alamat yang diberikan oleh CPU dibagi menjadi 2 bagian, yaitu nomor page (p) dan offset (d).
· Page number (p) digunakan sebagai indeks ke dalam table page (page table). Page table berisi alamat basis dari setiap page pada memori fisik.
· Page offset (d) mengkombinasikan alamat basis dengan page offset untuk mendefinisikan alamat memori fisik yang dikirim ke unit memori.

Sistem Paging :
Kerugian dan keuntungan paging
 1. Jika kita membuat ukuran dari masing-masing pages menjadi besar:
    · Keuntungan: akses memori akan relatif lebih cepat.
    · Kerugian: kemungkinan terjadinya fragmentasi internal yang sangat besar.
 2. Jika kita membuat ukuran dari masing-masing pages menjadi kecil:
    · Keuntungan: akses memori akan relatif lebih lambat.
    · Kerugian: kemungkinan terjadinya fragmentasi internal akan menjadi lebih kecil.
Istilah sistem paging
    · Alamat Maya :alamat yang dihasilkan dengan perhitungan index register, base register, dan    segmen register, dll. Ruang alamat yang dibentuk alamat maya disebut ruang alamat maya.
   · Memori management unit (MMU):Chip atau kumpulan chip yang memetakan alamat maya ke    alamat fisik.
    · Alamat Nyata :Alamat Nyata adalah alamat yang tersedia di memori utama fisik.
    · Page :Unit terkecil ruang alamat maya. Ruang alamat maya proses merupakan kelipatan page yang berukuran sama

SEGMENTASI
Segmentasi adalah skema pengaturan memori yang mendukung user untuk melihat memori tersebut. Tiap-tiap segmen memiliki nama dan panjang.

SCHEDULING

Definisi

Proses adalah keadaan ketika sebuah program sedang di eksekusi. Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process yang membentuk proses turunan ( child process) yang dilakukan oleh proses induk ( parent process). Proses turunan tersebut juga mampu membuat proses baru sehingga semua proses ini pada akhirnya membentuk pohon proses.
Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber-daya seperti waktu CPU, memori, berkas, atau perangkat I/O. Sumber daya ini dapat diperoleh langsung dari sistem operasi, dari proses induk yang membagi-bagikan sumber daya kepada setiap proses turunannnya, atau proses turunan dan proses induk berbagi sumber-daya yang diberikan sistem operasi.

Pengelolaan Proses
Proses perlu dikelola karena dalam sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, dan perangkat-perangkat I/O.
Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan managemen proses seperti:
  • Pembuatan dan penghapusan proses pengguna dan sistem proses
  • Menunda atau melanjutkan proses
  • Menyediakan mekanisme untuk proses sinkronisasi
  • Menyediakan mekanisme untuk proses komunikasi
  • Menyediakan mekanisme untuk penanganan deadlock
Perkembangan sistem komputer mendatang adalah menuju ke sistem multi- processing, multiprogramming, terdistribusi dan paralel yang mengharuskan adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan kongkurensi (proses-proses yang kongkuren). Proses-proses yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik.

Status Proses
Proses yang dieksekusi mempunyai lima status yang terdiri dari:
  1. New : pembentukan suatu proses
  2. Running : instruksi-instruksi yang sedang dieksekusi
  3. Waiting : proses menunggu untuk beberapa event yang terjadi
  4. Ready : menunggu untuk dialirkan ke pemroses (processor)
  5. Terminated : proses telah selesai dieksekusi
Kelima status proses tersebut dapat digambarkan pada diagram berikut:
diagram status proses

Pembentukan Proses
Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process membentuk proses turunan (child process) yang dilakukan oleh proses induk parent process. Proses turunan tersebut juga mampu membuat proses baru sehingga kesemua proses-proses ini pada akhirnya membentuk pohon proses.
Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber-daya seperti ”waktu CPU”, ”memori”, ”berkas” atau perangkat ”M/K”. Sumber daya ini dapat diperoleh langsung dari Sistem Operasi, dari Proses Induk yang membagi-bagikan sumber daya kepada setiap proses turunannnya, atau proses turunan dan proses induk berbagi sumber-daya yang diberikan Sistem Operasi.
Ada dua kemungkinan bagaimana jalannya (running) proses induk dan turunan berjalan (running). Proses-proses tersebut berjalan secara konkuren atau proses induk menunggu sampai beberapa/seluruh proses turunannya selesai berjalan

Terminasi Proses
          Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir serta meminta sistem operasi untuk menghapus perintah tersebut dengan menggunakan system call exit. Pada saat itu, proses dapat mengembalikan data keluaran kepada proses induk-nya melalui system call wait. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh system operasi agar dapat dimanfaatkan oleh proses lain. Suatu proses juga dapat diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk melakukan hal ini pada turunannya. Alasan terminasi tersebut seperti:
  • Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya.
  • Task yang ditugaskan kepada turunan tidak lagi diperlukan.
  • Proses induk selesai, dan sistem operasi tidak mengizinkan proses turunan untuk tetap berjalan.
Jadi, semua proses turunan akan berakhir pula. Hal ini yang disebut cascading termination.

Process Control Block (PCB)
Proses Control Block adalah bentuk informasi-informasi lain yang diperlukan sistem operasi untuk mengendalikan dan mengoordinasikan beragam proses aktif dalam suatu proses. Dalam kenyataannya, proses banyak mengalami gangguan dalam menjalankan tugasnya oleh karena itu ada PCB (Proses Control Block) untuk membantu dan memberikan dukungan kepada proses itu.
Process control block
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, seperti status proses, program counter, CPU register, Informasi manajemen memori, informasi pencatatan, informasi status I/O. Berikut adalah gambar diagram PCB. 
diagram pcb



PENJADWALAN PROSES

Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer. Proses penjadwalan yang akan dibahas disini adalah proses penjadwalan sistem operasi SOLARIS, LINUX, dan WINDOWS XP.
Sasaran atau tujuan utama penjadwalan proses optimasi kinerja menurut kriteria tertentu. dimana kriteria untuk mengukur dan optimasi kerja penjadwalan antara lain :
  • Agar semua pekerjaan memperoleh pelayanan yang adil (firness).
  • Agar pemakaian prosesor dapat dimaksimumkan.
  • Agar waktu tanggap dapat diminimumkan.
  • Agar pemakaian sumber daya seimbang.
  • Turn arround time, waktu sejak program masuk ke system sampai proses selesai.
  • Efesien, proses tetap dalam keadaan sibuk tidak menganggur.
  • Agar terobosan (thoughput) dapat dimaksimumkan.
Terdapat 3 tipe penjadwal berada secara bersama-sama pada sistem operasi yang kompleks, yaitu:
  1. Penjadwal jangka pendek (short term scheduller)
Bertugas menjadwalkan alokasi pemroses di antara proses-proses ready di memori utama Penjadwalan dijalankan setiap terjadi pengalihan proses untuk memilih proses berikutnya yang harus dijalankan.
  1. Penjadwal jangka menengah (medium term scheduller)
Setelah eksekusi selama suatu waktu, proses mungkin menunda sebuah eksekusi karena membuat permintaan layanan masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak dapat membuat suatu kemajuan menuju selesai sampai kondisi-kondisi yang menyebabkan tertunda dihilangkan. Agar ruang memori dapat bermanfaat, maka proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proses lain. Kapasitas memori utama terbatas untuk sejumlah proses aktif. Aktivitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses yang tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan dimasukkan kembali ke memori utama dan ready.
  1. Penjadwal jangka panjang (long term scheduller)
Penjadwal ini bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, masukan/keluaran), program-program ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas job-job interaktif rendah.


PENJADWALAN PROSES SISTEM OPERASI SOLARIS

Company /developerOracle Corporation
Programmed inC
OS familyUnix
Source modelMixed open source / closed source
Initial release1992
Latest stable release10 10/09 / October 8, 2009; 10 months ago
Availablelanguage(s)English
Availableprogramming languages(s)C
Supported platformsSPARCIA-32x86-64,PowerPC (Solaris 2.5.1 only)
Kernel typeMonolithic
Default user interfaceJava Desktop System orCDE
LicenseVarious
Official websiteoracle.com/solaris
Solaris menggunakan penjadwalan berdasarkan prioritas dimana yang mempunyai prioritas yang lebih tinggi dijalankan terlebih dahulu. Informasi tentang penjadwalan kernel thread dapat dilihat dengan ps -elcL. Kernel Solaris adalah fully preemtible, artinya semua thread, termasuk thread yang mendukung aktifitas kernel itu sendiri dapat ditunda untuk menjalankan thread dengan prioritas yang lebih tinggi.

penjadwalan solaris
Solaris mengenal 170 prioritas yang berbeda, 0-169. Terbagi dalam 4 kelas penjadwalan yang berbeda:
  1. Real time (RT). Thread di kelas RT memiliki prioritas yang tetap dengan waktu kuantum yang tetap juga. Thread ini memiliki prioritas yang tinggi berkisar antara 100-159. Hal inilah yang membuat proses waktu nyata memiliki response time yang cepat. Proses waktu nyata akan dijalankan sebelum proses-proses dari kelas yang lain dijalankan sehingga dapat menghentikan proses di system class. Pada umumnya, hanya sedikit proses yang merupakan real time class.
  2. System (SYS). Solaris menggunakan system class untuk menjalankan kernel proses, seperti penjadwalan dan paging daemonThreads di kelas ini adalah “bound” threads, berarti bahwa mereka akan dijalankan sampai mereka di blok atau prosesnya sudah selesai. Prioritas untuk SYS threads berkisar 60-99. Sekali dibangun, prioritas dari sistem proses tidak dapat dirubah. System classdialokasikan untuk kernel useuser proses berjalan di kernel mode bukan di system class).
  3. Time Sharing (TS). Time sharing class merupakan default class untuk proses dan kernel thread yang bersesuaian. Time slices masing-masing proses dibagi berdasarkan prioritasnya. Dalam hal ini, prioritas berbanding terbalik dengan time slices-nya. Untuk proses yang prioritasnya tinggi mempunyai time-slices yang pendek, dan sebaliknya proses dengan prioritas yang rendah mempunyai time slices yang lebih panjang. Besar prioritasnya berada antara 0-59. Proses yang interaktif berada di prioritas yang tinggi sedangkan proses CPU-bound mempunyai prioritas yang rendah. Aturan penjadwalan seperti ini memberikan response time yang baik untuk proses yang interaktif, dan troughput yang baik untuk proses CPU-bound.
  4. Interactive (IA). Kelas Interaktif menggunakan aturan yang sama dengan aturan dengan kelas kelas time sharing, tetapi kelas ini memberikan prioritas yang tinggi untuk aplikasi jendela ( windowing application) sehingga menghasilkan performance yang lebih baik. Seperti TS, range IA berkisar 0-59.
Tabel . Solaris dispatch table for interactive and time sharing threads
PriorityTime quantumTime quantum expiredreturn from sleep
0200050
5200050
10160051
15160551
201201052
251201552
30802053
35802554
40403055
45403556
50404058
55404558
59204959
Keterangan:
  1. Priority: prioritas berdasarkan kelas untuk time sharing dan interactive class. Nomor yang lebih tinggi menunjukkan prioritas yang lebih tinggi.
  1. Time quantum: waktu kuantum untuk setiap prioritas. Dapat diketahui bahwa fungsi waktu kuantum berbanding terbalik dengan prioritasnya.
  1. Time quantum expired: Prioritas terbaru untuk thread yang telah habis time slices-nya tanpa diblok. Dapat dilihat dari tabel bahwa thread yang CPU-bound tetap mempunyai prioritas yang rendah.
  1. Return from sleep: Prioritas thread yang kembali dari sleeping(misalnya menunggu dari M/K). Seperti yang terlihat dari tabel ketika M/K berada di waiting thread, prioritasnya berada antara 50-59, hal ini menyebabkan response time yang baik untuk proses yang interaktif.
  1. Fixed Priority (FX). Thread di kelas fixed priority memiliki range prioritas (0-59) yang sama seperti di time-sharing class; tetapi, prioritas mereka tidak akan berubah.
  2. Fair Share Scheduler (FSS). Thread yang diatur oleh FSS dijadwalkan berdasar pembagian sumber daya dari CPU yang tersedia dan dialokasikan untuk himpunan proses-proses (yang dikenal sebagai project). FS juga berkisar 0-59. FSS and FX baru mulai diimplementasikan di Solaris 9.
Seperti yang telah diketahui, setiap kelas penjadwalan mempunyai himpunan dari prioritas-prioritas. Tetapi, penjadwal mengubah class-specific priorities menjadi global priorities kemudian memilih threaddengan prioritas paling tinggi untuk dijalankan. Thread yang dipilih tersebut jalan di CPU sampai thread tersebut (1) di- block, (2) habis time slices-nya, atau (3) dihentikan oleh thread dengan prioritas yang lebih tinggi. Jika ada beberapa thread dengan prioritas yang sama, penjadwal akan menggunakan Round-Robin queue. Seperti yang pernah dijelaskan sebelumnya, Solaris terdahulu menggunakan many-to-many model tetapi solaris 9 berubah menggunakan one-to-one model.


PENJADWALAN PROSES SISTEM OPERASI LINUX

Company /developerLinus Torvalds and many others
Programmed inAssemblyC
OS familyUnix-like
Working stateCurrent
Source modelFree and open source software
Latest stable release2.6.35.3 (August 20, 2010; 3 days ago)[1] [+/−]
Latest unstable release2.6.36-rc2 (August 23, 2010; 0 days ago)[2][+/−]
Marketing targetDesktops, servers, embedded devices
Availablelanguage(s)Multi-lingual
Availableprogramming languages(s)AssemblyCC++
Supported platformsIA-32MIPSx86-64SPARC,DEC AlphaItaniumPowerPC,ARMm68kPA-RISCs390,SuperHM32R and more
Kernel typeMonolithic
UserlandGNU and others
Default user interfaceGraphical (X Window System)
LicenseVarious including GNU General Public LicenseBSD LicenseApache LicenseMIT License, and others[3]
Officialwebsitehttp://www.kernel.org
Mulai di versi 2.5, Kernel linux dapat berjalan di berbagai algoritma penjadwalan UNIX tradisional. Dua masalah dengan penjadwal UNIX tradisional adalah tidak disediakannya dukungan yang cukup untuk SMP (symmetric multiprocessor) sistem dan tidak diperhitungkan dengan baik jumlah tasks pada sistem yang berkembang. Dalam versi 2.5, penjadwal memeriksa dengan teliti hal tersebut, dan sekarang kernel juga menyajikan algoritma penjadwalan yang dapat run dalam waktu yang konstan tidak tergantung dari jumlah tasks dalam sistem. Penjadwal yang baru juga menyediakan peningkatan dukungan untuk SMP, termasuk processor affinity dan load balancing, sebaik dalam menyediakan keadilan dan dukungan terhadap interactive tasks.
Penjadwal linux adalah preemptive, algoritmanya berdasarkan prioritas dengan dua range prioritas yang terpisah: real-time range dari 0-99 dan nice value berkisar dari 100-140. Dua range ini dipetakan menjadi global priority scheme dimana nilai yang lebih rendah memiliki prioritas yang lebih tinggi. Tidak seperti penjadwal yang lain, Linux menetapkan prioritas yang lebih tinggi memiliki waktu kuantum yang lebih panjang dan prioritas yang lebih rendah memiliki waktu kuantum yang lebih pendek.
Linux mengimplementasikan real time scheduling seperti yang didefinisikan oleh POSIX 1.b: First Come First Served dan Round Robin. Sistem waktu nyata( real time)diberikan untuk task yang prioritasnya tetap. Sedangkan task yang lainnya memiliki prioritas yang dinamis berdasakan nice values ditambah atau dikurangi dengan 5. Interaktifitas sebuah task menentukan apakah nilai 5 tersebut akan ditambah atau dikurangi dari nice value. Task yang lebih interaktif mempunyai ciri khas memiliki sleep times yang lebih lama dan karena itu maka ditambah dengan -5, karena penjadwal lebih menyukaiinteractive task. Hasil dari pendekatan ini akan membuat prioritas untuk interactive task lebih tinggi. Sebaliknya, task dengan sleep time yang lebih pendek biasanya lebih CPU-bound jadi prioritasnya lebih rendah.

Hubungan antara prioritas dan waktu kuantum
Task yang berjalan memenuhi syarat untuk dieksekusi oleh CPU selama time slice-nya masih ada. Ketika sebuah task telah kehabisan time slice-nya, maka task tersebut akan expired dan tidak memenuhi syarat untuk dieksekusi lagi sampai semua task yang lain sudah habis waktu kuantumnya. Kernel mengatur daftar semua task yang berjalan di runqueue data structure. Karena dukungan Linux untuk SMP, setiap prossesor mengatur runqueue mereka sendiri dan penjadwalan yang bebas. Setiap runqueue terdiri dari dua array prioritas – active dan expiredActive array terdiri dari semua task yang mempunyai sisa waktu time slices, dan expired array terdiri dari task yang telah berakhir. Setiap array prioritas ini memiliki daftar task indexed berdasakan prioritasnya. Penjadwal memilih task dengan prioritas paling tinggi di active array untuk dieksekusi dalam CPU. Di mesin multiprossesor, ini berarti setiap prossesor menjadwalkan prioritas paling tinggi dalam runqueue structure masing-masing. Ketika semua tasktelah habis time slices-nya (dimana, active array-nya sudah kosong), dua array prioritas bertukar; expired array menjadi active array, dan sebaliknya.

Daftar task indexed berdasarkan prioritas
Penghitungan ulang dari task yang memiliki prioritas yang dinamis berlangsung ketika task telah menyelesaikan waktu kuantumnya dan akan dipindahkan ke expired array. Jadi, ketika ada dua larik ( array) ditukar, semua task di array aktif yang baru ditentukan prioritasnya yang baru dan disesuaikan juga time slices-nya.


PENJADWALAN PROSES SISTEM OPERASI WINDOWS XP 


DeveloperMicrosoft Corporation
Release dateRTM: August 24, 2001
Retail: October 25, 2001 (info)
Current version5.1.2600.5512 Service Pack 3 (x86 SP3) (21 April 2008; 2 years ago) (info)
Source modelClosed sourceShared source[1]
LicenseMicrosoft-EULA
Kernel typeHybrid
Update methodWindows Update
Platform supportIA-32x86-64IA-64
WebsiteWindows XP: Homepage
Windows XP menggunakan algoritma, prioritas penjadwalan quantum-based berbasis reemptive priority scheduling .
Gambar Proses Pada Windows Xp
Threads dijadwalkan dalam proses, Karena prioritas preemptive algoritma diimplementasikan dengan beberapa queue, dapat dianggap sebagai algoritma multiple feedback-queue . Namun, masing-masing Threads biasanya terbatas pada kelompok kecil dari 5 level prioritas,
Preemption dapat terjadi karena salah satu dari 4 alasan:
    • thread menjadi prioritas lebih tinggi-siap
    • thread berakhir
    • kuantum habis waktu
    • thread melakukan panggilan sistem pemblokiran, seperti untuk I / O, dalam hal ini meninggalkan keadaan ready menjadi keadaan menunggu.
Gambar Quatum pada windows XP
32 tingkat prioritas digunakan, di mana prioritas 31 merupakan prioritas tertinggi dan prioritas 0 adalah prioritas terendah
    • memori manajemen thread: prioritas 0
    • variabel kelas prioritas (1-15)
    • real-time kelas prioritas (16-31)
  • Threads di kelas real-time telah tetap prioritasnya.
  • Threads yang berjalan selalu dengan tingkat prioritas tertinggi.
  • Jika tidak ada thread yang ready, Threads idle dijalankan.
  • Ketika waktu quantum thread habis, prioritasnya diturunkan, tetapi prioritasnya tidak pernah diturunkan terlalu jauh.
Ketika Threads menjadi ready setelah keadaan menunggu, maka diberikan prioritas tertinggi setiap threads dari proses yang terkait dengan program yang saat ini pengguna gunakan diberikan prioritas lebih .


ALGORITMA PENJADWALAN PROSES 

Algorima ini merupakan proses antrian, yang mana proses akan mendapatkan jatah waktu sebesar time quantum. Jika waktu quantumnya selesai maka prosesnya pun selesai. Proses ini merupakan proses yang adil karena tidak ada proses yang didahulukan, semua proses mendapatkan jatah waktu yang sama yaitu 1/n.
Permasalahan utama pada Round Robin adalah menentukan besarnya time quantum. Jika time quantum yang ditentukan terlalu kecil, maka sebagian besar proses tidak akan selesai dalam 1 quantum. Hal ini tidak baik karena akan terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari suatu proses ke proses lain (disebut dengan context switches time). Sebaliknya, jika time quantum terlalu besar, algoritma Round Robin akan berjalan seperti algoritma first come first served yang mana yang dating dahulu akan dilayani terlebih dahulu.Time quantum yang ideal adalah jika 80% dari total proses memiliki CPU burst time yang lebih kecil dari 1 time quantum.

Gambar Urutan Kejadian Algoritma Round Robin

Multiple Feedback Queue (MFQ)
Algoritma ini merupakan algoritma yang mengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke antrian yang lebih rendah. Hal ini akan sangat menguntungkan karena akan menggunakan waktu yang sedikit dalam pengerjaan proses-proses tersebut. Demikian pula dengan proses yang menunggu lama maka prose ini akan dinaikkan ke tingkat yang lebih tinggi. Dengan begitu CPU akan bekerja dengan penuh dan M/K dapat terus sibuk. Semakin rendah tingkatnya, panjang CPU burst proses juga semakin panjang.

Gambar Multilevel Feedback Queue

Shortest Remaining First (SRF)
Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.

Tabel Contoh Shortest Job First
Contoh: Ada 4 buah proses yang datang berurutan yaitu P1 dengan arrival time pada 0.0 ms dan burst time 7 ms, P2 dengan arrival time pada 2.0 ms dan burst time 4 ms, P3 dengan arrival time pada 4.0 ms dan burst time 1 ms, P4 dengan arrival time pada 5.0 ms dan burst time 4 ms. Hitunglah waiting time rata-rata dan turnaround time dari keempat proses tersebut dengan mengunakan algoritma SJF. Average waiting time rata-rata untuk ketiga proses tersebut adalah sebesar (0 +6+3+7)/4=4 ms.

Higest Ratio Next (HRN)
Higest Ratio Next (HRN) Merupakan penjadwalan untuk mengoreksi kelemahan SJF yang berprioritas dinamis. HRN Adalah strategi penjadwalan dengan prioritas proses tidak hanya merupakan fungsi waktu layanan,tetapi juga jumlah waktu tunggu proses. Begitu proses mendapat jatah pemroses, maka proses berjalan sampai selesai. Prioritas dinamis HRN dihitung berdasarkan rumus berikut : Prioritas = (waktu tunggu + waktu layanan ) / waktu layanan. Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek berprioritas lebih baik, karena waktu tunggu sebagai pembilang, maka proses yang telah menunggu lebih lama juga mempunyai kesempatan lebih bagus. Mengapa algoritma ini disebut HRN karena waktu tunggu ditambah waktu layanan adalah waktu tanggap, yang berarti waktu tanggap tertinggi yang harus dilayani.

Priority Schedulling (PS)
Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing.
Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
1.       Time limit.
2.       Memory requirement.
3.       Akses file.
4.       Perbandingan antara burst M/K dengan CPU burst.
5.       Tingkat kepentingan proses.
Priority scheduling juga dapat dijalankan secara preemptive maupun non preemptive. Pada preemptive, jika ada suatu proses yang baru datang memiliki prioritas yang lebih tinggi daripada proses yang sedang dijalankan, maka proses yang sedang berjalan tersebut dihentikan, lalu CPU dialihkan untuk proses yang baru datang tersebut. Sementara itu, pada non-preemptive, proses yang baru datang tidak dapat menganggu proses yang sedang berjalan, tetapi hanya diletakkan di depan queue.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blocking( starvation). Suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki prioritas lebih tinggi darinya. Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap. Contoh: Setiap 10 menit, prioritas dari masing-masing proses yang menunggu dalam queue dinaikkan satu tingkat. Maka, suatu proses yang memiliki prioritas 127, setidaknya dalam 21 jam 20 menit, proses tersebut akan memiliki prioritas 0, yaitu prioritas yang tertinggi (semakin kecil angka menunjukkan bahwa prioritasnya semakin tinggi).

Guaranteed Scheduling (GS)
Penjadwalan ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap proses (pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk mewujudkannya, sistem harus selalu menyimpan informasi tentang jumlah waktu CPU untuk semua proses sejak login dan juga berapa lama pemakai sedang login. Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi dengan n, sehingga lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang sesungguhnya harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu pemroses yang telah diperuntukkan proses itu. Rasio 0,5 berarti sebuah proses hanya punya 0,5 dari apa yang waktu CPU miliki dan rasio 2,0 berarti sebuah proses hanya punya 2,0 dari apa yang waktu CPU miliki. Algoritma akan menjalankan proses dengan rasio paling rendah hingga naik ketingkat lebih tinggi diatas pesaing terdekatnya. Ide sederhana ini dapat diimplementasikan ke sistem real-time dan memiliki penjadwalan berprioritas dinamis.