Jawaban Problems 3.1 & 3.2, 4.1 & 4.2

3.1 Proses

// <![CDATA[/ Definisi proses Secara tidak langsung, proses adalah program yang sedang dieksekusi. Menurut SilberSchatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut text section . Proses juga mencakup program counter , yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi (seperti parameter method, alamat return dan variabel lokal), dan sebuah data section yang menyimpan variabel global. Sama halnya dengan SilberSchatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mecakup program counter , register, dan variabel di dalamnya. termasuk
• Suatu program dalam pelaksanaan
• Sebuah contoh dari program yang berjalan pada komputer
• Entitas yang dapat ditugaskan dan dijalankan pada prosesor
• Sebuah unit aktivitas ditandai dengan pelaksanaan suatu urutan instruksi,keadaan saat ini, dan terkait set sumber daya sistem Juga dapat memikirkan suatu proses sebagai entitas yang terdiri dari sejumlah elemen. Dua unsur penting dari sebuah proses adalah program kode (yang dapat dipergunakan bersama dengan proses lain yang melaksanakan program yang sama) dan satu set data yang terkait dengan kode itu. Mari kita anggap bahwa prosesor mulai menjalankan program ini, sementara melaksanakan program ini, proses ini dapat ditandai dengan unik
jumlah elemen, termasuk yang berikut:
• Identifier: Sebuah pengenal unik yang diasosiasikan dengan proses ini, untuk membedakannya
dari semua proses lainnya.
• State: Jika proses saat ini melaksanakan, itu adalah dalam keadaan berjalan.
• Prioritas: Prioritas tingkat relatif terhadap proses lainnya.
• Program counter: Alamat dari instruksi berikutnya dalam program yang akan dieksekusi.
• Memori pointer: termasuk pointer ke kode program dan data yang terkait dengan proses ini, ditambah blok memori yang digunakan bersama proses lain.
• Konteks data: Ini adalah data yang ada dalam register dalam prosesor sedangkan proses yang mengeksekusi.
• I / O status informasi: Termasuk beredar I / O, I / O perangkat (misalnya, tape drive) ditugaskan untuk proses ini, sebuah daftar file yang digunakan oleh proses, dan sebagainya.

• Informasi Akuntansi: Mei meliputi jumlah waktu prosesor dan jam waktu yang digunakan, batas waktu, nomor rekening, dan sebagainya.

Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian text-section adalah sama, data section -nya bervariasi.

Informasi dalam daftar sebelumnya disimpan dalam struktur data, biasanya disebut proses kontrol blok, yang dibuat dan dikelola oleh OS. Titik signifikan tentang blok kontrol proses yang cukup mengandung informasi sehingga ada kemungkinan untuk mengganggu proses berjalan dan kemudian melanjutkan eksekusi seakan gangguan itu tidak terjadi. Blok kontrol proses merupakan kunci alat yang memungkinkan OS untuk mendukung proses ganda dan untuk multiprocessing. Ketika sebuah proses terputus, nilai saat ini dari program counter dan register prosesor (data konteks) yang disimpan dalam bidang yang sesuai blok kontrol proses yang sesuai, dan keadaan proses ini berubah menjadi beberapa nilai lain, seperti diblokir atau siap (dijelaskan kemudian). OS sekarang bebas untuk menaruh beberapa proses lainnya dalam keadaan berjalan. Konter konteks program dan data untuk proses ini dimuat ke register prosesor dan proses ini sekarang mulai mengeksekusi. Dengan demikian, kita dapat mengatakan bahwa proses yang terdiri dari kode program dan data yang terkait ditambah blok proses kontrol. Untuk komputer-prosesor tunggal, pada waktu tertentu, pada paling satu proses adalah melaksanakan dan proses yang ada di negara berjalan.

Gambar 3-2. Process Control Block

3.2 Status Proses

