Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

TOPIK 6 SISTEM OPERASI

1911521005

Kintan Puti Alami

1. A CPU-scheduling algorithm determines an order for the execution of its scheduled


processes. Given n processes to be scheduled on one processor, how many different
schedules are possible? Give a formula in terms of n
Jumlah total schedule yang mungkin dijalankan adalah n!

2. Explain the difference between preemptive and nonpreemptive scheduling


Keputusan penjadwalan CPU dapat terjadi dalam 4 kondisi berikut :
 Ketika suatu proses beralih dari status running ke status waiting.
 Saat proses beralih dari status running ke status ready.
 Ketika suatu proses beralih dari status waiting ke status ready.
 Saat suatu proses berakhir
Ketika penjadwalan hanya terjadi dalam keadaann 1 dan 4, maka skema penjadwalan adalah non-
preemptive atau kooperatif jika tidak maka bersifat preemptive

3. Suppose that the following processes arrive for execution at the times indicated. Each
process will run for the amount of time listed. In answering the questions, use
nonpreemptive scheduling, and base all decisions on the information you have at the time
the decision must be made.

Process Arrival Time Burst Time


P1 0.0 8
P2 0.4 4
P3 1.0 1

a. What is the average turnaround time for these processes with the
FCFS scheduling algorithm?
b. What is the average turnaround time for these processes with the SJF scheduling
algorithm?
c. The SJF algorithm is supposed to improve performance, but notice that we chose to run
process P1 at time 0 because we did not know that two shorter processes would arrive
soon. Compute what the average turnaround time will be if the CPU is left idle for the
first 1 unit and then SJF scheduling is used. Remember that processes P1 and P2 are
waiting during this idle time, so their waiting time may increase. This algorithm could
be called future knowledge scheduling.

1. 10.53
2. 9.53
3. 6.86
4. Consider the following set of processes, with the length of the CPU burst given in
milliseconds:

Process Burst Time Priority

The processes are assumed to have arrived in the order P1, P2 , P3 , P4 , P5, all at time 0.
a. Draw four Gantt charts that illustrate the execution of these processes using the following
scheduling algorithms: FCFS, SJF, nonpreemptive priority (a larger priority number
implies a higher priority), and RR (quantum = 2).
b. What is the turnaround time of each process for each of the scheduling algorithms in part
a?
c. What is the waiting time of each process for each of these scheduling algorithms?
d. Which of the algorithms results in the minimum average waiting time (over all processes)?

a. Four Gantt chart


b. Turnaround time
FCFS SJF Priority RR
P1 2 3 15 2
P2 3 1 20 3
P3 11 20 8 20
P4 15 7 19 13
P5 20 12 13 18
c. Waiting time
FCFS SJF Priority RR
P1 0 1 13 0
P2 2 0 19 2
P3 3 12 0 12
P4 11 3 15 9
P5 15 7 8 13

d. SJF memiliki waktu tersingkat

5. The following processes are being scheduled using a preemptive, roundrobin scheduling
algorithm. Each process is assigned a numerical priority, with a higher number
indicating a higher relative priority. In addition to the processes listed below, the system
also has an idle task (which consumes no CPU resources and is identified as Pidle). This
task has priority 0 and is scheduled whenever the system has no other available
processes to run. The length of a time quantum is 10 units. If a process is preempted by
a higher-priority process, the preempted process is placed at the end of the queue.

a. Show the scheduling order of the processes using a Gantt chart.


b. What is the turnaround time for each process?
c. What is the waiting time for each process?
d. What is the CPU utilization rate?

a. The Gantt Chart

b. P1: 20-0 – 20
P2: 80-25 = 55
P3: 90 - 30 = 60
P4: 75-60 = 15
P5:120-100 = 20
P6: 115-105 = 1

c. P1: 0
P2: 40
P3: 35
P4: 0
P5: 10
P6: 0

