Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan OS (Kebenaran)

Pembangunan OS (Kebenaran)

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-09-19 18:17:11491semak imbas

OS Development (The truth)

Jadual Kandungan

  • Pengenalan
  • 1. Pemuat But: Memulakan Perkara
  • 2. Memasuki Kernel: Di Mana Sihir Berlaku
  • 3. Memilih Bahasa Anda
  • 4. Keselamatan: Jangan Terhempas Kapal Terbang
  • 5. Mengoptimumkan Kepantasan
  • 6. Menyediakan Pemacu Asas
    • Pemacu Video 6.1
    • 6.2 Pemacu Papan Kekunci
    • Pemandu 6.3 I/O
  • 7. Menulis Shell: Antara Muka Pengguna
  • 8. Membina Sistem Fail Tersuai
  • 9. Menambah Pemacu Tetikus: Klik dan Alihkan
  • 10. Membina GUI Mudah
  • 11. Mengendalikan Windows dan Acara
  • 12. Mencipta Apl Notepad: Dari Klik ke Taip
  • 13. Sentuhan Akhir: Menjadikannya Terasa Seperti OS

pengenalan

Membina sistem pengendalian dari awal ialah salah satu pengalaman paling mencabar dan bermanfaat yang boleh anda miliki sebagai pembangun. Tidak seperti pembangunan aplikasi peringkat tinggi, di mana perpustakaan wujud untuk hampir segala-galanya, pembangunan OS memaksa anda bekerja hampir dengan logam, menyentuh perkakasan secara langsung, mengurus memori secara manual dan mengawal setiap aspek cara mesin anda berjalan.

Dari pengalaman saya, membina OS bermakna mendalami bahasa pemasangan, bergelut dengan perkakasan dan bergelut melalui ranap, but semula (TERUTAMA but semula) dan sesi nyahpepijat yang panjang. Jika anda fikir menyahpepijat pemuat but adalah sukar, cuba lakukannya tanpa kemewahan alatan moden. Pembangunan OS membuatkan anda mempersoalkan pilihan hidup anda lebih banyak kali daripada yang anda boleh kira.

Yang berkata, mari kita pecahkan semuanya, daripada pemuat but kepada persekitaran desktop yang berfungsi sepenuhnya di mana anda boleh menggerakkan tetikus dan membuka editor teks untuk menaip.


1. Pemuat But: Memulakan Perkara

Apakah itu Pemuat But?

pemuat but ialah langkah pertama dalam mana-mana perjalanan pembangunan OS. Apabila komputer anda dihidupkan, BIOS mengambil alih, menyemak perkakasan anda, dan kemudian memuatkan pemuat but anda daripada cakera ke dalam memori. Tugas program kecil ini adalah untuk menyediakan CPU dan memuatkan kernel sistem pengendalian anda ke dalam memori. Anda perlu menulis pemuat but dalam pemasangan kerana anda berurusan secara langsung dengan perkakasan pada peringkat ini.

Apabila pemuat but bermula, CPU berada dalam mod sebenar 16-bit, yang bermaksud ia hanya boleh menangani 1MB memori. Perkara pertama yang perlu anda lakukan ialah memuatkan kernel dari cakera dan memindahkannya ke memori. Selepas itu, pemuat but menukar CPU kepada mod dilindungi 32-bit, di mana keseronokan bermula. Menukar mod memerlukan penyediaan Global Descriptor Table (GDT) untuk mengurus segmen memori dan mendayakan bit Protection Enable (PE) dalam daftar kawalan CPU. Jika anda tersilap melakukan ini, sistem sama ada membeku atau ranap ke dalam gelung but, yang berlaku kepada saya lebih kerap daripada yang saya mahu akui.

Mod Sebenar lwn Mod Dilindungi

Dalam mod sebenar, semuanya sangat terhad – daftar 16-bit, akses memori 1MB, tiada perlindungan memori. Inilah sebabnya mengapa menukar kepada mod dilindungi adalah sangat penting. Setelah berada dalam mod terlindung, CPU anda mempunyai akses kepada daftar 32-bit, pengalamatan memori yang lebih besar dan ciri lanjutan seperti multitasking dan paging (memori maya). Pemuat but adalah tentang membuat peralihan ini berlaku dengan lancar.


2. Memasuki Kernel: Di Mana Sihir Berlaku

Setelah CPU bertukar kepada mod dilindungi, pemuat but menyerahkan kawalan ke kernel. Kernel ialah teras sistem pengendalian dan bertanggungjawab mengurus segala-galanya: perkakasan, memori, proses dan sumber sistem.

