kernel machintosh bahasa

25
Mac OS X memberikan banyak manfaat kepada pengguna Macintosh dan pengembang masyarakat. Manfaat ini termasuk peningkatan keandalan dan kinerja, fitur jaringan ditingkatkan, antarmuka pemrograman sistem berbasis obyek, dan peningkatan dukungan untuk standar industri. Dalam menciptakan Mac OS X, Apple telah benar-benar kembali direkayasa inti Mac OS sistem operasi. Membentuk dasar dari Mac OS X adalah kernel. Gambar 2-1 menggambarkan arsitektur Mac OS X. Kernel menyediakan banyak perangkat tambahan untuk Mac OS X. Ini termasuk preemption, perlindungan memori, meningkatkan kinerja, fasilitas jaringan ditingkatkan, dukungan untuk kedua Macintosh (Extended dan Standard) dan non- Macintosh (UFS, ISO 9660) file sistem, API berorientasi obyek, dan banyak lagi. Dua fitur ini, preemption dan perlindungan memori, menyebabkan lingkungan yang lebih kuat. kernel Arsitektur

Upload: samoedra-sandoro

Post on 14-Apr-2017

177 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Kernel machintosh bahasa

Mac OS X memberikan banyak manfaat kepada pengguna Macintosh dan pengembang

masyarakat. Manfaat ini termasuk peningkatan keandalan dan kinerja,

fitur jaringan ditingkatkan, antarmuka pemrograman sistem berbasis obyek, dan

peningkatan dukungan untuk standar industri.

Dalam menciptakan Mac OS X, Apple telah benar-benar kembali direkayasa inti Mac OS

sistem operasi. Membentuk dasar dari Mac OS X adalah kernel. Gambar 2-1

menggambarkan arsitektur Mac OS X.

Kernel menyediakan banyak perangkat tambahan untuk Mac OS X. Ini termasuk preemption,

perlindungan memori, meningkatkan kinerja, fasilitas jaringan ditingkatkan,

dukungan untuk kedua Macintosh (Extended dan Standard) dan non-Macintosh (UFS, ISO

9660) file sistem, API berorientasi obyek, dan banyak lagi. Dua fitur ini,

preemption dan perlindungan memori, menyebabkan lingkungan yang lebih kuat.

kernel Arsitektur

Dalam Mac OS 8 dan 9, aplikasi bekerja sama untuk berbagi waktu prosesor. Demikian pula, semua

aplikasi berbagi memori komputer di antara mereka. Mac OS 8 dan 9

multitaskingenvironments koperasi. Respon dari semua proses adalah

dikompromikan jika bahkan satu aplikasi tidak bekerja sama. Di sisi lain,

aplikasi real-time seperti multimedia harus yakin diprediksi,

waktu-kritis, perilaku.

Sebaliknya, Mac OS X adalah multitaskingenvironment preemptive. Dalam Mac OS X,

Page 2: Kernel machintosh bahasa

kernel menyediakan penegakan kerjasama, proses penjadwalan untuk berbagi waktu

(preemption). Ini mendukung perilaku real-time dalam aplikasi yang membutuhkan itu.

Dalam Mac OS X, proses biasanya tidak berbagi memori. Sebaliknya, pihak yang ditunjuk kernel

setiap processits memiliki ruang alamat, mengendalikan akses ke ruang alamat tersebut. ini

kontrol memastikan bahwa tidak ada aplikasi secara tidak sengaja dapat mengakses atau memodifikasi lain

memori aplikasi (perlindungan). Ukuran tidak menjadi masalah; dengan memori virtual

sistem termasuk dalam Mac OS X, setiap aplikasi memiliki akses ke sendiri 4 GB memori

ruang alamat.

Dilihat bersama-sama, semua aplikasi dikatakan berjalan di ruang pengguna, tapi ini tidak

menyiratkan bahwa mereka berbagi memori. Ruang pengguna hanyalah sebuah istilah untuk gabungan

ruang alamat dari semua aplikasi user-level. Kernel itu sendiri memiliki alamat sendiri

ruang, disebut ruang kernel. Dalam Mac OS X, ada aplikasi dapat memodifikasi memori