d. 105/120 = 87.5 %
6. Dynamically loadable kernel modules give flexibility when drivers are added to a
system, but do they have disadvantages too? Under what circumstances would a kernel
be compiled into a single binary file, and when would it be better to keep it split into
modules? Explain your answer.
Ada dua kelemahan utama dengan penggunaan modul. Yang pertama adalah ukuran:
manajemen modul menggunakan memori kernel yang tidak dapat dimuat halaman, dan kernel
dasar dengan sejumlah modul yang dimuat akan menggunakan lebih banyak memori daripada
kernel yang setara dengan driver yang dikompilasi ke dalam imej kernel itu sendiri. Ini bisa
menjadi masalah yang sangat signifikan pada mesin dengan memori fisik terbatas.
Kelemahan kedua adalah modul dapat meningkatkan kompleksitas proses bootstrap kernel.
Sulit untuk memuat satu set modul dari disk jika driver perlu mengakses disk itu sendiri,
modul yang perlu dimuat. Akibatnya, mengelola bootstrap kernel dengan modul memerlukan
pekerjaan ekstra dari pihak administrator: modul yang diperlukan untuk bootstrap harus
ditempatkan ke dalam image ramdisk yang dimuat di samping image kernel awal saat sistem
diinisialisasi.
Dalam kasus tertentu, lebih baik menggunakan kernel modular, dan dalam kasus lain lebih
baik menggunakan kernel dengan driver perangkatnya yang telah ditautkan sebelumnya. Di
mana meminimalkan ukuran kernel penting, pilihan akan bergantung pada seberapa sering
berbagai driver perangkat digunakan. Jika mereka terus-menerus digunakan, maka modul
tidak cocok. Ini terutama berlaku di mana driver diperlukan untuk proses boot itu sendiri. Di
sisi lain, jika beberapa driver tidak selalu dibutuhkan, maka mekanisme modul
memungkinkan driver tersebut untuk dimuat dan dibongkar sesuai permintaan, berpotensi
menawarkan penghematan bersih dalam memori fisik.
Jika sebuah kernel akan dibangun yang harus dapat digunakan pada berbagai macam mesin
yang sangat berbeda, maka membangunnya dengan modul jelas lebih disukai daripada
menggunakan satu kernel dengan lusinan driver yang tidak perlu yang memakan memori. Hal
ini terutama terjadi pada kernel yang didistribusikan secara komersial, di mana mendukung
berbagai perangkat keras dengan cara yang sesederhana mungkin merupakan prioritas.
Namun, jika kernel dibuat untuk satu mesin yang konfigurasinya telah diketahui sebelumnya,
maka kompilasi dan penggunaan modul mungkin merupakan kerumitan yang tidak perlu.
Dalam kasus seperti ini, penggunaan modul mungkin tergantung selera.
7. Multithreading is a commonly used programming technique. Describe three different
ways to implement threads, and compare these three methods with the Linux clone()
mechanism. When might using each alternative mechanism be better or worse than
using clones?
Implementasi thread secara luas dapat diklasifikasikan menjadi dua kelompok: thread
berbasis kernel dan user-thread mode. Paket user-thread mode bergantung pada beberapa
dukungan kernel — mereka mungkin memerlukan fasilitas interupsi pengatur waktu,
misalnya — tetapi penjadwalan antar thread tidak dilakukan oleh kernel tetapi oleh beberapa
pustaka kode mode pengguna. Beberapa thread dalam implementasi seperti itu muncul ke
sistem operasi sebagai konteks eksekusi tunggal. Saat proses multithread sedang berjalan, ia
memutuskan sendiri thread mana yang akan dieksekusi, menggunakan lompatan non-lokal
untuk beralih di antara thread sesuai dengan aturan penjadwalan preemptive atau non-
preemptive sendiri.
Alternatifnya, kernel dapat menyediakan dukungan untuk thread itu sendiri. Dalam hal ini,
thread dapat diimplementasikan sebagai proses terpisah yang kebetulan berbagi ruang alamat
umum lengkap atau sebagian, atau dapat diterapkan sebagai konteks eksekusi yang terpisah
dalam satu proses. Bagaimanapun cara thread diatur, mereka muncul sebagai konteks
eksekusi yang sepenuhnya independen untuk aplikasi.
Implementasi hybrid juga dimungkinkan, di mana sejumlah besar thread tersedia untuk
aplikasi menggunakan jumlah thread kernel yang lebih kecil. Thread pengguna yang dapat
dijalankan dijalankan oleh thread kernel pertama yang tersedia.
Di Linux, thread diimplementasikan di dalam kernel dengan mekanisme klon yang membuat
proses baru dalam ruang alamat virtual yang sama dengan proses induk. Tidak seperti
beberapa paket thread berbasis kernel, kernel Linux tidak membuat perbedaan apa pun antara
thread dan proses: thread hanyalah proses yang tidak membuat ruang alamat virtual baru
ketika diinisialisasi.
Keuntungan utama mengimplementasikan thread di kernel daripada di pustaka mode
pengguna adalah:
 sistem berulir kernel dapat memanfaatkan banyak prosesor jika tersedia; dan
 jika satu thread memblokir dalam rutinitas layanan kernel (misalnya, panggilan
sistem atau kesalahan halaman), thread lain masih bisa dijalankan.
Keuntungan yang lebih kecil adalah kemampuan untuk menetapkan atribut keamanan yang
berbeda ke setiap thread.
Penerapan mode pengguna tidak memiliki keunggulan ini. Karena implementasi semacam itu
berjalan sepenuhnya dalam satu konteks eksekusi kernel, hanya satu thread yang dapat
dijalankan sekaligus, meskipun beberapa CPU tersedia. Untuk alasan yang sama, jika satu
thread memasuki panggilan sistem, tidak ada thread lain yang dapat berjalan hingga
panggilan sistem tersebut selesai. Akibatnya, satu thread yang melakukan pembacaan disk
pemblokiran akan menahan setiap thread dalam aplikasi. Namun, implementasi mode
pengguna memiliki kelebihannya sendiri. Yang paling jelas adalah kinerja: menjalankan
penjadwal kernel sendiri untuk beralih di antara thread melibatkan memasukkan domain
perlindungan baru saat CPU beralih ke mode kernel, sedangkan peralihan antar thread dalam
mode pengguna dapat dicapai hanya dengan menyimpan dan memulihkan register CPU
utama. Thread mode pengguna juga dapat menggunakan lebih sedikit memori sistem:
sebagian besar sistem UNIX akan mencadangkan setidaknya satu halaman penuh untuk
tumpukan kernel untuk setiap thread kernel, dan tumpukan ini mungkin tidak dapat halaman.
Pendekatan hybrid, menerapkan beberapa thread pengguna pada sejumlah kecil thread kernel,
memungkinkan keseimbangan antara pengorbanan ini dicapai. Thread kernel akan
memungkinkan beberapa thread untuk memblokir panggilan kernel sekaligus dan akan
mengizinkan berjalan pada beberapa CPU, dan peralihan thread mode pengguna dapat terjadi
dalam setiap thread kernel untuk melakukan threading ringan tanpa overhead karena memiliki
terlalu banyak thread kernel. Kelemahan dari pendekatan ini adalah kompleksitas:
memberikan kontrol atas kompromi mempersulit antarmuka pengguna perpustakaan thread.