Apabila kernel bermula, ia perlu menyediakan beberapa sistem kritikal:

  1. Paging: Ini ialah skim pengurusan memori yang membolehkan OS memberikan setiap proses ruang memori mayanya sendiri. Tanpanya, semua proses akan berkongsi memori yang sama, iaitu resipi untuk bencana.
  2. Pengendalian Gangguan: Kernel perlu mengendalikan gangguan, yang merupakan isyarat daripada perkakasan (seperti papan kekunci atau pemacu cakera) bahawa sesuatu memerlukan perhatian segera. Untuk melakukan ini, anda perlu mentakrifkan Jadual Deskriptor Interrupt (IDT), yang memetakan gangguan kepada fungsi pengendali tertentu dalam kernel.
  3. Penjadualan Tugas: Dalam mana-mana OS yang menjalankan berbilang proses, kernel memerlukan cara untuk mengurus masa CPU. Penjadual menentukan proses mana yang mendapat masa dan masa CPU, memastikan sistem responsif dan cekap.

Membina kernel adalah tugas yang panjang dan kompleks, tetapi ia juga merupakan salah satu yang paling bermanfaat. Di sinilah anda dapat melihat kerja dalaman sistem pengendalian dan mengawal setiap butiran kecil tentang cara mesin anda berkelakuan.


3. Memilih Bahasa Anda

Apabila membina OS, anda perlu memilih bahasa pengaturcaraan yang sesuai untuk setiap tugas. pemuat but biasanya ditulis dalam pemasangan, kerana anda perlu mengawal perkakasan secara langsung. Walau bagaimanapun, sebaik sahaja anda berada dalam mod dilindungi dan menggunakan kernel, kebanyakan pembangun bertukar kepada C kerana ia memberikan anda kawalan tahap rendah tanpa perlu menulis segala-galanya dalam pemasangan.

Sesetengah pembangun menggunakan C untuk pembangunan kernel, kerana ia menawarkan ciri berorientasikan objek yang boleh memudahkan pengurusan sistem yang kompleks. Walau bagaimanapun, C datang dengan overhed tambahan, dan pengurusan memori dalam C boleh menjadi lebih rumit dalam persekitaran OS. C memberikan anda kuasa mentah dan kesederhanaan yang diperlukan untuk pengaturcaraan sistem.


4. Keselamatan: Jangan Terhempas Kapal Terbang

Dalam pembangunan OS, keselamatan adalah kritikal. Tidak seperti pengaturcaraan peringkat tinggi, di mana ranap sistem mungkin hanya bermaksud mesej ralat atau penutupan aplikasi, dalam pembangunan OS, ranap sistem biasanya bermaksud but semula sistem penuh. Anda bekerja dengan memori secara langsung, yang bermaksud jika anda merosakkan pengurusan memori, anda boleh merosakkan data sistem, menulis ganti struktur penting atau menyebabkan panik kernel.

Inti perlu melaksanakan perlindungan memori untuk menghalang satu proses daripada menimpa memori yang lain. Ini dilakukan menggunakan paging, yang memetakan setiap proses ke ruang memori mayanya sendiri. Jika anda salah melakukan ini, keseluruhan sistem menjadi tidak stabil, dan anda akan mengejar pepijat memori selama beberapa hari. Percayalah, saya pernah ke sana.


5. Mengoptimumkan Kepantasan

Kelajuan ialah faktor utama dalam menjadikan OS anda berasa responsif. Kernel yang perlahan bermaksud sistem yang perlahan, jadi pengoptimuman untuk prestasi adalah penting. Berikut ialah beberapa bidang utama yang menentukan kelajuan:

  • Pengendalian Gangguan: Daripada sentiasa mengundi untuk input (yang membazirkan kitaran CPU), anda harus menyediakan gangguan perkakasan. Dengan cara ini, CPU hanya bertindak balas apabila terdapat input sebenar, seperti penekan kekunci atau paket rangkaian tiba.
  • Penjadualan Tugas: Penjadual yang baik akan mengimbangi masa CPU antara proses dengan cekap, memastikan tiada proses berlaku sepanjang masa CPU manakala yang lain kelaparan. Terdapat banyak algoritma penjadualan yang berbeza untuk dipilih, seperti round-robin atau berasaskan keutamaan penjadualan.
  • Lazy Loading: Jangan muatkan semuanya ke dalam memori sekaligus. Laksanakan kelui permintaan, di mana hanya bahagian program yang sebenarnya digunakan dimuatkan ke dalam memori. Ini membantu menjimatkan memori dan mempercepatkan prestasi sistem.