perangkat lunak sistem (kernel).

Meskipun proses pengguna tidak berbagi memori secara default seperti di Mac OS 8 dan 9,

komunikasi (dan bahkan berbagi memori) antara aplikasi masih mungkin.

Sebagai contoh, kernel menawarkan kaya set primitif untuk mengizinkan beberapa berbagi

informasi antar proses. Primitif ini termasuk shared library dan

kerangka kerja. Pesan Mach memberikan pendekatan lain, menyerahkan memori dari

satu proses ke proses lainnya. Tidak seperti Mac OS 8 dan 9, namun, berbagi memori tidak bisa

terjadi tanpa tindakan nyata oleh programmer.

Lapisan dasar dari Mac OS X terdiri dari beberapa arsitektur

komponen, seperti yang ditunjukkan pada Gambar 2-3. Secara bersama-sama, komponen ini membentuk

kernel environmentor sederhana, kernel.

Page 3: Kernel machintosh bahasa

penting

Perhatikan bahwa Mac OS X menggunakan kernel istilah yang agak

berbeda dari yang Anda dapat digunakan untuk melihat itu digunakan.

Kernel, dalam terminologi sistem operasi tradisional, adalah inti kecil

software yang memberikan fasilitas minimal yang diperlukan untuk melaksanakan

layanan sistem operasi tambahan. - Dari Desain dan Pelaksanaan

4.4 BSD Sistem Operasi, McKusick, Bostic, Karels, dan Quarterman, 1996

Sebaliknya, Mac OS X menggunakan kernel istilah untuk merujuk kepada segala sesuatu yang mengeksekusi dalam

ruang alamat kernel.

Mac OS X kernel mencakup Mach, BSD, I / O Kit, sistem file, dan jaringan

Mach

Mach mengelola sumber daya prosesor seperti penggunaan CPU dan memori, menangani

Page 4: Kernel machintosh bahasa

penjadwalan, memberikan perlindungan memory, dan menyediakan pesan-berpusat

infrastruktur ke seluruh lapisan sistem operasi. The Mach Komponen

memberikan

■ untyped IPCand RPC

■ dukungan untuk SMP

■ dukungan untuk real-timeservices

■ pager anexternal

■ arsitektur modular

■ meningkatkan kinerja

BSD

Di atas lapisan Mach, lapisan BSD memberikan "kepribadian OS" API dan jasa.

Lapisan BSD didasarkan pada kernel BSD, terutama FreeBSD. Komponen BSD

memberikan

■ file sistem

■ jaringan

■ kebijakan keamanan dasar seperti ID pengguna dan izin

■ kerangka sistem - mekanisme untuk mengekspor API untuk aplikasi

lapisan

■ model proses BSD, termasuk ID proses dan sinyal

■ API kernel FreeBSD

■ banyak POSIXAPIs

■ Pthreads (POSIX thread implementasi)

Jaringan

Mac OS X jaringan mengambil keuntungan dari kemampuan jaringan canggih BSD

untuk memberikan dukungan untuk fitur-fitur modern, seperti Network Address Translation

(NAT) dan firewall. Komponen jaringan menyediakan

Page 5: Kernel machintosh bahasa

■ 4.4BSD TCP / IP stack dan socket API

■ dukungan untuk kedua IP dan AppleTalk

■ multihoming

■ Routing

■ multicastsupport

■ Server tala

■ berbasis socket AppleTalk

■ Mac OS dukungan Klasik

■ berkarbonisasi Open Transport API

FILE SISTEM Mac OS X menyediakan dukungan untuk berbagai jenis file sistem, termasuk HFS,

HFS +, UFS, NFS, ISO 9660, dan lain-lain. Jenis default file sistem adalah HFS +; mac

Sepatu OS X (dan "akar") dari HFS +. Fitur canggih Mac OS X sistem berkas

mencakup ditingkatkan Virtual File System (VFS) desain. VFS menyediakan untuk berlapis

arsitektur (file sistem stackable). Sistem file komponen memberikan

■ UTF-8 (Unicode) dukungan

■ peningkatan kinerja

kernel Extensions