8. The Linux kernel does not allow paging out of kernel memory. What effect does this
restriction have on the kernel’s design? What are two advantages and two
disadvantages of this design decision?
Dampak utama dari pelarangan paging dari memori kernel di Linux adalah bahwa kernel
yang tidak dapat didahulukan dipertahankan. Setiap proses yang mengalami kesalahan
halaman, baik dalam kernel atau mode pengguna, berisiko dijadwal ulang sementara data
yang diperlukan dimasukkan dari disk. Karena kernel dapat diandalkan untuk tidak
menjadwal ulang selama akses ke struktur data utamanya, persyaratan penguncian untuk
melindungi integritas struktur data tersebut sangat disederhanakan. Meskipun kesederhanaan
desain merupakan keuntungan tersendiri, namun juga memberikan keuntungan kinerja yang
penting pada mesin uniprocessor karena tidak perlu melakukan penguncian tambahan pada
sebagian besar struktur data internal.
Namun, ada sejumlah kelemahan dari kurangnya memori kernel yang dapat di-halaman.
Pertama-tama, ini memberlakukan batasan pada jumlah memori yang dapat digunakan kernel.
Tidak masuk akal untuk menyimpan struktur data yang sangat besar dalam memori non-
pageable, karena itu mewakili memori fisik yang sama sekali tidak dapat digunakan untuk hal
lain. Hal ini memiliki dua dampak: pertama-tama, kernel harus memangkas kembali banyak
struktur data internalnya secara manual, alih-alih dapat mengandalkan mekanisme memori
virtual tunggal untuk menjaga penggunaan memori fisik tetap terkendali. Kedua, ini
membuatnya tidak mungkin untuk mengimplementasikan fitur-fitur tertentu yang
membutuhkan memori virtual dalam jumlah besar di kernel, seperti sistem file / tmp (sistem
file berbasis memori virtual cepat yang ditemukan di beberapa sistem UNIX).
Perhatikan bahwa kerumitan mengelola kesalahan halaman saat menjalankan kode kernel
tidak menjadi masalah di sini. Kode kernel Linux sudah dapat menangani kesalahan halaman:
ia harus dapat menangani panggilan sistem yang argumennya merujuk ke memori pengguna
yang mungkin dialihkan ke disk.

