Top 10 List of Week 06
Thread adalah jalur eksekusi dalam suatu proses. Suatu proses dapat berisi banyak thread
Perbedaan utama adalah bahwa Thread dalam proses yang sama berjalan di ruang memori bersama, sedangkan proses berjalan di ruang memori terpisah. Thread tidak independen satu sama lain seperti proses, dan sebagai hasilnya thread berbagi dengan thread lain bagian kode, bagian data, dan sumber daya OS mereka (seperti file dan sinyal terbuka). Tapi, seperti proses, thread memiliki penghitung program, kumpulan register, dan ruang tumpukannya sendiri.
-
Keunggulan Thread daripada Process
-
Responsiveness: Jika proses dibagi menjadi beberapa thread, jika satu thread menyelesaikan eksekusinya, maka outputnya dapat langsung dikembalikan.
-
Peralihan konteks lebih cepat: Waktu peralihan konteks antar utas lebih rendah dibandingkan dengan peralihan konteks proses. Pengalihan konteks proses membutuhkan lebih banyak overhead dari CPU.
-
Pemanfaatan sistem multiprosesor yang efektif: Jika kita memiliki banyak utas dalam satu proses, maka kita dapat menjadwalkan beberapa utas pada banyak prosesor. Ini akan membuat eksekusi proses lebih cepat.
-
Berbagi sumber daya: Sumber daya seperti kode, data, dan file dapat dibagikan di antara semua utas dalam suatu proses. (Catatan: tumpukan dan register tidak dapat dibagikan di antara utas. Setiap utas memiliki tumpukan dan registernya sendiri.)
-
Komunikasi: Komunikasi antara beberapa utas lebih mudah, karena utas berbagi ruang alamat yang sama. Sedangkan dalam prosesnya kita harus mengikuti beberapa teknik komunikasi khusus untuk komunikasi antara dua proses.
-
Peningkatan throughput sistem: Jika sebuah proses dibagi menjadi beberapa utas, dan setiap fungsi utas dianggap sebagai satu pekerjaan, maka jumlah pekerjaan yang diselesaikan per unit waktu meningkat, sehingga meningkatkan throughput sistem.
-
-
Process Scheduler pada Sistem Operasi
Ada tiga jenis penjadwal proses.
-
Jangka Panjang atau penjadwal pekerjaan: Ini membawa proses baru ke ‘Status Siap’. Ini mengontrol Derajat Multi-pemrograman , yaitu, jumlah proses yang ada dalam keadaan siap pada setiap titik waktu. Penting agar penjadwal jangka panjang membuat pilihan yang cermat dari proses IO dan CPU terikat. Tugas terikat IO yang menggunakan sebagian besar waktunya dalam operasi masukan dan keluaran sementara proses terikat CPU yang menghabiskan waktunya di CPU. Penjadwal pekerjaan meningkatkan efisiensi dengan menjaga keseimbangan di antara keduanya.
-
Jangka pendek atau penjadwal CPU: Bertanggung jawab untuk memilih satu proses dari status siap untuk menjadwalkannya pada status berjalan. Catatan: Penjadwal jangka pendek hanya memilih proses untuk menjadwalkannya tidak memuat proses saat berjalan. Di sinilah semua algoritma penjadwalan digunakan. Penjadwal CPU bertanggung jawab untuk memastikan tidak ada kelaparan karena proses waktu burst yang tinggi. Dispatcher bertanggung jawab untuk memuat proses yang dipilih oleh Penjadwal jangka pendek pada CPU (Ready to Running State) Pengalihan konteks dilakukan hanya oleh dispatcher. Petugas operator melakukan hal berikut: Mengganti konteks. Beralih ke mode pengguna. Melompat ke lokasi yang tepat di program yang baru dimuat.
-
Penjadwal jangka menengah: Bertanggung jawab untuk menangguhkan dan melanjutkan proses. Ini terutama melakukan swapping (memindahkan proses dari memori utama ke disk dan sebaliknya). Swapping mungkin diperlukan untuk meningkatkan campuran proses atau karena perubahan dalam kebutuhan memori telah overcommitted memori yang tersedia, membutuhkan memori untuk dibebaskan. Hal ini membantu dalam menjaga keseimbangan sempurna antara ikatan I / O dan ikatan CPU. Ini mengurangi tingkat multiprogramming.
-
-
ID Proses: Pengenal unik yang diberikan oleh sistem operasi
-
Status Proses: Dapat siap, berjalan, dll.
-
Register CPU: Seperti Penghitung Program (register CPU harus disimpan dan dipulihkan saat proses ditukar masuk dan keluar dari CPU)
-
Informasi akun
-
Informasi status I / O: Misalnya, perangkat yang dialokasikan untuk proses, membuka file, dll
-
Informasi penjadwalan CPU: Misalnya, Prioritas (Proses berbeda mungkin memiliki prioritas yang berbeda, misalnya proses yang singkat dapat diberi prioritas rendah dalam penjadwalan pertama pekerjaan terpendek)
-
-
Mode terjadi ketika tingkat hak istimewa CPU diubah, misalnya ketika panggilan sistem dibuat atau terjadi kesalahan. Kernel bekerja dalam mode yang lebih istimewa daripada tugas pengguna standar. Jika proses pengguna ingin mengakses hal-hal yang hanya dapat diakses oleh kernel, peralihan mode harus terjadi. Proses yang sedang dijalankan tidak perlu diubah selama peralihan mode. Sakelar mode biasanya terjadi agar sakelar konteks proses terjadi. Hanya kernel yang dapat menyebabkan peralihan konteks.
• Memory-mapped file I/O allows file I/O to be treated as routine memory access by mapping a disk block to a page in memory • A file is initially read using demand paging. A page-sized portion of the file is read from the file system into a physical page. Subsequent reads/writes to/from the file are treated as ordinary memory accesses. • Simplifies file access by treating file I/O through memory rather than read()or write() system calls • Also allows several processes to map the same file allowing the pages in memory to be shared
Jika satu proses terlalu besar untuk memori, tidak ada yang bisa dilakukan OS. Proses itu disebut Thrash. Jika masalah muncul karena penjumlahan dari beberapa proses: Cari tahu berapa banyak memori yang dibutuhkan setiap proses untuk mencegah thrashing. Ini disebut working set. Hanya izinkan beberapa proses untuk dieksekusi dalam satu waktu, sehingga set kerjanya sesuai dengan memori.
-
Page Fault
Jika halaman yang direferensikan tidak ada di memori utama maka akan terjadi miss dan konsepnya disebut Page miss atau page fault. CPU harus mengakses halaman yang terlewat dari memori sekunder. Jika jumlah kesalahan halaman sangat tinggi maka waktu akses efektif sistem akan menjadi sangat tinggi.
Menurut konsep Virtual Memory, untuk menjalankan beberapa proses, hanya sebagian dari proses yang perlu ada di memori utama yang berarti hanya beberapa halaman yang hanya akan ada di memori utama setiap saat.
Namun, memutuskan, halaman mana yang perlu disimpan di memori utama dan mana yang perlu disimpan di memori sekunder, akan sulit karena kami tidak dapat mengatakan sebelumnya bahwa suatu proses akan memerlukan halaman tertentu pada waktu tertentu.
Oleh karena itu, untuk mengatasi masalah tersebut, maka diperkenalkan konsep yang disebut Demand Paging. Ini menyarankan untuk menyimpan semua halaman bingkai di memori sekunder sampai diperlukan. Dengan kata lain, dikatakan bahwa jangan memuat halaman apapun di memori utama sampai dibutuhkan.