Mac OS X menyediakan mekanisme ekstensi kernel sebagai sarana yang memungkinkan dinamis

pemuatan potongan kode ke dalam kernel, tanpa perlu mengkompilasi ulang. ini

potongan kode yang dikenal umum sebagai plug-Insor, dalam kernel Mac OS X, seperti

kernel extensionsor kexts.

Karena kexts menyediakan baik modularitas dan loadability dinamis, mereka adalah

pilihan alami untuk layanan yang relatif mandiri yang membutuhkan akses ke kernel

antarmuka internal. Banyak komponen lingkungan kernel mendukung ini

mekanisme ekstensi, meskipun dengan cara yang berbeda.

Page 6: Kernel machintosh bahasa

Sebagai contoh, beberapa fitur jaringan baru melibatkan penggunaan jaringan

ekstensi kernel (NKEs). Kemampuan untuk secara dinamis menambahkan file-sistem baru

pelaksanaan didasarkan pada VFS kexts. Device driver dan keluarga perangkat di

I / O Kit diimplementasikan menggunakan kexts. Kexts membuat pengembangan lebih mudah bagi

pengembang menulis driver atau mereka menulis kode untuk mendukung format volume yang baru

atau jaringan protokol

“Extending the Kernel”

Mac OS X menyediakan

mekanisme ekstensi kernel sebagai sarana yang memungkinkan pembebanan dinamis dari kode ke

kernel, tanpa perlu mengkompilasi ulang atau relink. Karena ekstensi kernel ini

(Kexts) menyediakan baik modularitas dan loadability dinamis, mereka adalah alam

pilihan untuk setiap layanan yang relatif mandiri yang membutuhkan akses ke kernel internal yang

interface.

Karena kexts berjalan dalam modus supervisor di ruang alamat kernel, mereka juga

sulit untuk menulis dan debug dari modul user-level, dan harus sesuai dengan ketat

pedoman. Selanjutnya, sumber kernel yang kabel (secara permanen menetap di memori)

dan karena itu lebih mahal untuk digunakan dibandingkan sumber daya dalam tugas user-space setara

fungsionalitas.

Selain itu, meskipun perlindungan memori menjaga aplikasi dari menerjang

sistem, tidak ada perlindungan seperti berada di tempat di dalam kernel. Sebuah kernel berperilaku buruk

ekstensi di Mac OS X benar-benar dapat menyebabkan lebih banyak masalah daripada buruk berperilaku

aplikasi atau ekstensi bisa di Mac OS 8 atau 9.

Bugs di kexts dapat memiliki konsekuensi yang jauh lebih parah daripada bug dalam kode user-level.

Misalnya, kesalahan akses memori dalam aplikasi pengguna dapat, paling buruk, menyebabkan bahwa

aplikasi crash. Sebaliknya, kesalahan akses memori di kext menyebabkan sistem

Page 7: Kernel machintosh bahasa

panik, menabrak sistem operasi.

Akhirnya, untuk alasan keamanan, beberapa pelanggan membatasi atau tidak mengizinkan penggunaan

kexts pihak ketiga. Akibatnya, penggunaan kexts sangat tidak dianjurkan dalam situasi

di mana solusi user-level layak. Mac OS X menjamin bahwa benang pengguna yang

sama efisien sebagai thread kernel, sehingga efisiensi tidak harus menjadi masalah. kecuali Anda

aplikasi membutuhkan akses tingkat rendah untuk kernel interface atau aliran data, Anda

harus menggunakan tingkat yang lebih tinggi dari abstraksi ketika mengembangkan kode untuk Mac OS X.

Memperluas Kernel

Ketika Anda mencoba untuk menentukan apakah sebuah kode harus kext, defaultnya

Jawabannya umumnya tidak. Secara khusus, jika kode Anda merupakan perpanjangan sistem

Mac OS 8 atau 9, yang tidak berarti bahwa hal itu tentu harus menjadi perpanjangan kernel di

Mac OS X. Hanya ada beberapa alasan bagus untuk pengembang untuk menulis kernel

ekstensi:

■ Kode Anda perlu mengambil interupsi utama, yaitu, sesuatu dalam perangkat keras

perlu mengganggu CPU.

■ Klien utama kode Anda di dalam kernel, misalnya, sebuah perangkat block

yang klien utamanya adalah sistem file.

■ Sejumlah cukup besar aplikasi yang berjalan membutuhkan sumber daya yang Anda

kode menyediakan; misalnya, Anda telah menulis sebuah file sistem stack.

■ Kode Anda perlu multipleks antara beberapa aplikasi client yang membutuhkan

kecepatan tinggi, sinkronisasi baik, atau latency rendah.

Jika kode Anda tidak memenuhi salah satu kriteria di atas, Anda harus mempertimbangkan

mengembangkannya sebagai perpustakaan atau daemon user-level, atau menggunakan salah satu user-level

plug-in arsitektur (seperti komponen QuickTime atau Core Graphics

kerangka) alih-alih menulis ekstensi kernel.

Page 8: Kernel machintosh bahasa

Jika Anda menulis device driver atau kode untuk mendukung format volume yang baru atau

jaringan protokol, namun, kexts mungkin satu-satunya solusi yang layak.

Untungnya, sementara kexts mungkin lebih sulit untuk menulis daripada kode user-space,

beberapa alat dan prosedur yang tersedia untuk meningkatkan pembangunan dan

proses debugging. Lihat \\"Debugging kext Anda"//

Kext debugging dapat menjadi rumit. Sebelum Anda dapat men-debug kext, Anda harus terlebih dahulu

mengaktifkan kernel debugging, seperti Mac OS X biasanya tidak dikonfigurasi untuk mengizinkan

debugging kernel. Hanya account root dapat mengaktifkan kernel debugging, dan Anda

perlu reboot Mac OS X untuk perubahan berlaku.

Kernel debugging dilakukan menggunakan dua mesin Mac OS X, yang disebut

mesin pembangunan dan mesin target. Mesin ini harus terhubung melalui

koneksi handal jaringan pada subnet yang sama (atau dalam jaringan lokal tunggal).

Secara khusus, ada tidak boleh ada router IP intervensi atau perangkat lain yang bisa

membuat Ethernet berbasis hardware pengalamatan mustahil.

The kext terdaftar (dan KMODs diambil dan dijalankan) pada mesin target.

Debugger ini diluncurkan dan dijalankan pada mesin pembangunan. Anda juga dapat

membangun kembali kext Anda pada mesin pengembangan, setelah Anda memperbaiki kesalahan apapun yang Anda temukan.

Debugging harus dilakukan dalam mode ini karena Anda sementara harus menghentikan

kernel pada mesin target untuk menggunakan debugger. Bila Anda menghentikan

kernel, semua proses lain pada mesin berhenti. Namun, debugger berjalan

jarak jauh dapat terus berjalan dan dapat terus memeriksa (atau memodifikasi) kernel pada

mesin target.

Perhatikan bahwa bug di kexts dapat menyebabkan kernel sasaran untuk membekukan atau panik. Jika ini

terjadi, Anda mungkin tidak dapat melanjutkan debugging, bahkan lebih dari remote

koneksi; Anda harus reboot target dan mulai dari awal, pengaturan breakpoint hanya

Page 9: Kernel machintosh bahasa

sebelum kode di mana kext jatuh dan bekerja sangat hati-hati hingga kecelakaan

titik.

Kexts yang debug menggunakan GDB, debugger sumber-tingkat dengan baris perintah

antarmuka. Anda akan perlu bekerja pada aplikasi Terminal untuk menjalankan GDB. untuk

informasi rinci tentang cara menggunakan GDB, lihat dokumentasi yang disertakan dengan

Mac OS X. Anda juga dapat menggunakan helpcommand dari dalam GDB

Memperluas Kernel

Karena kext debugging terjadi di seperti tingkat rendah, Anda tidak akan dapat mengambil

keuntungan dari semua fitur GDB. Sebagai contoh:

■ Anda tidak dapat menggunakan GDB untuk memanggil fungsi atau metode dalam kext a.

■ Anda tidak dapat menggunakan GDB untuk debug mengganggu rutinitas.