Quantcast Seperti hanya dibahas, untuk program yang akan dieksekusi, proses, atau tugas, diciptakan untuk itu program. Dari prosesor sudut pandang, itu menjalankan instruksi dari repertoar dalam beberapa urutan ditentukan oleh nilai-nilai perubahan dalam program counter register. Seiring waktu, program counter bisa merujuk ke kode dalam program-program berbeda yang adalah bagian dari proses yang berbeda. Dari sudut pandang program individu, yang eksekusi melibatkan urutan instruksi dalam program itu. Kita bisa mencirikan perilaku proses individual dengan membuat daftar urutan instruksi yang melaksanakan proses itu. Seperti sebuah daftar disebut sebagai jejak proses. Kita bisa mencirikan perilaku prosesor dengan menunjukkan bagaimana jejak-jejak dari berbagai proses disisipkan. Kami mengasumsikan bahwa OS hanya memungkinkan proses untuk melanjutkan eksekusi untuk maksimal enam siklus instruksi, setelah itu terganggu; ini mencegah setiap proses tunggal dari waktu memonopoli prosesor, enam pertama instruksi dari proses yang dijalankan, diikuti dengan time-out dan pelaksanaan beberapa kode di operator, yang melaksanakan enam instruksi sebelum. Didalam Status Proses ada dua macam model yaitu model proses dua status dan model proses lima status Model Proses Dua Status Proses dapat berada pada salah satu dari dua status – Berjalan (running) berarti program sedang melaksanakan perintah dan sedang dieksekusi serta proses exit – Not-running berarti program tidak dalam proses eksekusi melainkan persiapan akan dieksekusi Model Proses Lima Status Model proses lima status diantaranya adalah * New adalah Proses sedang dikerjakan/dibuat. * Running adalah Instruksi sednag dikerjakan. * Waiting adalah Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/O atau penerimaan sebuah tanda/signal). * Ready adalah Proses sedang menunggu untuk ditugaskan pada sebuah prosesor. * Terminated adalah Proses telah selsesai melaksanakan tugasnya/mengeksekusi. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada gambar dibawah ini : Gambar diatas menunjukkan kemungkinan terjadinya proses transisi diantaranya sebagai berikut: * Null -New : Sebuah proses baru yang dibuat untuk menjalankan sebuah event terjadi program * New -Ready : proses akan berpindah ke tempat yang baru siap ketika sudah siap untuk melakukan proses tambahan. Kebanyakan sistem menetapkan beberapa batas berdasarkan jumlah proses yang ada atau jumlah memori virtual berkomitmen untuk proses yang ada. * Ready – Running : Ketika waktu untuk memilih menjalankan proses OS memilih salah satu proses di siap state. Pekerjaan ini yang menjadwal atau memberangkatkan. * Running -Exit : proses yang sedang berjalan diakhiri oleh OS jika proses menunjukkan bahwa ia telah selesai atau jika aborts. * Running – Ready :alasan yang paling umum untuk transisi ini adalah proses yang berjalan telah mencapai batas maksimum yang diijinkan untuk terganggu waktu pelaksanaan hampir semua sistem operasi multiprogramming menentukan jenis waktu yang tepat. * Running -Blocked : Sebuah proses diletakkan di Diblokir jika permintaan sesuatu yang harus menunggu. Permintaan untuk OS biasanya dalam bentuk sistem layanan panggilan yaitu panggilan dari program untuk menjalankan prosedur yang merupakan bagian dari sistem operasi kode. * Blocked -Ready : Sebuah proses blokir tersebut akan dipindahkan yang Siap saat acara yang telah menunggu terjadi. * Ready -Exit : Untuk jelasnya, transisi ini tidak akan ditampilkan pada diagram . Dalam beberapa sistem induk dapat proses setiap saat Juga jika induk terminates dihentikan maka semua proses yang terkait dengan induk tersebut akan dihentikan. * Blocked – Exit : Komentar di bawah item sebelumnya berlaku.

4.1 Proses dan Threads

// <![CDATA[/ Proses

Proses memiliki dua karakteristik namun kedua karakteristik dilakukan secara independen oleh sistem operasi:

  • Resource ownership (kepemilikan sumber daya) – proses mempunyai ruang alamat virtual untuk menangani image proses yang didefinisikan dalam PCB
  • Scheduling-execution (penjadwalan-eksekusi) – Mengikuti suatu path eksekusi (trace), ada pergatian dari satu proses ke lainnya

Unit dari kepemilikan sumber daya diacu sebagai proses atau task

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>Thread

Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter , register set , dan stack . Sebuah Thread berbagi code section , data section , dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process . Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu

Keuntungan dari program yang multithrading pada suatu proses dapat dipisah menjadi empat kategori :

  1. Responsi : Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading , sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
  2. Berbagi sumber daya : thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
  3. Ekonomi : dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.
  4. Utilisasi arsitektur multiprocessor : Keuntungan dari multithreading bisa sangat meningkat pada arsitektur multiprocessor , dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu( satu -satuan waktu pada CPU biasa disebut time slice atau quantum ).

User dan Kernel Thread

User thread

User thread didukung diatas kernel dan diimplementasi oleh thread library pada user level. Library meneyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads.

Kernel thread

Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajeman thread dilakukan oleh kernel pada kernel space . Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor , kernel bisa menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.

