DISTRIBUTED SYSTEMS Concept and Design – Fifth Edition
George Coulouris
Cambridge University
Jean Dollimore
formerly of Queen Mary, University of London
Tim Kindberg
matter 2 media
Gordon Blair
Lancaster University
Latar Belakang
Bab ini menjelaskan cara middleware didukung oleh fasilitas sistem operasi di node dari sistem terdistribusi. Sistem operasi memfasilitasi enkapsulasi dan perlindungan sumber daya dalam server dan mendukung mekanisme yang diperlukan untuk mengakses sumber daya ini, termasuk komunikasi dan penjadwalan. Tema penting dari bab ini adalah peran dari sistem kernel. Tujuan bab untuk memberikan pembaca pemahaman tentang keuntungan dan kerugian dari membelah fungsi antara domain perlindungan - khususnya, dari pemisahan fungsi antara kernel- dan user-tingkat kode.
Trade-off antara fasilitas kernel-level dan level user Fasilitas dibahas, termasuk ketegangan antara efisiensi dan ketahanan. Bab ini membahas desain dan implementasi pengolahan multi-berulir dan fasilitas komunikasi. Ia melanjutkan dengan mengeksplorasi arsitektur kernel utama yang memiliki telah dirancang dan melihat peran penting virtualisasi yang bermain di operasi sistem arsitektur.
Lapisan Sistem Operasi
Gambar 7.2 Lapisan Sistem Operasi
Pengguna hanya akan puas jika mereka kombinasi middleware-OS memiliki kinerja yang baik. Middleware berjalan pada berbagai kombinasi OS-perangkat keras (platform) pada node sistem terdistribusi. OS berjalan pada node - kernel dan terkait user-level layanan seperti perpustakaan komunikasi - memberikan rasa sendiri dari abstraksi dari sumber daya lokal hardware untuk pengolahan, penyimpanan dan komunikasi. memanfaatkan kombinasi sumber daya lokal untuk menerapkan mekanisme untuk jarak jauh antara obyek atau proses pada node.
Gambar 7.2 Fungsionalitas Inti OS
Gambar 7.2 menunjukkan inti OS fungsi yang kita akan peduli dengan: proses dan eksekusi manajemen, manajemen memori dan komunikasi antara proses pada komputer yang sama (divisi horisontal dalam gambar menunjukkan dependensi). Kernel persediaan banyak fungsi ini - semua itu dalam kasus beberapa sistem operasi.
Komponen inti OS dan tanggung jawab mereka adalah:
Manajer proses: Penciptaan dan operasi pada saat proses. Sebuah proses adalah unit pengelolaan sumber daya, termasuk ruang alamat dan satu eksekusi atau lebih.
Thread manager: Thread penciptaan, sinkronisasi dan penjadwalan. Kegiatan eksekusi schedulable melekat proses dan sepenuhnya dijelaskan dalam Bagian 7.4.
Communication Manager: komunikasi eksekusi antara melekat berbeda proses pada komputer yang sama. Beberapa kernel juga mendukung komunikasi antara eksekusi dalam proses terpencil. Kernel lain telah ada gagasan komputer lain dibangun ke mereka, dan layanan tambahan diperlukan untuk komunikasi eksternal. Bagian 7,5 membahas desain komunikasi.
Memory manager: Manajemen memori fisik dan virtual. Bagian 7.4 dan Bagian 7.5 menggambarkan pemanfaatan teknik manajemen memori untuk efisien menyalin data dan berbagi.
Supervisor: Dispatching interupsi, perangkap system call dan pengecualian lainnya; control unit manajemen memori dan cache perangkat keras; prosesor dan floating-point Unit mendaftar manipulasi. Hal ini dikenal sebagai Hardware Abstraction Layer di Windows. Pembaca disebut Bacon [2002] dan Tanenbaum [2007] untuk lebih lengkap deskripsi aspek tergantung komputer dari kernel.
Perlindungan
Kernel dan Perlindungan. Kernel adalah program yang dibedakan oleh fakta-fakta yang tetap dimuat dari inisialisasi sistem dan kode dijalankan dengan lengkap hak akses untuk sumber daya fisik pada komputer host. Secara khusus, itu bisa mengontrol unit manajemen memori dan mengatur register prosesor sehingga tidak ada yang lain Kode dapat mengakses sumber daya mesin fisik kecuali dengan cara yang dapat diterima.
Kebanyakan prosesor memiliki mode hardware daftar pengaturan yang menentukan apakah instruksi istimewa dapat dijalankan, seperti yang digunakan untuk menentukan tabel perlindungan saat ini bekerja oleh unit manajemen memori. Kernel Proses mengeksekusi dengan prosesor pengawas di mode pengawas (supervisor), meramu kernel bahwa proses lain mengeksekusi di mode pengguna (user).
Kernel juga membentuk ruang alamat untuk melindungi diri dan proses lainnya dari yang akses dari sebuah proses yang menyimpang dan untuk memberikan proses dengan mereka maya diperlukan tata letak memori.
Ruang alamat adalah kumpulan rentang lokasi memori virtual, di masing-masing kombinasi ditentukan hak akses memori berlaku, seperti hanya membaca atau read-write. Sebuah proses tidak dapat mengakses memori luar ruang alamat. Istilah pengguna proses atau proses user-level biasanya digunakan untuk menggambarkan satu yang mengeksekusi di mode pengguna dan memiliki ruang alamat user-level (yaitu, satu dengan akses memori terbatas Hak dibandingkan dengan ruang alamat kernel.
Ketika sebuah proses mengeksekusi kode aplikasi, dijalankan dalam level user yang berbeda ruang alamat untuk aplikasi itu; ketika proses yang sama mengeksekusi kode kernel, itu mengeksekusi di ruang alamat kernel. Proses aman dapat mentransfer dari level user ruang alamat untuk ruang alamat kernel melalui pengecualian seperti interupsi atau system call perangkap - mekanisme method pemanggilan untuk sumber daya yang dikelola oleh kernel. SEBUAH system call perangkap diimplementasikan oleh instruksi TRAP mesin-tingkat, yang menempatkan prosesor ke mode pengawas dan switch ke ruang alamat kernel. Ketika Instruksi TRAP dijalankan, seperti dengan jenis pengecualian, perangkat keras memaksa prosesor untuk menjalankan fungsi handler kernel-disediakan, agar tidak ada proses mungkin menguasai terlarang dari perangkat keras.
Program membayar harga untuk perlindungan. Beralih di antara ruang alamat dapat mengambil banyak siklus prosesor, dan perangkap system call adalah operasi lebih mahal daripada prosedur sederhana atau metode panggilan. Kita akan melihat di Bagian 7.5.1 bagaimana factor hukum ini ke dalam biaya perlindungan.
7.4 Proses dan Eksekusi
Lingkungan eksekusi biasanya mahal untuk membuat dan mengelola, tetapi beberapa eksekusi dapat berbagi mereka - yaitu, mereka dapat berbagi semua sumber daya dapat diakses dalam diri mereka. Dengan kata lain, sebuah lingkungan eksekusi merupakan domain perlindungan di mana mengeksekusinya.
Eksekusi dapat diciptakan dan dihancurkan secara dinamis, sesuai kebutuhan. Tujuan utama dari memiliki beberapa thread eksekusi adalah untuk memaksimalkan tingkat eksekusi konkuren antara operasi, sehingga memungkinkan tumpang tindih dengan perhitungan input dan output, dan memungkinkan pemrosesan konkuren pada multiprocessors. Ini akan sangat membantu dalam server, di mana pemrosesan konkuren permintaan klien dapat mengurangi kecenderungan untuk server menjadi hambatan. Sebagai contoh, satu thread dapat memproses permintaan klien sementara thread kedua melayani permintaan lain menunggu untuk akses disk untuk menyelesaikan.
Lingkungan eksekusi memberikan perlindungan dari eksekusi luar itu, sehingga data dan sumber informasi lainnya yang terkandung di dalamnya secara default tidak dapat diakses untuk yang berada dillungkungan eksekusi lainnya. Tapi kernel tertentu memungkinkan berbagi terkendali sumber daya seperti memori fisik antara lingkungan eksekusi yang berada di dalam satu computer.
7.4 Alamat Penyimpanan
Alamat penyimpanan, diperkenalkan pada bagian sebelumnya, adalah unit manajemen dari memori virtual proses ini. Ini adalah besar (biasanya sampai dengan 232 byte, dan kadang-kadang sampai 264 byte) dan terdiri dari satu atau lebih daerah, dipisahkan oleh wilayah yang tidak terjangkau virtual ingatan. Sebuah wilayah adalah daerah memori virtual berdekatan yang dapat diakses oleh eksekusi dari proses pemilikan. Daerah tidak tumpang tindih. Perhatikan bahwa kita membedakan antara daerah dan isinya. Setiap daerah ditentukan oleh sebagai berikut:
Luasnya (alamat virtual termurah dan ukuran).
Membaca / menulis / mengeksekusi hak akses untuk eksekusi proses ini;
Apakah itu dapat ditambah atau dikurang.
Penyediaan jumlah yang tak terbatas dari daerah dimotivasi oleh beberapa faktor. Salah satunya adalah kebutuhan untuk mendukung stack terpisah untuk setiap thread. Mengalokasikan terpisah tumpukan daerah ke setiap thread memungkinkan untuk mendeteksi upaya melampaui batas tumpukan dan untuk mengontrol pertumbuhan masing-masing tumpukan itu. Virtual memory yang tidak terisi terletak di luar setiap tumpukan wilayah, dan upaya untuk mengakses ini akan menyebabkan pengecualian (kesalahan halaman). Alternative adalah untuk mengalokasikan tumpukan untuk eksekusi di heap, tetapi kemudian sulit untuk mendeteksi ketika thread telah melampaui batas stack.
7.4.1 Penciptaan Proses Baru
Penciptaan proses baru secara tradisional operasi terpisahkan tersedia oleh sistem operasi. Sebagai contoh, UNIX system call fork menciptakan proses dengan lingkungan eksekusi disalin dari penelepon (kecuali untuk nilai kembali dari fork). Sistem exec UNIX panggilan mengubah proses panggilan ke salah satu mengeksekusi kode dari sebuah program bernama. Untuk sistem terdistribusi, desain mekanisme proses penciptaan harus mengambil mempertimbangkan pemanfaatan beberapa komputer; akibatnya, proses-support infrastruktur dibagi menjadi layanan sistem yang terpisah. Penciptaan proses baru dapat dipisahkan menjadi dua aspek independen:
pilihan dari host target, misalnya, tuan rumah dapat dipilih dari kalangan node dalam sebuah cluster komputer bertindak sebagai server komputasi, seperti diperkenalkan di Bab 1.
penciptaan lingkungan eksekusi (dan thread awal di dalamnya).
Pilihan proses host • Pilihan node di mana proses baru akan berada - alokasi proses keputusan - adalah masalah kebijakan. Secara umum, alokasi proses kebijakan berkisar dari selalu menjalankan proses baru di workstation pencetus mereka untuk berbagi beban pengolahan antara seperangkat komputer. Bersemangat dkk. [1986] membedakan dua kategori kebijakan untuk berbagi beban. Kebijakan Transfer menentukan apakah untuk menempatkan sebuah proses baru secara lokal atau jarak jauh. Ini mungkin tergantung, misalnya, apakah node lokal ringan atau berat sarat
7.4.2 Eksekusi Client dan Server
Aspek kunci berikutnya dari suatu proses untuk mempertimbangkan secara lebih rinci adalah eksekusi nya. bagian ini meneliti keuntungan yang memungkinkan proses klien dan server untuk memiliki lebih dari satu thread. Kemudian membahas pemrograman dengan eksekusi, menggunakan eksekusi Java sebagai sebuah kasus belajar, dan berakhir dengan desain alternatif untuk menerapkan eksekusi.
Server memiliki kolam renang dari satu atau lebih eksekusi, yang masing-masing berulang kali menghapus permintaan dari antrian permintaan dan proses itu diterima. Kami tidak akan menyibukkan diri untuk saat dengan bagaimana permintaan yang diterima dan antri untuk eksekusi. Juga, untuk Demi kesederhanaan, kita mengasumsikan bahwa setiap thread menerapkan prosedur yang sama untuk memproses permintaan. Mari kita berasumsi bahwa setiap permintaan mengambil, rata-rata, 2 milidetik dari pengolahan ditambah 8 milidetik dari I / O (input / output) delay ketika server membaca dari disk yang (tidak ada caching). Mari kita lebih lanjut mengasumsikan sejenak bahwa mengeksekusi Server di satu komputer-prosesor.
7.5 Komunikasi dan Pemanggilan
Communication Primitives• Beberapa kernel dirancang untuk sistem terdistribusi memiliki tersedia primitif komunikasi disesuaikan dengan jenis methode pemanggilan yang Bab 5 dijelaskan. Amoeba [Tanenbaum dkk. 1990], misalnya, menyediakan melakukan Operasi, mendapatkan Permintaan dan mengirim Balas sebagai primitif. Amoeba, sistem V dan Paduan Suara menyediakan primitif komunikasi kelompok. Menempatkan relatif komunikasi tingkat tinggi fungsi di kernel memiliki keuntungan dari efisiensi. Jika, misalnya, middleware memberikan RMI lebih terhubung (TCP) soket UNIX, maka klien harus membuat dua panggilan sistem komunikasi (soket menulis dan membaca) untuk setiap remote methode pemanggilan. Lebih Amoeba, itu akan hanya memerlukan satu panggilan ke doOperation. Penghematan dalam sistem panggilan overhead yang bertanggung jawab untuk menjadi lebih besar dengan komunikasi kelompok.
Kinerja pemanggilan (invocation) merupakan faktor penting dalam desain sistem terdistribusi. Lebih desainer memisahkan fungsi antara ruang alamat, yang methode pemanggilan lebih jauh dibutuhkan. Klien dan server dapat membuat jutaan methode pemanggilan -terkait operasi dalam hidup mereka, pecahan sangat kecil dari milidetik menghitung biaya methode pemanggilan. Teknologi jaringan terus membaik, namun methode pemanggilan tidak menurun di proporsi dengan peningkatan bandwidth jaringan. Bagian ini akan menjelaskan bagaimana perangkat lunak overhead sering mendominasi lebih dari overhead jaringan di methode pemanggilan - setidaknya, untuk kasus LAN atau intranet. Hal ini berbeda dengan methode pemanggilan jarak jauh melalui Internet. Misalnya, mengambil sumber daya web. Di Internet, latency jaringan sangat variabel dan relatif tinggi rata-rata; throughput yang mungkin relatif rendah, dan server beban sering mendominasi lebih dari biaya pengolahan per-permintaan.
Biaya pemanggilan • Memanggil prosedur konvensional atau memohon konvensional metode, membuat sistem panggilan, mengirim pesan, remote panggilan prosedur dan remote Metode pemanggilan adalah contoh dari mekanisme methode pemanggilan. Setiap penyebab mekanisme kode untuk dijalankan di luar lingkup prosedur panggilan atau objek. Setiap melibatkan, secara umum, komunikasi argumen untuk kode ini dan kembalinya nilai data ke pemanggil. Mekanisme pemanggilan dapat berupa sinkron, seperti misalnya dalam kasus panggilan prosedur konvensional dan remote, atau asynchronous.
Pemanggilan melalui jaringan • A RPC nol (dan juga, null RMI) didefinisikan sebagai RPC tanpa parameter yang mengeksekusi prosedur batal kembali ada nilai. Eksekusi melibatkan pertukaran pesan yang membawa beberapa data sistem tetapi tidak ada data pengguna.
7.6 Arsitektur Sistem Operasi
Pada bagian ini, kita meneliti arsitektur kernel yang cocok untuk sistem terdistribusi. Kami mengadopsi pendekatan pertama-prinsip dimulai dengan persyaratan keterbukaan dan memeriksa arsitektur kernel utama yang telah diajukan, dengan ini dalam pikiran. Sebuah sistem terdistribusi terbuka harus memungkinkan untuk:
menjalankan hanya itu software sistem pada setiap komputer yang diperlukan untuk itu untuk melaksanakan peran tertentu dalam arsitektur sistem - persyaratan perangkat lunak sistem dapat bervariasi antara, misalnya, ponsel dan server komputer, dan pemuatan modul berlebihan limbah sumber daya memori.
memungkinkan perangkat lunak (dan komputer) melaksanakan layanan tertentu untuk menjadi diubah secara independen fasilitas lainnya.
memungkinkan untuk alternatif dari layanan yang sama yang akan diberikan, saat ini diperlukan untuk sesuai dengan pengguna yang berbeda atau aplikasi.
memperkenalkan layanan baru tanpa merugikan integritas yang sudah ada. Pemisahan mekanisme pengelolaan sumber daya tetap dari manajemen sumber daya kebijakan, yang bervariasi dari aplikasi ke aplikasi dan layanan untuk layanan, telah menjadi membimbing prinsip dalam desain sistem operasi untuk waktu yang lama.
Misalnya, kita mengatakan bahwa sistem penjadwalan yang ideal akan menyediakan mekanisme yang memungkinkan aplikasi multimedia seperti video conferencing untuk memenuhi tuntutan real-time sementara hidup bersama dengan aplikasi non-real-time seperti browsing web.
7.7 Sistem Virtualisasi
Virtualisasi merupakan konsep penting dalam sistem terdistribusi. Kita telah melihat satu penerapan virtualisasi dalam konteks jaringan, dalam bentuk overlay jaringan menawarkan dukungan untuk kelas tertentu didistribusikan aplikasi. Virtualisasi juga diterapkan dalam konteks sistem operasi; memang, Dalam konteks ini bahwa virtualisasi telah memiliki dampak yang paling. Pada bagian ini, kita meneliti apa artinya untuk menerapkan virtualisasi pada tingkat sistem operasi (sistem virtualisasi) dan juga menyajikan sebuah studi kasus Xen, contoh terkemuka sistem tingkat virtualisasi..
Tujuan dari sistem virtualisasi adalah untuk memberikan beberapa mesin virtual (virtual gambar hardware) atas arsitektur mesin fisik yang mendasari, dengan masing-masing mesin virtual yang menjalankan contoh sistem operasi terpisah. Konsep berasal dari pengamatan bahwa arsitektur komputer modern memiliki kinerja yang diperlukan untuk mendukung jumlah berpotensi besar mesin virtual dan sumber multipleks antara mereka. Beberapa contoh dari sistem operasi yang sama dapat dijalankan pada mesin virtual atau berbagai sistem operasi yang berbeda dapat didukung. Sistem virtualisasi mengalokasikan prosesor fisik (s) dan sumber daya lainnya dari mesin fisik antara semua mesin virtual yang mendukung.
Virtualisasi sistem diimplementasikan oleh lapisan tipis software di atas yang mendasari arsitektur mesin fisik; Lapisan ini disebut sebagai monitor mesin virtual atau hypervisor. Ini monitor mesin virtual menyediakan sebuah antarmuka berbasis erat pada arsitektur fisik yang mendasari. Lebih tepatnya, dalam virtualisasi penuh virtual Mesin Monitor menawarkan antarmuka identik dengan arsitektur fisik yang mendasari.
7.8 Kesimpulan.
Bab ini telah menggambarkan bagaimana sistem operasi mendukung lapisan middleware di menyediakan metode pemanggilan pada sumber daya bersama. Sistem operasi menyediakan koleksi mekanisme di mana berbagai kebijakan pengelolaan sumber daya dapat diimplementasikan, untuk memenuhi kebutuhan lokal dan untuk mengambil keuntungan dari teknologi perbaikan. Hal ini memungkinkan server untuk merangkum dan melindungi sumber daya, sementara memungkinkan klien untuk berbagi mereka secara bersamaan. Ini juga menyediakan mekanisme yang diperlukan untuk klien untuk memanggil operasi pada sumber daya.
Sebuah proses terdiri dari sebuah lingkungan eksekusi. eksekusi lingkungan terdiri dari ruang alamat, antarmuka komunikasi dan lainnya local sumber daya seperti Semaphore; thread adalah sebuah abstraksi aktivitas yang mengeksekusi dalam suatu lingkungan eksekusi. Alamat ruang harus menjadi besar dan jarang untuk mendukung berbagi dan dipetakan akses ke objek seperti file. Ruang alamat baru dapat dibuat dengan daerah mereka diwarisi dari proses induk. Teknik penting untuk menyalin daerah adalah copy-on-write.
Proses dapat memiliki beberapa thread, yang berbagi lingkungan eksekusi. Proses multi-threaded memungkinkan kita untuk mencapai konkurensi relatif murah dan untuk mengambil keuntungan dari Multiprocessors untuk paralelisme. Mereka berguna untuk kedua klien dan server. Utas terbaru implementasi memungkinkan untuk penjadwalan dua-tier: kernel menyediakan akses ke beberapa prosesor, sementara kode user-level menangani rincian kebijakan penjadwalan.
Sistem operasi menyediakan primitif pesan-lewat dasar dan mekanisme untuk komunikasi melalui memori bersama. Kebanyakan kernel termasuk jaringan komunikasi sebagai fasilitas dasar; lain hanya memberikan komunikasi lokal dan meninggalkan jaringan komunikasi ke server, yang dapat menerapkan berbagai protokol komunikasi. Ini adalah trade-off dari kinerja terhadap flexibility.
Kami membahas metode pemanggilan terpencil dan menyumbang perbedaan antara overhead karena langsung ke perangkat keras jaringan dan overhead yang disebabkan eksekusi operasi sistem kode. Kami menemukan proporsi total waktu karena perangkat lunak untuk relatif besar untuk metode pemanggilan nol tetapi menurun sebagai proporsi dari total sebagai ukuran argumen metode pemanggilan tumbuh. Overhead kepala terlibat dalam metode pemanggilan yang calon optimasi menyusun, menyalin data, paket inisialisasi, eksekusi penjadwalan dan konteks switching, serta protokol kontrol aliran digunakan. Metode pemanggilan antara ruang alamat dalam komputer adalah kasus khusus yang penting, dan kita menggambarkan teknik eksekusi-manajemen dan parameter-passing digunakan dalam RPC ringan. Ada dua pendekatan utama untuk kernel arsitektur: kernel monolitik dan microkernels.
Perbedaan utama antara keduanya terletak pada di mana garis ditarik antara pengelolaan sumber daya oleh kernel dan sumber daya manajemen yang dilakukan oleh dinamis dimuat (dan biasanya user-level) server. Sebuah mikrokernel harus mendukung setidaknya gagasan dari proses dan komunikasi interprocess. Mendukung sistem operasi subsistem emulasi serta dukungan bahasa dan subsistem lainnya, seperti yang untuk pengolahan real-time. Virtualisasi menawarkan alternatif yang menarik untuk gaya ini dengan menyediakan emulasi perangkat keras dan kemudian memungkinkan beberapa mesin virtual (dan maka beberapa sistem operasi) untuk hidup berdampingan pada mesin yang sama.
thank mas
ReplyDeletesama-sama
Delete