Berhati-hatilah bahwa Anda tidak menghentikan kernel terlalu lama ketika Anda debug (untuk

Misalnya, ketika Anda mengatur breakpoints). Dalam waktu singkat, inkonsistensi internal yang dapat

muncul yang menyebabkan kernel target untuk panik atau membekukan, memaksa Anda untuk reboot target

mesin.

Mach

Layanan dasar dan primitif dari kernel Mac OS X didasarkan pada Mach

3.0. Apple telah diubah dan diperpanjang Mach untuk lebih memenuhi Mac OS X fungsional dan

tujuan kinerja.

Mach 3,0 pada awalnya dipahami sebagai sederhana, extensible, komunikasi

mikrokernel. Hal ini mampu berjalan sebagai kernel mandiri, dengan tradisional lainnya

layanan sistem operasi seperti I / O, sistem file, dan tumpukan jaringan berjalan

sebagai server mode pengguna.

Namun, di Mac OS X, Mach terkait dengan komponen kernel lainnya menjadi satu

ruang alamat kernel. Hal ini terutama untuk kinerja; itu jauh lebih cepat untuk membuat

panggilan langsung antara komponen terkait daripada untuk mengirim pesan atau melakukan RPC

Page 10: Kernel machintosh bahasa

antara tugas-tugas yang terpisah. Ini modular hasil struktur yang lebih kuat dan

sistem extensible dari kernel monolitik akan memungkinkan, tanpa kinerja

hukuman dari mikrokernel murni.

Jadi di Mac OS X, Mach tidak terutama hub komunikasi antara klien dan

server. Sebaliknya, nilai terdiri dari abstraksi yang, diperpanjang nya, dan yang

fleksibilitas. Secara khusus, Mach menyediakan

■ API berbasis obyek dengan saluran komunikasi (misalnya efor, port) sebagai objek

referensi

■ eksekusi sangat paralel, termasuk benang Terlebih Dahulu dijadwalkan dan

dukungan untuk SMP

■ kerangka penjadwalan yang fleksibel, dengan dukungan untuk penggunaan real-time

■ satu set lengkap IPCprimitives, termasuk pesan, RPC, sinkronisasi,

dan pemberitahuan

■ dukungan untuk ruang alamat virtual yang besar, bersama daerah memori, dan memori

benda didukung oleh toko persisten

22 Mach Kernel Abstractions

BAB 3

Mach

■ terbukti diperpanjang dan portabilitas, misalnya di set instruksi

arsitektur dan lingkungan di terdistribusi

■ keamanan dan manajemen sumber daya sebagai prinsip dasar desain; semua

sumber daya virtual

Mach Kernel Abstractions

Mach menyediakan sedikit saja dari abstraksi yang telah dirancang untuk menjadi sederhana

dan kuat. Abstraksi kernel utama adalah

■ Tasks.The unit kepemilikan sumber daya; setiap tugas terdiri dari alamat virtual

ruang, port kanan ruang nama, dan satu set benang.

Page 11: Kernel machintosh bahasa

■ Threads. Unit eksekusi CPU.

■ Alamat ruang. Dalam hubungannya dengan manajer memori, Mach mengimplementasikan

gagasan ruang alamat virtual jarang dan memori bersama.

■ benda Memory. Unit internal manajemen memori. benda memori

termasuk entri nama dan daerah; mereka adalah representasi dari

Data berpotensi-persistent yang dapat dipetakan ke ruang alamat.

■ Ports. Aman, saluran komunikasi simpleks, hanya dapat diakses melalui mengirim dan

menerima kemampuan (hak).

■ IPC. Antrian pesan, panggilan prosedur remote, pemberitahuan, Semaphore, dan

set kunci.

■ Waktu. Jam, timer, dan menunggu.

Pada tingkat perangkap, antarmuka untuk sebagian abstraksi Mach terdiri dari pesan terkirim

ke dan dari pelabuhan kernel yang mewakili benda-benda. Interface perangkap-tingkat (seperti

sebagai mach_msg_overwrite_trap) dan pesan format yang sendiri disarikan dalam

penggunaan normal oleh Mach Antarmuka Generator (MIG). MIG digunakan untuk mengkompilasi

interface prosedural untuk API berbasis pesan, berdasarkan deskripsi dari mereka

API.

Mach

Sebuah thread adalah entitas yang cukup ringan. Hal ini cukup murah untuk membuat dan memiliki rendah

overhead untuk beroperasi. Hal ini benar karena thread memiliki informasi negara kecil (kebanyakan

state register); tugasnya memiliki menanggung beban pengelolaan sumber daya. pada

mesin multiprosesor, adalah mungkin untuk beberapa benang dalam tugas untuk mengeksekusi dalam

paralel. Bahkan ketika paralelisme bukanlah tujuan, beberapa benang memiliki keuntungan

di setiap thread dapat menggunakan gaya pemrograman sinkron, daripada mencoba

pemrograman asynchronous dengan thread tunggal berusaha untuk menyediakan beberapa

layanan.

Page 12: Kernel machintosh bahasa

Ports, Port Rights, Port Sets, and Port Name Spaces

Sebuah thread adalah entitas komputasi dasar. Sebuah thread milik satu dan hanya satu

tugas yang mendefinisikan ruang alamat virtual. Untuk mempengaruhi struktur alamat

ruang atau untuk referensi semua sumber daya lain selain ruang alamat, benang harus

mengeksekusi instruksi perangkap khusus yang menyebabkan kernel untuk melakukan operasi pada

nama benang atau mengirim pesan ke beberapa agen atas nama benang. di

umum, perangkap ini memanipulasi sumber daya terkait dengan tugas yang berisi

benang. Permintaan dapat dibuat dari kernel untuk memanipulasi entitas: untuk membuat

mereka, menghapusnya, dan mempengaruhi negara mereka.

Mach menyediakan kerangka kerja yang fleksibel untuk kebijakan penjadwalan thread. versi awal

Mac OS X dukungan baik waktu-sharingand tetap prioritypolicies. A

prioritas timesharing thread dinaikkan dan diturunkan untuk menyeimbangkan sumber dayanya

Konsumsi terhadap benang time-sharing lainnya.

Benang tetap prioritas mengeksekusi untuk quantum waktu tertentu, dan kemudian diletakkan di

akhir antrian benang prioritas yang sama. Menetapkan prioritas thread tetap murah

tingkat kuantum hingga tak terbatas memungkinkan benang untuk menjalankan sampai blok, atau sampai itu

mendahului oleh thread prioritas yang lebih tinggi. Prioritas tinggi benang real-time

biasanya tetap prioritas.

Versi mendatang dari Mac OS X mungkin memiliki kebijakan penjadwalan tambahan, untuk lebih

dukungan real-time yang canggih.

Dengan pengecualian dari ruang alamat virtual tugas ini, semua sumber daya lainnya Mach adalah

diakses melalui tingkat tipuan yang dikenal sebagai port. Sebuah port adalah titik akhir dari

saluran komunikasi searah antara klien yang meminta layanan dan

Page 13: Kernel machintosh bahasa

server yang memberikan layanan. Jika balasan yang akan diberikan kepada layanan tersebut

permintaan, port kedua harus digunakan.

Dalam kebanyakan kasus, sumber daya yang diakses oleh port (yaitu, dinamai oleh itu) adalah

disebut sebagai objek. Kebanyakan benda disebut oleh port memiliki penerima tunggal dan

(berpotensi) beberapa pengirim. Artinya, ada tepat satu menerima pelabuhan, dan setidaknya

satu pengiriman pelabuhan, untuk objek khas seperti antrian pesan.

Layanan yang akan diberikan oleh suatu benda ditentukan oleh manajer yang menerima

permintaan yang dikirim ke objek. Ini mengikuti bahwa penerima untuk port yang terkait dengan

objek dari kernel adalah kernel dan penerima untuk port yang terkait dengan

benda-tugas yang diberikan adalah tugas menyediakan objek.

Untuk port yang nama benda-tugas yang diberikan, adalah mungkin untuk mengubah penerima

meminta untuk itu port tugas yang berbeda, misalnya dengan melewatkan port untuk tugas itu

dalam pesan. Sebuah tugas tunggal dapat memiliki beberapa port yang mengacu pada sumber daya yang

mendukung. Untuk itu, setiap entitas yang diberikan dapat memiliki beberapa port yang mewakilinya,

masing-masing menyiratkan set yang berbeda dari operasi diperbolehkan. Sebagai contoh, banyak benda

memiliki nama portand port kontrol (kadang-kadang disebut port istimewa). akses

ke port kontrol memungkinkan objek yang akan dimanipulasi; Akses ke port nama

hanya nama objek, misalnya, untuk kembali informasi tentang hal itu.

Tugas memiliki izin untuk port akses dengan cara tertentu (mengirim, menerima, mengirim-sekali);

ini disebut hak pelabuhan. Sebuah port dapat diakses hanya melalui hak. Port sering

digunakan untuk memberikan klien akses ke obyek dalam Mach. Memiliki hak untuk mengirim ke

pelabuhan IPC objek menunjukkan hak untuk memanipulasi objek dalam cara yang ditentukan. sebagai

, hak kepemilikan pelabuhan tersebut adalah mekanisme keamanan mendasar dalam Mach.

Memiliki hak untuk objek adalah memiliki kemampuan untuk mengakses atau memanipulasi objek.

Hak port dapat disalin dan dipindahkan antara tugas melalui IPC. Melakukan hal itu, pada dasarnya,

Page 14: Kernel machintosh bahasa

melewati kemampuan untuk beberapa objek atau server.

Jenis Port

Salah satu jenis objek disebut oleh port adalah satu set pelabuhan. Seperti namanya, port set

adalah seperangkat hak port yang dapat diperlakukan sebagai satu kesatuan ketika menerima pesan

atau acara dari salah satu anggota dari himpunan. Pelabuhan set mengizinkan satu thread untuk menunggu

sejumlah sumber pesan dan acara, misalnya dalam loop kerja.

Secara tradisional di Mach, saluran komunikasi dilambangkan dengan port selalu

antrian pesan. Namun, Mac OS X mendukung jenis tambahan

saluran komunikasi, dan jenis baru dari objek IPC juga diwakili oleh

port dan hak pelabuhan. Lihat bagian, "Tugas ke Task Komunikasi (IPC)"

(halaman 28), untuk rincian lebih lanjut tentang pesan dan jenis IPC lainnya.

Pelabuhan dan hak pelabuhan tidak memiliki nama systemwide yang memungkinkan port sewenang-wenang atau

hak untuk dimanipulasi secara langsung. Port dapat dimanipulasi oleh tugas hanya jika tugas

memiliki port tepat di ruang nama pelabuhan. Sebuah port benar ditentukan oleh nama port, sebuah

indeks integer menjadi 32-bit ruang nama pelabuhan. Setiap tugas telah terkait dengan itu satu

ruang nama pelabuhan.

Tugas memperoleh hak pelabuhan ketika tugas lain secara eksplisit memasukkan mereka ke dalam namanya

ruang, ketika mereka menerima hak dalam pesan, dengan menciptakan benda-benda yang mengembalikan hak

ke objek, dan melalui Mach panggilan untuk pelabuhan khusus tertentu (mach_thread_self, mach_task_self, and mach_reply_port.)

Memory ManagementAkses Runtime dilakukan melalui alamat virtual yang

mungkin tidak sesuai dengan lokasi di memori fisik pada saat awal

Page 15: Kernel machintosh bahasa

mencoba akses. Mach bertanggung jawab untuk mendamaikan akses yang diminta dalam maya

ruang dengan lokasi di memori fisik. Ia melakukannya melalui permintaan packing.

Halaman default menangani memori nonpersistent, dikenal sebagai memori anonim.

Memori Anonymous adalah nol-diinisialisasi, dan ia hanya ada selama hidup tugas.

The vnode pager peta file ke objek memori. Mach ekspor antarmuka untuk

benda memori untuk memungkinkan isinya akan disumbangkan oleh tugas-tugas user-mode. ini

antarmuka dikenal sebagai Memori Eksternal Manajemen Interface, atau Emmi.

Ekspor subsistem manajemen memori memori virtual menangani dikenal sebagai