9. Compare the use of networking sockets with the use of shared memory as a mechanism
for communicating data between processes on a single computer. What are the
advantages of each method? When might each be preferred?
Menggunakan soket jaringan daripada memori bersama untuk komunikasi lokal memiliki
sejumlah keuntungan. Keuntungan utama adalah bahwa antarmuka pemrograman soket
memiliki serangkaian fitur sinkronisasi yang kaya. Suatu proses dapat dengan mudah
menentukan kapan data baru telah tiba di koneksi soket, berapa banyak data yang ada, dan
siapa yang mengirimnya. Proses dapat memblokir hingga data baru tiba di soket, atau mereka
dapat meminta sinyal dikirim saat data tiba. Soket juga mengatur koneksi terpisah. Proses
dengan soket terbuka untuk menerima dapat menerima beberapa koneksi ke soket itu dan
akan diberi tahu ketika proses baru mencoba untuk terhubung atau ketika proses lama
memutuskan koneksi mereka.
Memori bersama tidak menawarkan fitur ini. Tidak ada cara bagi suatu proses untuk
menentukan apakah proses lain telah mengirimkan atau mengubah data dalam memori
bersama selain dengan melihat isi memori itu. Tidak mungkin suatu proses memblokir dan
meminta bangun saat memori bersama dikirim, dan tidak ada mekanisme standar untuk
proses lain untuk membuat tautan memori bersama ke proses yang ada.
Namun, memori bersama memiliki keuntungan yang jauh lebih cepat daripada komunikasi
soket dalam banyak kasus. Ketika data dikirim melalui soket, biasanya data disalin dari
memori ke memori beberapa kali. Pembaruan memori bersama tidak memerlukan salinan
data: jika satu proses memperbarui struktur data di memori bersama, pembaruan itu segera
terlihat oleh semua proses lain yang berbagi memori itu. Mengirim atau menerima data
melalui soket mengharuskan panggilan layanan sistem kernel dibuat untuk memulai transfer,
tetapi komunikasi memori bersama dapat dilakukan sepenuhnya dalam mode pengguna tanpa
memerlukan transfer kontrol.
Komunikasi soket biasanya lebih disukai ketika manajemen koneksi penting atau ketika ada
persyaratan untuk menyinkronkan pengirim dan penerima. Misalnya, proses server biasanya
akan membuat soket pendengaran yang dapat disambungkan klien ketika mereka ingin
menggunakan layanan itu. Setelah soket dibuat, permintaan individu juga dikirim
menggunakan soket, sehingga server dapat dengan mudah menentukan kapan permintaan
baru datang dan dari siapa datangnya.
Namun, dalam beberapa kasus, memori bersama lebih disukai. Memori bersama seringkali
merupakan solusi yang lebih baik ketika sejumlah besar data akan ditransfer atau ketika dua
proses membutuhkan akses acak ke kumpulan data umum yang besar. Dalam kasus ini,
bagaimanapun, proses komunikasi mungkin masih membutuhkan mekanisme tambahan
selain memori bersama untuk mencapai sinkronisasi di antara mereka sendiri. Sistem X
Window, lingkungan tampilan grafis untuk UNIX, adalah contoh yang baik untuk ini:
sebagian besar permintaan grafis dikirim melalui soket, tetapi memori bersama ditawarkan
sebagai transportasi tambahan dalam kasus khusus di mana bitmap besar akan ditampilkan di
layar. Dalam hal ini, permintaan untuk menampilkan bitmap akan tetap dikirim melalui soket,
tetapi data massal dari bitmap itu sendiri akan dikirim melalui memori bersama.

10. What are the advantages and disadvantages of writing an operating system in a high-
level language, such as C?
Kelebihan : Kode dapat ditulis dengan lebih cepat dan lebih ringkas serta lebih mudah
dipahami dan di-debug. Selain itu, perbaikan dalam kompilator kode yang dihasilkan untuk
seluruh system operasi denga kompilasi ulang yang sederhana. Sistem operasi jauh lebih
mudah untuk di-porting untuk dipindahin ke beberapa hardware lain, jika ditulis dalam
bahasa tingkat tinggi.

Kekurangan :
1) OS membutuhkan akses tingkat rendah ke memori dan hardware melakukan
pekerjaan kotor didalamnya. Jenis akses ini umumnya dianggap tidak aman untuk
program tingkat aplikasi, sehingga banyak bahasa tingkat tinggi tidak
mengizinkannya
2) OS perlu dijalanku tanpa adanya software pendukung, seperti interpreter, ini
membuatnya sangat sulit untuk menulis OS dalam bahasa yang tidak dapat dengan
mudah dikompilasi menjadi instruksi asli

You might also like