Model Multithreading
Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk kernel bersangkutan dapat bejalan secara paralel pada multiprocessor. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel menjalankan therads didukung dan diatur secara langusng oleh sistem operasi.
Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:
Model Many to One: Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model

Model One to One: Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini ialah setiap pembuatan thread
pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.

Model Many To Many: Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer

untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.

Cancellation

Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.

Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :

  1. Asynchronous cancellation : suatu thread seketika itu juga memberhentikan target thread.
  2. Defered cancellation : target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.

Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.

Alternatifnya adalah dengan menggunakan Deffered cancellation . Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points .

Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation .

Penanganan Sinyal

Sebuah sinyal digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal bisa diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal.

Semua sinyal( asynchronous dan synchronous ) mengikuti pola yang sama :

  1. Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.
  2. Sinyal yang dimunculkan tersebut dikirim ke proses.
  3. Sesudah dikirim, sinyal tersebut harus ditangani.

Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard( alt-f4 ) maka sinyal asynchronous dikirim ke proses tersebut. Jadi ketika suatu sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalan maka proses tersebut menerima sinyal tersebut secara asynchronous .

Setiap sinyal bisa ditangani oleh salah satu dari 2 penerima sinyal :

  1. Penerima sinyal yang merupakan set awal dari sistem operasi.
  2. Penerima sinyal yang didefinisikan sendiri ole user.

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengrimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang multithreading , karena sebuah proses bisa memiliki beberapa thread.

Secara umum ada 4 pilihan kemana sinyal harus dikirim :

  1. Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.
  2. Mengirimkan sinyal ke setiap thread pada proses tersebut.
  3. Mengirimkan sinyal ke thread tertentu dalam proses.
  4. 4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.

Cara untuk mengirimkan sebuah sinyal tergantung dari tipe sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses ( contoh : alt-f4 ) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengijinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls( APCs ) . Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima notifikasi peristiwa tertentu.

Thread Pools

Pada web server yang multithreading ada 2 masalah yang timbul :

  1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.
  2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools , dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.

Keuntungan thread pool :

  1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
  2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .

Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent .

Hal-Hal Lainnya dari Thread

Pthreads

Pthreads merujuk kepada POSIX standard( IEEE 1003.1 c ) mendefinisikan sebuah API untuk pembuatan thread dan sinkronisasi. Pthreads adalah spesifikasi untuk thread dan bukan merupakan suatu implementasi. Desainer sistem operasi boleh mengimplementasikan spesifikasi tersebut dalam berbagai cara yang mereka inginkan. Secara umum Libraries yang mengimplementasikan Pthreads dilarang pada sistem berbasis UNIX seperti Solaris 2. Sistem operasi Windows secara umum belum mendukung Pthreads, walaupun versi shareware -nya sudah ada di domain publik.

4.2 Symmetric Multiprocessing (SMP)


SMP Arsitektur

Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung perangkat keras symmetric multiprocessor (SMP). Proses mau pun thread yang berbeda dapat dieksekusi secara paralel dengan processor yang berbeda. Tapi bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasi yang tidak dapat di-preemptive dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satu processor yang dapat dieksekusi dengan kode mode kernel pada suatu saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan aturan ini. Spinlock ini tidak memunculkan permasalahan untuk pekerjaan yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaan yang melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat mengkhawatirkan.

Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel spinlock tunggal menjadi banyak kunci yang masing-masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini, pengembangan kernel yang terbaru mengizinkan banyak processor untuk dieksekusi oleh kode mode kernel secara bersamaan.

Hal ini berguna untuk melihat di mana SMP arsitektur muat ke dalam kategori keseluruhan paralel prosesor. Sebuah taksonomi yang menyoroti sistem prosesor paralel pertama kali diperkenalkan oleh Flynn [FLYN72] masih merupakan cara paling umum mengkategorikan sistem tersebut. Flynn
diusulkan dengan kategori sebagai berikut sistem komputer:
instruksi tunggal data tunggal (SISD) stream: Sebuah prosesor tunggal menjalankan sebuah aliran instruksi untuk beroperasi pada data yang tersimpan dalam memori tunggal.

Single instruksi multiple data (SIMD) stream: Sebuah mesin tunggal instruksi mengontrol eksekusi simultan dari sejumlah elemen pengolahan pada dasar berbaris. Setiap elemen pemrosesan memiliki memori data yang terkait, sehingga bahwa setiap instruksi dieksekusi pada satu set data yang berbeda oleh berbagai prosesor. Array prosesor vektor dan termasuk dalam kategori ini.
Beberapa instruksi data tunggal (MISD) stream: Sebuah urutan data ditransmisikan ke satu set prosesor, masing-masing melaksanakan instruksi yang berbeda urutan. Struktur ini tidak pernah dilaksanakan.
Beberapa instruksi multiple data (MIMD) stream: Satu set prosesor secara simultan mengeksekusi urutan instruksi yang berbeda pada set data yang berbeda.