6. Menyediakan Pemacu Asas

Sekarang anda telah menjalankan kernel, tiba masanya untuk membina pemacu untuk berinteraksi dengan perkakasan. Pemacu ialah jambatan antara OS anda dan perkakasan, membolehkan OS berkomunikasi dengan perkara seperti papan kekunci, paparan dan pemacu cakera.

6.1 Pemacu Video

Pada mulanya, OS anda mungkin akan bermula dalam mod teks, di mana anda mencetak aksara terus ke memori video (biasanya di alamat 0xB8000). Ini bagus untuk nyahpepijat dan output asas, tetapi akhirnya, anda akan mahu beralih ke antara muka pengguna grafik (GUI). Ini memerlukan pemacu video yang boleh mengurus kawalan tahap piksel, resolusi skrin dan kedalaman warna.

Menyediakan pemacu video ialah langkah besar ke arah mencipta OS grafik, tetapi ia juga merupakan salah satu tugas yang lebih kompleks kerana ia melibatkan pemahaman cara perkakasan paparan anda berfungsi dan mengurus sejumlah besar data untuk setiap bingkai.

6.2 Pemacu Papan Kekunci

pemacu papan kekunci ialah salah satu bahagian terpenting dalam OS interaktif. Apabila anda menekan kekunci, papan kekunci menghantar kod imbasan ke CPU. Tugas pemacu papan kekunci adalah untuk menterjemahkan kod imbasan itu kepada watak atau tindakan yang boleh difahami oleh OS. Ini melibatkan penyediaan pengendali gangguan untuk IRQ1, gangguan perkakasan yang dihasilkan oleh papan kekunci.

Sebaik sahaja pemacu papan kekunci berfungsi, anda boleh mula membina antara muka pengguna yang lebih kompleks, mengambil input daripada pengguna dan memproses arahan.

6.3 Pemandu I/O

Pemacu I/O ialah perkara yang membolehkan OS anda membaca dan menulis ke cakera. Ini penting untuk perkara seperti memuatkan atur cara, menyimpan fail dan menyimpan data. Pada mulanya, anda mungkin akan berinteraksi dengan cakera menggunakan gangguan BIOS, tetapi apabila OS anda matang, anda akan mahu beralih ke lebih banyak

kaedah I/O lanjutan yang tidak bergantung pada BIOS, seperti berkomunikasi terus dengan pengawal cakera.


7. Menulis Shell: Antara Muka Pengguna

Sebaik sahaja pemacu asas anda berfungsi, tiba masanya untuk membina shell – antara muka baris perintah (CLI) yang membolehkan pengguna berinteraksi dengan OS. Shell ialah tempat pengguna boleh menaip arahan, melaksanakan program dan berinteraksi dengan sistem fail.

Melaksanakan shell ialah langkah yang menarik kerana ia merupakan salah satu tempat pertama OS anda mula berasa interaktif. Anda perlu mengendalikan input pengguna (dari papan kekunci), memproses arahan dan melaksanakan program. Di sinilah juga anda mula melihat kepentingan keupayaan kernel anda untuk berbilang tugas dan mengurus proses dengan cekap.


8. Membina Sistem Fail Tersuai

sistem fail ialah perkara yang membolehkan OS anda menyimpan dan mendapatkan semula data pada cakera. Walaupun anda boleh menggunakan sistem fail sedia ada (seperti FAT atau ext4), membina sistem fail tersuai anda sendiri memberi anda lebih kawalan dan boleh menjadi cabaran yang menyeronokkan.

Sistem fail asas hendaklah:

  • Peruntukkan ruang pada cakera untuk fail baharu.
  • Jejak nama fail, saiz fail dan metadata.
  • Benarkan membaca dan menulis fail dengan cekap.

Apabila OS anda berkembang, anda juga perlu mengendalikan ciri yang lebih maju seperti:

  • Direktori: Menyusun fail ke dalam hierarki.
  • Kebenaran: Mengawal siapa yang boleh membaca, menulis atau melaksanakan fail.
  • Pecahan: Menangani fail yang terpecah merentas berbilang kawasan cakera.

Merancang sistem fail adalah sukar kerana ia melibatkan pengimbangan prestasi, kebolehpercayaan dan kemudahan penggunaan. Sistem fail yang direka bentuk dengan buruk boleh menyebabkan kerosakan data, prestasi perlahan atau ruang terbuang pada cakera.


9. Menambah Pemacu Tetikus: Klik dan Alih

Sekarang OS anda mempunyai CLI dan boleh mengendalikan input papan kekunci, tiba masanya untuk menambah sokongan tetikus. Pemacu tetikus bertanggungjawab untuk menjejaki pergerakan tetikus dan menterjemahkannya ke dalam tindakan pada skrin seperti menggerakkan kursor atau mengklik butang.

Membina pemacu tetikus melibatkan pengendalian IRQ12, gangguan perkakasan yang dijana oleh tetikus dan memproses data pergerakan. Setelah anda memasang pemacu tetikus, anda boleh mula berfikir tentang membina antara muka pengguna grafik (GUI).


10. Membina GUI Mudah

Satu antara muka pengguna grafik (GUI) membawa OS anda daripada antara muka baris arahan kepada sesuatu yang kelihatan dan kelihatan seperti persekitaran desktop moden. Pada peringkat ini, anda perlu membina tetingkap, butang, menu dan elemen interaktif lain yang boleh diklik oleh pengguna dengan tetikus.

Mencipta GUI melibatkan pengurusan perenderan grafik (melukis tetingkap dan ikon), mengendalikan peristiwa input (klik, menekan kekunci, dsb.), dan melaksanakan sistem untuk mengurus berbilang tetingkap dan aplikasi.

Pada mulanya, GUI anda mungkin sangat asas – hanya satu tetingkap yang boleh berinteraksi dengan pengguna. Tetapi apabila OS anda semakin matang, anda perlu menambah ciri yang lebih maju seperti saiz semula tetingkap, fungsi seret dan lepas dan animasi.


11. Mengendalikan Windows dan Acara

Setelah anda menyediakan asas GUI, langkah seterusnya ialah membina sistem untuk mengurus tetingkap dan acara. Ini melibatkan pengendalian berbilang tetingkap serentak, setiap satu berpotensi menjalankan aplikasi yang berbeza dan memastikan setiap tetingkap menerima peristiwa input yang betul (seperti klik tetikus atau penekanan papan kekunci).

Anda juga perlu melaksanakan tetingkap perintah-z (tetingkap yang mana di atas), meminimumkan/memaksimumkan dan menyeret. Di sinilah keadaan mula berasa lebih seperti persekitaran desktop tradisional.


12. Mencipta Apl Notepad: Dari Klik ke Taip

Untuk menjadikan GUI anda lebih berfungsi, anda perlu membina aplikasi asas, seperti apl Notepad. Apl Notepad ialah penyunting teks ringkas yang membolehkan pengguna menaip, mengedit dan menyimpan fail. Membina apl seperti ini melibatkan:

  • Mengendalikan input teks dari papan kekunci.
  • Memaparkan teks ke skrin.
  • Membenarkan operasi fail asas seperti buka, simpan dan tutup.

Ini adalah latihan yang hebat dalam menyusun segala-galanya: GUI anda, sistem fail anda dan pengendalian input anda semuanya dimainkan di sini. Sebaik sahaja anda mempunyai apl Notepad yang berfungsi, anda akan mempunyai asas OS yang berfungsi sepenuhnya.


13. Sentuhan Akhir: Menjadikannya Terasa Seperti OS

Pada ketika ini, OS anda berfungsi, tetapi sentiasa ada butiran kecil yang menjadikannya lebih digilap. Perkara seperti:

  • Akaun dan kebenaran pengguna: Membenarkan berbilang pengguna mempunyai tetapan dan fail mereka sendiri.
  • Rangkaian: Menambah sokongan untuk TCP/IP supaya OS anda boleh menyambung ke Internet.
  • Panggilan sistem: Mencipta antara muka yang boleh digunakan oleh aplikasi untuk berinteraksi dengan kernel.

Setiap butiran kecil yang anda tambah mendekatkan OS anda kepada perasaan seperti sistem yang lengkap. Ia adalah proses yang panjang dan mencabar, tetapi pada akhirnya, anda akan mencipta sesuatu yang benar-benar unik - sistem pengendalian yang dibina dari awal.

Atas ialah kandungan terperinci Pembangunan OS (Kebenaran). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Mengekodkan OS berasaskan linuxArtikel seterusnya:Mengekodkan OS berasaskan linux