entri memori bernama. Seperti kebanyakan sumber kernel, ini dilambangkan dengan port.

Memiliki bernama entri memori menangani memungkinkan pemiliknya untuk memetakan mendasari

objek memori virtual atau untuk lulus hak untuk memetakan objek yang mendasari kepada orang lain.

Pemetaan entri disebutkan dalam dua berbeda hasil tugas di jendela memori bersama

Page 16: Kernel machintosh bahasa

antara dua tugas, sehingga memberikan suatu metode yang fleksibel untuk mengembangkan penerbangan berbagi

memori.

Alamat rentang ruang memori virtual juga dapat diisi melalui langsung

Alokasi (menggunakan vm_allocate). Objek memori virtual mendasari

anonim dan didukung oleh pager default. Rentang berbagi sebuah ruang alamat

juga dapat diatur melalui warisan. Ketika tugas-tugas baru diciptakan, mereka kloning

dari orang tua. Kloning ini berkaitan dengan ruang alamat memori yang mendasari sebagai

baik. Bagian Dipetakan objek dapat diwariskan sebagai salinan, atau sebagai bersama, atau tidak sama

semua, berdasarkan atribut yang terkait dengan pemetaan. Mach praktek bentuk

copy tertunda dikenal sebagai copy-on-writeto mengoptimalkan kinerja diwariskan

salinan pada penciptaan tugas.

Alih-alih langsung menyalin jangkauan, optimasi copy-on-write adalah

dilakukan dengan berbagi dilindungi. Dua tugas memori yang akan disalin,

Page 17: Kernel machintosh bahasa

tapi dengan akses read-only. Saat salah satu tugas mencoba untuk memodifikasi sebagian dari

jangkauan, sebagian yang disalin pada saat itu. Ini evaluasi malas salinan memori

optimasi penting yang memungkinkan penyederhanaan di beberapa daerah, terutama

API messaging.

Salah satu bentuk lain dari berbagi disediakan oleh Mach, melalui ekspor bernama

daerah. Sebuah wilayah bernama adalah bentuk entri bernama, tapi bukannya didukung oleh

objek memori virtual, didukung oleh peta fragmen virtual. Fragmen ini mungkin

terus pemetaan ke berbagai obyek virtual memory. Hal ini mappable ke lainnya

peta virtual, memberikan cara mewarisi tidak hanya sekelompok memori virtual

benda tetapi juga hubungan pemetaan yang ada. Fitur ini menawarkan signifikan

optimasi di setup tugas, misalnya ketika berbagi wilayah kompleks

ruang alamat yang digunakan untuk perpustakaan

Page 18: Kernel machintosh bahasa

Task to Task Communication (IPC)Komunikasi antara tugas merupakan elemen penting dari filosofi Mach.

Mach mendukung struktur sistem client / server dimana tugas (klien) Akses

jasa dengan membuat permintaan dari tugas-tugas lain (server) melalui pesan dikirim melalui

saluran komunikasi.

Titik akhir dari saluran komunikasi ini di Mach disebut port, sementara

hak pelabuhan menunjukkan izin untuk menggunakan saluran. Bentuk-bentuk IPC disediakan oleh

Mach termasuk

■ antrian pesan

■ Semaphore

■ pemberitahuan

■ kunci set

■ panggilan prosedur jauh (RPC)

Jenis objek IPC dilambangkan dengan port menentukan operasi yang diijinkan

pada port itu, dan bagaimana (dan apakah) transfer data terjadi.

penting

Fasilitas IPC di Mac OS X berada dalam keadaan transisi. di

Page 19: Kernel machintosh bahasa

versi awal dari sistem, tidak semua jenis IPC mungkin

dilaksanakan.

Ada dua API Mach fundamental berbeda untuk manipulasi baku ports-

yang mach_ipcfamily dan mach_msgfamily tersebut. Dalam alasan, kedua keluarga mungkin

digunakan dengan benda IPC; Namun, mach_ipccalls lebih disukai dalam kode baru.

The mach_ipccalls menjaga informasi negara mana yang tepat untuk mendukung

gagasan transaksi. The mach_msgcalls yang didukung untuk kode warisan tapi

usang; mereka stateless.