Organisasi SMP

Ada multiprosesor, masing-masing berisi kontrol unit sendiri, unit aritmatika-logika, dan register. Setiap prosesor memiliki akses ke memori utama bersama dan perangkat I / O melalui beberapa bentuk mekanisme interkoneksi; bus bersama adalah fasilitas umum. Itu prosesor dapat berkomunikasi satu sama lain melalui memori (pesan dan status informasi yang tersisa dalam ruang alamat bersama-sama). Hal ini juga dapat dibuat untuk prosesor untuk pertukaran sinyal secara langsung. memori ini sering diselenggarakan simultan sehingga akses ganda untuk blok terpisah dari memori yang mungkin. Pada komputer modern, prosesor umumnya memiliki setidaknya satu tingkat cache memori yang swasta untuk prosesor. Penggunaan cache ini memperkenalkan beberapa pertimbangan desain baru. Karena setiap cache lokal berisi gambar sebagian utama memori, jika sebuah kata berubah dalam satu cache, itu menurut pikiran bisa membatalkan kata dalam cache lain. Untuk mencegah hal ini, prosesor lain harus diberitahu bahwa pembaruan telah terjadi. Masalah ini dikenal sebagai masalah koherensi cache dan biasanya dibahas dalam perangkat keras daripada oleh OS.7

Multiprosesor Sistem Operasi Pertimbangan Desain

Sebuah sistem operasi SMP mengelola sumber daya prosesor dan komputer lainnya sehingga pengguna dapat melihat sistem dengan cara yang sama sebagai sistem uniprocessor multiprogramming. Seorang pengguna dapat membangun aplikasi yang menggunakan beberapa proses atau beberapa benang dalam proses tanpa memperhatikan apakah prosesor tunggal atau beberapa prosesor akan tersedia. Jadi multiprosesor OS harus menyediakan semua fungsi sistem multiprogramming ditambah fitur-fitur tambahan untuk mengakomodasi beberapa prosesor. Isu-isu kunci perancangan meliputi:
simultan bersamaan proses atau thread: Kernel rutinitas perlu reentrant untuk memungkinkan beberapa prosesor untuk menjalankan kode kernel yang sama simultneously. Dengan prosesor menjalankan beberapa bagian yang sama atau berbeda dari kernel, kernel tabel dan struktur manajemen harus dikelola dengan baik untuk menghindari jalan buntu atau operasi yang tidak valid.
Penjadwalan: Penjadwalan dapat dilakukan oleh prosesor, jadi konflik harus dihindari. Jika kernel-tingkat multithreading digunakan, maka ada kesempatan untuk jadwal beberapa benang dari proses yang sama secara bersamaan pada beberapa prosesor. Multiprosesor penjadwalan diperiksa dalam Bab 10.
Sinkronisasi: Dengan beberapa proses yang aktif memiliki akses yang potensial berkaitan alamat ruang bersama atau bersama I / O sumber daya, perhatian harus diambil untuk memberikan efektif sinkronisasi. Sinkronisasi adalah fasilitas yang saling memaksa pengecualian dan acara pemesanan. Mekanisme yang umum digunakan dalam sinkronisasi multiprosesor sistem operasi adalah kunci, dijelaskan dalam Bab 5.

Manajemen memori: Memori manajemen pada multiprosesor harus berurusan dengan semua masalah yang ditemukan pada komputer uniprocessor dan dibahas dalam Bagian Tiga. Selain itu, perlu OS mengeksploitasi paralelisme perangkat keras yang tersedia, seperti kenangan multiported, untuk mencapai kinerja terbaik. paging ini mekanisme pada prosesor yang berbeda harus dikoordinasikan untuk menegakkan konsistensi ketika beberapa prosesor berbagi halaman atau segmen dan memutuskan pada halaman penggantian.

Keandalan dan toleransi kesalahan: OS harus menyediakan degradasi anggun wajah kegagalan prosesor. Scheduler dan bagian-bagian lain dari OS harus mengakui kehilangan prosesor dan merestrukturisasi manajemen sesuai tabel.
Karena OS multiprocessor masalah desain umumnya melibatkan ekstensi untuk solusi untuk multiprogramming uniprocessor masalah desain, kita tidak memperlakukan multiprosesor sistem operasi terpisah.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: