Ayrıntılı Linux çekirdek analizi - Linux mimarisine ve çekirdek kaynak koduna giriş

Genel Bakış

Bir süre önce, arkadaşım linux çekirdeğinin içeriğini düzenlemeyi istedi ve Linux çekirdeğini, esas olarak linux mimarisinin ve linux kernel kaynak kodunun iki yönünden düzenlemek için zaman ayırdı.

Linux mimarisi

1. Linux mimarisi (Linux sistem bileşimi)

Linux, aşağıdaki şekilde gösterildiği gibi kullanıcı alanı ve çekirdek alanı olarak iki kısma ayrılabilir:

a) Kullanıcı alanı şunları içerir: Kullanıcı uygulaması, C kütüphanesi

b) Çekirdek alanı şunları içerir: Sistem çağrısı arayüzü, çekirdek (dar çekirdek), platform mimarisiyle ilgili kod

2. Neden çekirdek alanı ve kullanıcı alanı olarak bölünmüştür?

U-boot'u analiz ettiğimizde, cpu'muzun farklı çalışma modlarında erişebildiği registerların aynı olmadığından bahsetmiştik, bu yüzden işletim sistemimizi korumak ve kullanıcı programlarının çekirdeği çökertmesini önlemek için devam ettik Çekirdek alanı ve kullanıcı alanı bölümü.

a) Kol işlemci çalışma modu bölümü: usr, FIQ, IRQ, svc, abt, und, sys

b) X86 işlemci çalışma modu bölümü: Ring0 Ring3, Ayrıcalıklı komutlar Ring0 altında çalıştırılabilir ve IO cihazlarına erişilebilir, Ring3'ün birçok kısıtlaması vardır

Not: Kullanıcı alanından çekirdek alanına aktarımı sistem çağrıları ve donanım kesintileri ile tamamlayabiliriz.

3. Linux çekirdek yapısı (genelleştirilmiş çekirdek)

Linux çekirdeği, aşağıdaki şekilde gösterildiği gibi yedi bölümden oluşur:

a) Sistem Çağrı Arayüzü (SCI): Açın, okuyun, yazın ve diğer sistem çağrıları

b) Süreç Yönetimi (PM): Süreç oluşturun, süreci silin, süreci planlayın vb.

c) Bellek Yönetimi (MM): Bellek ayırma, yönetim vb.

d) Sanal Dosya Sistemi (VFS): Birden çok dosya sistemi için birleşik bir işlem arabirimi sağlayın

e) Ağ protokol yığını: Çeşitli ağ protokolleri sağlayın

f) CPU mimarisi ile ilgili kod (Arch): Taşınabilirliği geliştirmek için

g) Aygıt Sürücüsü (DD): Çekirdek kodunun yaklaşık% 70'ini oluşturan çeşitli aygıt sürücüleri

Linux çekirdek kaynak koduna giriş

1. Kaynak kodu edinimi

Linux çekirdeğini edinmenin iki yolu vardır, biri doğrudan www.kernel.org'dan elde etmek, diğeri ise git kullanarak elde etmektir.

2. Kaynak dizine giriş

Kaynak kodu esas olarak aşağıdaki dizinleri içerir (önemli dizinler tanıtılmıştır):

a) Kemer dizini: İşlemci ile ilgili kodu saklayın. Belirli CPU'lara karşılık gelen alt dizinler vardır.Her alt dizinin üç alt dizini vardır: sistem önyükleme ve depolama yönetimine karşılık gelen önyükleme, mm ve çekirdek ve sistem çağrıları.

b) Dizini dahil et: Çekirdeğin ihtiyaç duyduğu başlık dosyası dizinlerinin çoğu. Platformdan bağımsız olanlar include / linux alt dizinine yerleştirilir ve platformla ilgili olanlar da include'in ilgili alt dizinine yerleştirilir.

c) fs dizini: Çeşitli dosya sistemlerinin uygulama kodunu saklayın.

d) init dizini: İnit alt dizini çekirdek başlatma kodunu içerir (sistemin önyükleme kodunu değil). Çekirdeğin nasıl çalıştığını incelemek için kullanılabilecek main.c ve version.c adlı iki dosya içerir.

e) ipc dizini: Çekirdek süreçler arasındaki iletişim kodunu içerir.

f) çekirdek dizini: Çekirdek yönetimi için temel kodu içerir. Donanımla ilgili kod, arch / * / kernel dizinine yerleştirilir.

g) mm dizini: Tüm hafıza yönetim kodunu içerir. Donanımla ilgili bellek yönetimi kodu arch / * / mm dizininde bulunur.

h) komut dosyaları dizini: Çekirdeği yapılandırmak için komut dosyaları içerir.

ben) lib dizini: Temel kütüphane kodunu içerir, donanımla ilgili kütüphane kodu arch / * / lib / dizinine yerleştirilir

Alan sınırlı, önce linux çekirdeği tanıtılacak ve ardından linux çekirdeğinin diğer yönlerine derinlemesine bir giriş yapacağız.İlgilenen arkadaşlar buna dikkat edebilir!

Marka, DS7'yi kısıtlamanın tek nedeni mi olacak? Yeni araba yorum yapmalı
önceki
Apple, iOS11 ekranının yan tarafındaki 3D Touch anahtarının sonraki bir sürümde geri döneceğini resmen onayladı!
Sonraki
Zhao Liying, "Bilgi" nin yerini alıyor. Ağızdan ağza vermedeki düşüşün bir nedeni var gibi görünüyor ve Uydu TV'nin sorumluluktan kaçması zor.
Autohomeun ilk çeyrekte net geliri 1.288 milyar yuan oldu ve yıllık büyüme için sağlam bir temel oluşturdu
Oracle yedekleme ve kurtarma Flashback-flashback iptali
Yang Mi'nin boşanmasının ardından, Hong Kong devleri tekrar boşandıklarını söylediler ve Guo Jingjing, otoriter tavrını kaybetmeden dışarı çıktı.
Soros'un kısaltması mı? Facebook "ikinci komuta" ifşa edildi ve astlarına soruşturma emri verdi
Reklam vermek için üye satın alın! 9.9 yuan Mi Aylık Kart burada Netizenler: Para için deli misiniz?
Her türlü anahtar bağlantı şeması, bu pratik elektrik şemaları kesinlikle sizin için faydalı olacaktır!
Çocukken yemiş olmalısın! Şeker hapının mucidi Gu Fangzhou öldü, çocuk felcini ortadan kaldırdı
İOS11'i yükseltmek güç tüketiyor ve takılıyor mu? Size iOS10.3.3'e geri dönmeyi öğretin!
Sun Li, oğlunu ve kızını Japonya'da oynamaya götürdü ve erkek ve kız kardeşin fotoğrafları çekilerek Xiaohua'nın zarif giyinmesine ve görmezden gelmesine yardım etti.
Bu yerli cep telefonu markası ölecek, bir kez Apple iPhone'u asmakla tehdit edildi, netizenler alkışladı!
Akış ölçerleri biliyor musunuz? Akış ölçeri tanıtmak için en iyi makale budur, animasyon ekranını kaçırmayın
To Top