Linux koruma halkaları kullanıyor mu?
Koruma Halkaları
Bu, aralarındaki bir segment ve izin hiyerarşisine izin verir. Çapraz segment çağrısı, tam olarak bir sistem çağrısı gibi sesler fark etmiş olabilirsiniz. Linux X86 Assembly’e daha önce baktıysanız, bir sistem çağrısı yapmanın standart yolu, 0x80 kesintisini artıran INT 0x80’dir . Bir kesinti işlemciyi durdurur ve daha sonra bir çağrı kapısı ile aynı çalışan bir kesinti kapısına gider – ayrıcalık seviyesini değiştirir ve sizi başka bir kod alanına sıçrar .
Linux koruma halkaları kullanıyor mu?
İşletim sisteminin en büyük görevlerinden birinin güvenliği uygulamak olduğunu belirttik; Bu, bir uygulamanın veya kullanıcının sistemde çalışan başka bir şeye müdahale etmesine izin vermemek. Bu, uygulamaların birbirlerinin belleği veya dosyalarının üzerine yazamaması ve yalnızca sistem kaynaklarına göre sistem kaynaklarına erişim gösterememesi gerektiği anlamına gelir.
Ancak, bir uygulama çalıştırılırken işlemciyi özel olarak kullanır. Bir sonraki bölümdeki süreçleri incelediğimizde bunun nasıl çalıştığını görüyoruz. Uygulamanın yalnızca sahip olduğu belleğe erişmesini sağlamak, bir sonraki bölümden sonraki bölümde incelediğimiz sanal bellek sistemi tarafından uygulanır. Temel nokta, donanımın bu kuralların uygulanmasından sorumlu olmasıdır.
İncelediğimiz Sistem Çağrı Arabirimi, Sistem Kaynaklarına Ulaşan Uygulamanın Kapısıdır. Çekirdek, bir sistem çağrısı yoluyla uygulamayı kaynak talep etmeye zorlayarak, çekirdek ne tür erişim sağlanabileceğine dair kurallar uygulayabilir. Örneğin, bir uygulama diskte bir dosyayı açmak için bir açık () sistem çağrısı yaptığında, kullanıcının izinlerini dosya izinlerine karşı kontrol eder ve erişime izin verir veya reddeder.
4 . 1 . 1 ayrıcalık seviyesi
Donanım koruması genellikle çekirdek bir operasyon kümesinin etrafında bir dizi eşmerkezli halk olarak görülebilir.
X86’da ayrıcalık seviyeleri
Şekil 4 . 1 . 1 . 1 Yüzük
İç halkada en korunan talimatlar vardır; sadece çekirdeğin aramasına izin verilmeli. Örneğin, işlemciyi durdurmak için HLT talimatının bir kullanıcı uygulaması tarafından çalıştırılmasına izin verilmemelidir, çünkü tüm bilgisayarın çalışmasını durdurur. Ancak, bilgisayar meşru bir şekilde kapatıldığında çekirdeğin bu talimatı arayabilmesi gerekir. 1
Her iç halka, daha fazla bir halka ile korunan talimatlara erişebilir, ancak halka içinde bir daha fazla korunamaz. Tüm mimarilerin yukarıdaki gibi birden fazla yüzük seviyesi yoktur, ancak çoğu ya en azından “çekirdek” ve “kullanıcı” seviyesi sağlar.
4 . 1 . 1 . 1 386 Koruma Modeli
386 koruma modelinin dört halkası vardır, ancak çoğu işletim sistemi (Linux ve Windows gibi), çok fazla ayrık koruma seviyesine izin vermeyen diğer mimarilerle uyumluluğu korumak için sadece ikisini kullanır.
386 Sistemde çalışan her bir uygulama kodunu yaparak ayrıcalıkları korur, küçük bir tanımlayıcıya sahiptir: kod tanımlayıcısı, diğer şeylerin yanı sıra ayrıcalık seviyesini tanımlar. Uygulama kodu çalıştırırken, kod tanımlayıcısı tarafından tanımlanan bölge dışında başka bir koda atlarken, hedefin ayrıcalık seviyesi kontrol edilir. Şu anda çalışan koddan daha yüksekse, atlama donanım tarafından izin verilmez (ve uygulama çökecektir).
4 . 1 . 1 . 2 Ayrıcalık Yükseltme
Uygulamalar, ayrıcalık seviyelerini yalnızca bir sistem çağrısı uygulama talimatı gibi, buna izin veren belirli çağrılarla yükseltebilir. Bunlar genellikle bir Çağrı Kapısı Çünkü onlar sadece fiziksel bir kapı olarak işlev görürler; Aksi takdirde aşılmaz bir duvardan küçük bir giriş. Bu talimat olarak adlandırıldığında, donanımın çalışan uygulamasını nasıl durdurduğunu ve ellerin çekirdeğe nasıl kontrol ettiğini gördük. Çekirdek bekçi olarak hareket etmelidir; kapıdan kötü bir şey gelmemesini sağlamak. Bu, yapmaması gereken hiçbir şey yapmaya aldanmayacağından emin olmak için sistem çağrısı bağımsız değişkenlerini dikkatlice kontrol etmesi gerektiği anlamına gelir (eğer olabilirse, bu bir güvenlik hatasıdır). Çekirdek en içteki halkada çalışırken, istediği herhangi bir işlem yapma izinleri vardır; Bittiğinde, kontrolü tekrar daha düşük ayrıcalık seviyesiyle çalışacak uygulamaya geri döndürür.
4 . 1 . 1 . 3 hızlı sistem çağrısı
Yukarıda açıklandığı gibi tuzaklarla ilgili bir sorun, işlemcinin uygulaması için çok pahalı olmalarıdır. Bağlam geçmeden önce kaydedilecek çok fazla durum var. Modern işlemciler bu ek yükü fark ettiler ve onu azaltmaya çalıştılar.
Yukarıda açıklanan çağrı kapısı mekanizmasını anlamak, işlemci tarafından kullanılan ustaca ama karmaşık segmentasyon şemasının araştırılmasını gerektirir. Segmentasyonun orijinal nedeni, Şekil 4’te gösterildiği gibi, bir adres için kayıtta bulunan 16 bitten daha fazlasını kullanabilmekti . 1 . 1 . 3 . 1, x86 segmentasyon adresleme.
Segmentasyon Bir işlemcinin adres alanını parçalara bölerek genişletiyor. İşlemci özel segment kayıtlarını tutar ve adresler bir segment kaydı ve ofset kombinasyonu ile belirtilir. Son adresi bulmak için segment kaydının değeri ofset kısmına eklenir.
Şekil 4 . 1 . 1 . 3 . 1 x86 segmentasyon adresleme
X86 32 bit kayıtlara geçtiğinde, segmentasyon şeması kaldı, ancak farklı bir formatta. Sabit segment boyutlarından ziyade, segmentlerin herhangi bir boyutta olmasına izin verilir. Bu, işlemcinin kullandığı tüm bu farklı segmentleri ve boyutlarını takip etmesi gerektiği anlamına gelir Tanımlayıcılar. Herkes için mevcut olan segment tanımlayıcıları Global Tanımlayıcı Tablo veya kısaca GDT. Her işlemin GDT’deki girişlere işaret eden bir dizi kayıt vardır; Bunlar sürecin erişebileceği segmentlerdir (ayrıca yerel tanımlayıcı tabloları ve hepsi intera
Anahtar noktaları:
- Linux, uygulamalar ve kullanıcılar arasındaki müdahaleyi önlemek için güvenliği uygular.
- Donanım, bellek ve kaynak erişimi ile ilgili kuralları zorlar.
- Sistem çağrı arayüzü, sistem kaynaklarına erişmek için uygulamaların bir geçit görevi görür.
- Ayrıcalık seviyeleri belirli talimatlara ve işlemlere erişimi belirleyin.
- 386 koruma modelinin dört halkası vardır, ancak çoğu işletim sistemi sadece iki kullanır.
- Her uygulama kodunun ayrıcalık seviyesini tanımlayan bir kod tanımlayıcısı vardır.
- Uygulamalar ayrıcalık seviyelerini yalnızca sistem çağrıları gibi belirli çağrılarla yükseltebilir.
- Çekirdek, sistem çağrılarının güvenliğini sağlamak için bir bekçi görevi görür.
- Hızlı sistem çağrıları, bağlam değiştirme ek yükünü azaltmayı amaçlıyor.
- X86 segmentasyon şeması, işlemcinin adres alanını genişletir.
Sorular:
- Bir işletim sisteminde güvenliği uygulamanın amacı nedir??
- Donanım bellek erişim kurallarını nasıl zorlar??
- Sistem arayüzü, sistem kaynaklarına erişmede hangi rol oynar??
- Donanım korumasında ayrıcalık seviyeleri nasıl kullanılır??
- 386 koruma modelinde kaç yüzük var?
- Kod tanımlayıcı nedir?
- Uygulamalar ayrıcalık seviyelerini nasıl artırabilir??
- Bir bekçi olarak çekirdeğin rolü nedir?
- Hızlı sistem çağrılarının amacı nedir?
- X86 işlemcide segmentasyon neden tanıtıldı??
- X86 segmentasyon şeması nasıl çalışır?
- Segment tanımlayıcıları nedir ve nerede saklanırlar?
Koruma Halkaları
Bu, aralarındaki bir segment ve izin hiyerarşisine izin verir. Çapraz segment çağrısı, tam olarak bir sistem çağrısı gibi sesler fark etmiş olabilirsiniz. Linux X86 Assembly’e daha önce baktıysanız, bir sistem çağrısı yapmanın standart yolu, 0x80 kesintisini artıran INT 0x80’dir . Bir kesinti işlemciyi durdurur ve daha sonra bir çağrı kapısı ile aynı çalışan bir kesinti kapısına gider – ayrıcalık seviyesini değiştirir ve sizi başka bir kod alanına sıçrar .
Linux koruma halkaları kullanıyor mu?
İşletim sisteminin en büyük görevlerinden birinin güvenliği uygulamak olduğunu belirttik; Bu, bir uygulamanın veya kullanıcının sistemde çalışan başka bir şeye müdahale etmesine izin vermemek. Bu, uygulamaların birbirlerinin belleği veya dosyalarının üzerine yazamaması ve yalnızca sistem kaynaklarına göre sistem kaynaklarına erişim gösterememesi gerektiği anlamına gelir.
Ancak, bir uygulama çalıştırılırken işlemciyi özel olarak kullanır. Bir sonraki bölümdeki süreçleri incelediğimizde bunun nasıl çalıştığını görüyoruz. Uygulamanın yalnızca sahip olduğu belleğe erişmesini sağlamak, bir sonraki bölümden sonraki bölümde incelediğimiz sanal bellek sistemi tarafından uygulanır. Temel nokta, donanımın bu kuralların uygulanmasından sorumlu olmasıdır.
İncelediğimiz Sistem Çağrı Arabirimi, Sistem Kaynaklarına Ulaşan Uygulamanın Kapısıdır. Çekirdek, bir sistem çağrısı yoluyla uygulamayı kaynak talep etmeye zorlayarak, çekirdek ne tür erişim sağlanabileceğine dair kurallar uygulayabilir. Örneğin, bir uygulama diskte bir dosyayı açmak için bir açık () sistem çağrısı yaptığında, kullanıcının izinlerini dosya izinlerine karşı kontrol eder ve erişime izin verir veya reddeder.
4 . 1 . 1 ayrıcalık seviyesi
Donanım koruması genellikle çekirdek bir operasyon kümesinin etrafında bir dizi eşmerkezli halk olarak görülebilir.
X86’da ayrıcalık seviyeleri
Şekil 4 . 1 . 1 . 1 Yüzük
İç halkada en korunan talimatlar vardır; sadece çekirdeğin aramasına izin verilmeli. Örneğin, işlemciyi durdurmak için HLT talimatının bir kullanıcı uygulaması tarafından çalıştırılmasına izin verilmemelidir, çünkü tüm bilgisayarın çalışmasını durdurur. Ancak, bilgisayar meşru bir şekilde kapatıldığında çekirdeğin bu talimatı arayabilmesi gerekir. 1
Her iç halka, daha fazla bir halka ile korunan talimatlara erişebilir, ancak halka içinde bir daha fazla korunamaz. Tüm mimarilerin yukarıdaki gibi birden fazla yüzük seviyesi yoktur, ancak çoğu ya en azından “çekirdek” ve “kullanıcı” seviyesi sağlar.
4 . 1 . 1 . 1 386 Koruma Modeli
386 koruma modelinin dört halkası vardır, ancak çoğu işletim sistemi (Linux ve Windows gibi), şimdi çok sayıda ayrık koruma seviyesine izin veren diğer mimarilerle uyumluluğu korumak için sadece iki halkayı kullanır.
386 Sistemde çalışan her bir uygulama kodunu yaparak ayrıcalıkları korur, küçük bir tanımlayıcıya sahiptir: kod tanımlayıcısı, diğer şeylerin yanı sıra ayrıcalık seviyesini tanımlar. Uygulama kodu çalıştırırken, kod tanımlayıcısı tarafından tanımlanan bölge dışında başka bir koda atlarken, hedefin ayrıcalık seviyesi kontrol edilir. Şu anda çalışan koddan daha yüksekse, atlama donanım tarafından izin verilmez (ve uygulama çökecektir).
4 . 1 . 1 . 2 Ayrıcalık Yükseltme
Uygulamalar, ayrıcalık seviyelerini yalnızca bir sistem çağrısı uygulama talimatı gibi, buna izin veren belirli çağrılarla yükseltebilir. Bunlar genellikle bir Çağrı Kapısı Çünkü onlar sadece fiziksel bir kapı olarak işlev görürler; Aksi takdirde aşılmaz bir duvardan küçük bir giriş. Bu talimat olarak adlandırıldığında, donanımın çalışan uygulamasını nasıl durdurduğunu ve ellerin çekirdeğe nasıl kontrol ettiğini gördük. Çekirdek bekçi olarak hareket etmelidir; kapıdan kötü bir şey gelmemesini sağlamak. Bu, yapmaması gereken hiçbir şey yapmaya aldanmayacağından emin olmak için sistem çağrısı bağımsız değişkenlerini dikkatlice kontrol etmesi gerektiği anlamına gelir (eğer olabilirse, bu bir güvenlik hatasıdır). Çekirdek en içteki halkada çalışırken, istediği herhangi bir işlem yapma izinleri vardır; Bittiğinde, kontrolü tekrar daha düşük ayrıcalık seviyesiyle çalışacak uygulamaya geri döndürür.
4 . 1 . 1 . 3 hızlı sistem çağrısı
Yukarıda açıklandığı gibi tuzaklarla ilgili bir sorun, işlemcinin uygulaması için çok pahalı olmalarıdır. Bağlam geçmeden önce kaydedilecek çok fazla durum var. Modern işlemciler bu ek yükü fark ettiler ve onu azaltmaya çalıştılar.
Yukarıda açıklanan çağrı kapısı mekanizmasını anlamak, işlemci tarafından kullanılan ustaca ama karmaşık segmentasyon şemasının araştırılmasını gerektirir. Segmentasyonun orijinal nedeni, Şekil 4’te gösterildiği gibi, bir adres için kayıtta bulunan 16 bitten daha fazlasını kullanabilmekti . 1 . 1 . 3 . 1, x86 segmentasyon adresleme .
Segmentasyon Bir işlemcinin adres alanını parçalara bölerek genişletiyor. İşlemci özel segment kayıtlarını tutar ve adresler bir segment kaydı ve ofset kombinasyonu ile belirtilir. Son adresi bulmak için segment kaydının değeri ofset kısmına eklenir.
Şekil 4 . 1 . 1 . 3 . 1 x86 segmentasyon adresleme
X86 32 bit kayıtlara geçtiğinde, segmentasyon şeması kaldı, ancak farklı bir formatta. Sabit segment boyutlarından ziyade, segmentlerin herhangi bir boyutta olmasına izin verilir. Bu, işlemcinin kullandığı tüm bu farklı segmentleri ve boyutlarını takip etmesi gerektiği anlamına gelir Tanımlayıcılar. Herkes için mevcut olan segment tanımlayıcıları Global Tanımlayıcı Tablo veya kısaca GDT. Her işlemin GDT’deki girişlere işaret eden bir dizi kayıt vardır; Bunlar sürecin erişebileceği segmentlerdir (ayrıca yerel Tanımlayıcı tabloları ve hepsi görev durumu segmentleriyle etkileşime giriyor, ancak bu şimdi önemli değil). Genel durum Şekil 4’te gösterilmiştir . 1 . 1 . 3 . 2, x86 segmentleri .
X86 Segmentler. Bir “uzak çağrı” nın bir çağrı kapısından nasıl geçtiğine dikkat edin, bu da alt halka seviyesinde çalışan bir kod segmentine yönlendirir. Tüm kod adresleri için dolaylı olarak kullanılan kod segmenti seçicisini değiştirmenin tek yolu, çağrı mekanizması üzerinden. Böylece çağrı kapısı mekanizması, yeni bir segment tanımlayıcısı seçmek ve dolayısıyla koruma seviyelerini değiştirmek için, bilinen bir giriş noktasından geçiş yapmanız gerektiğini sağlar.
Şekil 4 . 1 . 1 . 3 . 2 x86 segment
İşletim sistemi, işlem durumunun bir parçası olarak segment kayıtlarını atadığından, işlemci donanımı şu anda çalışan işlemin hangi bellek segmentlerini erişebileceğini ve zorlayabileceğini bilir koruma Sürecin hiçbir şeye dokunmamasını sağlamak,. Sınırların dışına çıkarsa, Segmentasyon hatası, çoğu programcının aşina olduğu.
Kod çalıştırırken resim daha ilginç hale geliyor bir diğer segment. Bölüm 4’te tartışıldığı gibi . 1 . 1 . 1, 386 koruma modeli, x86 bunu halka, Halka 0 en yüksek izin olduğunda, halka 3 en düşüktür ve iç halkalar dış halkalara erişebilir, ancak bunun tersine.
Bölüm 4’te tartışıldığı gibi . 1 . 1 . 2, Ayrıcalık Yükseltme, Ring 3 kodu Ring 0 koduna atlamak istediğinde, aslında kod segmenti seçicisini farklı bir segmente işaret edecek şekilde değiştiriyor. Bunu yapmak için özel bir uzak çağrı Çağrı kapısından geçmesini sağlayan donanım. Çalışan işlemin yeni bir kod segmenti tanımlayıcısı seçmesinin başka bir yolu yoktur ve bu nedenle işlemci, bütünlüğü korumaktan sorumlu olan Ring 0 segmentindeki bilinen ofsette kod yürütmeye başlayacaktır (e.G. keyfi ve muhtemelen kötü niyetli kod okumamak ve yürütmemek. Elbette hain saldırganlar her zaman kodunuzu yapmanın yollarını arayacaktır!).
Bu, aralarındaki bir segment ve izin hiyerarşisine izin verir. Çapraz segment çağrısı, tam olarak bir sistem çağrısı gibi sesler fark etmiş olabilirsiniz. Linux X86 Assembly’e daha önce baktıysanız, bir sistem çağrısı yapmanın standart yolu, 0x80 kesintisini artıran INT 0x80’dir . Bir kesinti işlemciyi durdurur ve daha sonra bir çağrı kapısı ile aynı çalışan bir kesinti kapısına gider – ayrıcalık seviyesini değiştirir ve sizi başka bir kod alanına sıçrar .
Bu şemadaki sorun, yavaş. Tüm bu kontrolleri yapmak için çok çaba gerektirir ve yeni koda girmek için birçok kayıt kaydedilmelidir. Ve geri dönerken, her şeyin tekrar geri yüklenmesi gerekiyor.
Modern bir X86 sistem segmentasyonu ve dört seviyeli halka sistemi, sanal bellek sayesinde, Bölüm 6’da, sanal bellekte tam olarak tartışılan kullanılmaz . Segmentasyon değiştirmede gerçekten olan tek şey, esasen mod 3’ten (kullanıcılar uzayından) mod 0’a geçiş ve çekirdek içindeki sistem çağrı işleyici koduna atlayan sistem çağrılarıdır. Böylece işlemci ekstra sağlar hızlı sistem çağrısı Bir uzak çağrının genel doğasını kaldırarak bir INT 0x80 çağrısı üzerinden tüm süreci hızlandıran Sysenter (ve Sysexit’i geri almak) olarak adlandırılan talimatlar-yani herhangi bir halka seviyesinde herhangi bir segmente geçiş olasılığıdır-ve sadece belirli bir segmentte ve ofsette Ring 0 koduna geçiş çağrısını kısıtlayan talimatlar,.
Genel doğa, daha önce bilinen çok fazla bilgi ile değiştirildiğinden, tüm süreç hızlanabilir ve bu nedenle yukarıda belirtilen bir hızlı sistem çağrısı. Dikkat edilmesi gereken diğer bir şey, çekirdek kontrolü aldığında durumun korunmamasıdır. Çekirdek, devleti yok etmemeye dikkat etmelidir, ancak aynı zamanda sadece işi yapmak için gerektiği kadar az durumdan tasarruf etmenin ücretsiz olduğu anlamına gelir, bu nedenle bu konuda çok daha verimli olabilir. Bu çok RISC felsefesidir ve çizginin RISC ve CISC işlemcileri arasındaki nasıl bulanık olduğunu gösterir.
Bunun Linux çekirdeğinde nasıl uygulandığı hakkında daha fazla bilgi için bkz. Bölüm 8 . 1 . 1, Çekirdek Kütüphanesi .
4 . Çekirdek ile iletişim kurmanın 2 yolu
4 . 2 . 1 IOCTL
4 . 3 Dosya Sistemleri
Proc, sysfs, debugfs vb. Hakkında
Koruma Halkaları
Yüzük 0 öyle çekirdek moda. Halka 3 öyle kullanıcı moda. Diğer halkalar genellikle kullanılmaz. Sanal kutu sanal makinenin çekirdeğini içine yükler Halka 1.
Çekirdek modu vs kullanıcı modu yürütme
Çekirdek modunda, yürütme kodu temel donanıma tam ve sınırsız erişime sahiptir. Herhangi bir CPU talimatını yürütebilir ve herhangi bir bellek adresine başvurabilir. Kullanıcı modunda, yürütme kodunun donanıma veya referans belleğine doğrudan erişme yeteneği yoktur. Kullanıcı modunda çalışan kod, donanıma veya belleğe erişmek için Sistem API’lerine devredilmelidir.
Bu iki mod sadece etiket değildir; CPU donanımı tarafından uygulanırlar. Kullanıcı Modunda Kod Yürütme, görünüşünün dışında bir şey yapmaya çalışıyorsa- örneğin, ayrıcalıklı bir CPU talimatına erişmek veya erişimi olmayan belleği değiştirmek- tuzak istisnası atılır. Tüm sisteminizin çökmesi yerine, sadece belirli uygulama çöküyor. Bu kullanıcı modunun değeri.
“”
“” Eşleşen sonuç yok
Çekirdek Linux Mimarisine Giriş: Koruma Halkaları
Bu, Core Linux Mimarlık hakkındaki bir sonraki makalemiz, önceki makalede, kodun yürütülmesine izin verilen ayrıcalıklar gibi farklı işlemci modlarını öğrendik. Bu yüzden çekirdek moduna ve kullanıcı moduna ve esasen bugün aşağıdaki diyagramda bakacağımız koruma halkalarına baktık. Farklı koruma halkalarını görebiliriz.
Öyleyse’devam et ve başla
X86’da koruma halkaları:
İzin vermek’s önce x86 ne olduğunu tartışın? Ve neden buna ihtiyacımız var?
X86, masaüstü bilgisayarlar için en popüler bir işlemci mimarisidir ve akıllı telefonlara baktığınızda bu işlemcileri görebilirsiniz.e. Pil kullanımı ile daha verimli olduğu için mobil cihazlar için en popüler işlemci mimarisi. Ama masaüstü bilgisayarların yapmadığı gibi’Gerçekten biraz farkı olmalarına ihtiyacım var. X’i x86’da görebileceğiniz bir şey esasen’Sonunda 86 ile bir sayı söyleme.e. x86 Yani bir işlemci ailesini görebildiğinizde, birçok farklı olanı göreceksiniz, ancak her zaman 86’da bitecekler.
Bu yüzden koruma halkalarına daha derinlemesine gidiyoruz. Koruma halkalarına, daha önce tartıştığımız CPU ayrıcalık seviyelerinin grafiksel bir temsili olarak bakabiliriz. Aşağıdaki makalelerde, CPU mimarisine ve koruma halkalarının nasıl çalıştığı derinlemesine gideceğiz? Onunla düşük seviyeye gitmek gibi.
Bu CPU’yu zaten biliyorduk’S “Çekirdek modu” Bu eşittir “Yüzük 0” Diyagram ve CPU’da’S “Kullanıcı modu” başa çıkmak zorunda “Halka 3”. Burada halka 1 ve 2’yi düşünüyor olmalısınız. Esasen modern bir işletim sisteminde’Linux dahil olmak, x86 mimarilerinde sadece 0 ve halka 3’ü kullanır, çünkü “Sayfa” uygulandı.
Bu kesin bir hızlı gibi ve kimse yok’öyle. Bu yüzden Ring 0 ve Ring 3 kullanıyoruz.
Sayfa Tablosu, bir bilgisayar sisteminde sanal bellek sistemleri tarafından kullanılan bir bellek eşleme dosyasıdır. Modern mimariler tüm bu halkalara sahip olabilecek x86’ya sahip olsa da. Bazı sanallaştırma ortam halkasında, 1 aslında kullanılır. O’aslında sanal bir kutu veya sanal makine. VM’yi koyar’S Çekirdek Kodu Aslında halka 1 ve altı çizili makinenin gerçek çekirdek kodu, halka 0.
İzin vermek’s Devam edin ve bunun zaten bildiğimizi görün – eğer tüm süreçler halka 3’te daha önce konuştuğumuz gibi başlarsa, halka 0 ayrıcalıklarını nasıl yürütürler? Çünkü altı çizili işletim sistemi ince kullanıcı arayüzü veya uygulama veya işlemi ile ilgilenen çekirdek, bazen dosya sistemi modlarına veya giriş çıkışı şeylerine bakmamız gerekir. Bunlar esasen 0 ayrıcalıkları veya çekirdek ayrıcalıkları ile sınırlı halkalardır.
Peki nasıl ortaya çıkıyor? Bildiğimiz gibi giriş-çıktı işlemleri, dosya sistemi manipülasyonu vb. O’sistem çağrı arayüzü denen bir şey ve’S Ring 3’te yürütülen öğeler ve Ring 0’da yürütülen çekirdek alanı olan kullanıcı alanı arasında gerçekten başka bir aracılık.
Böylece kullanıcı alanları işlemleri esasen kullanılabilir. Bu arayüz,’Çekirdeğin bazı işlevlerinin kendisini çağırmasını sağlamak için bir tür çekirdek API. Öyleyse’S Bir sistem çağrısı nedir kontrol edin.
Sistem Çağrısı: Bir kullanıcı işlemi tarafından ayrıcalıklı bir eylem gerçekleştirme isteğidir.e. Bir Çekirdek Eylemi.
Kesmeler: CPU’ya yayılan bir sinyaldir ” Hemen dikkatinize ihtiyaç duyan bir olay var”.
Bir kesinti ne yapar? Nasıl faydalıdır? Sistem çağrısını yazılım tabanlı kesintiler gibi başlatabilirler. Dolayısıyla, daha modern CPU mimarilerindeki kod, kesinti yerine başka bir başlatma işlemi kullanabilir. Ama her şeyin arkasındaki ana süreç aynı.
BT’küçük bir küçük nüans ama bazen bu kesintiler daha yoğundur, emin olmaları gerekir. Bu yüzden daha modern sistemler, bu kesintiler yerine başka bir mimariye sahip olabilir. Yani alt çizgiler fikir aynı.
İzin vermek’S Sistem çağrısı örneğine gidin:
- Kullanıcı işleminin bir çekirdek eylemine ihtiyacı vardır, böylece bir kesinti başlatır.
- Kesme veya talimat CPU’yu Halka 0’a sokar ve kontrolü çekirdeğe geçirir.
- Çekirdek, kullanıcı işleminin ayrıcalıklara göre sistem çağrısına verilip verilmeyeceğini belirler.
- Verilirse, çekirdek sistem çağrısını yürütür.
- Bittikten sonra, çekirdek Ring 3’te bir değişiklik başlatır.
- Çekirdek kullanıcı işlemine geri kontrol sağlar.
Ziyaret etmek- Hosttens
Vishwajit Kale
Vishwajit Kale, 2015 yılında dijital pazarlama sahnesine girdi ve güvenilir web barındırma çözümleri sunmayı amaçlayan bir şirket olan Hostdens’in dijital pazarlama stratejistidir. Vishwajit, SEO ile birlikte dijital ve içerik pazarlamasında deneyimlidir. Teknoloji blogları yazmayı, seyahat etmeyi ve okumayı seviyor.
Vishwajit Kale
Vishwajit Kale, 2015 yılında dijital pazarlama sahnesine girdi ve güvenilir web barındırma çözümleri sunmayı amaçlayan bir şirket olan Hostdens’in dijital pazarlama stratejistidir. Vishwajit, SEO ile birlikte dijital ve içerik pazarlamasında deneyimlidir. Teknoloji blogları yazmayı, seyahat etmeyi ve okumayı seviyor.
Bir işletim sisteminin katmanları
İşletim sistemleri, her biri kendi ayrıcalıklarına sahip bir dizi ayrı katmana ayrılabilir. Bu sistem bir koruma halkası olarak bilinir. İşletim sistemi bir bilgisayarı yönetir’CPU’da işlem süresi ve belleğe erişim gibi kaynaklar. Bilgisayarlar genellikle aynı anda birden fazla yazılım işlemi yapıyor ve bunlar kaynaklara ve donanıma farklı erişim seviyeleri gerektirecektir.
İşletim sistemleri, her biri kendi ayrıcalıklarına sahip bir dizi ayrı katmana ayrılabilir. Bu sistem bir koruma halkası.
Koruma halkası nedir?
İşletim sistemi bir bilgisayarı yönetir’CPU’da işlem süresi ve belleğe erişim gibi kaynaklar. Bilgisayarlar genellikle aynı anda birden fazla yazılım işlemi yapıyor ve bunlar kaynaklara ve donanıma farklı erişim seviyeleri gerektirecektir.
Süreçler katmanlı olarak yürütülür “halka”, Her yüzüğün kaynaklara farklı erişim haklarına sahip olduğu yerlerde. Merkezi halka en yüksek ayrıcalıklara sahiptir ve sonraki her katman erişimi azaltmıştır. X86 işlemciler için bir koruma halkasının ortak bir uygulanması (ortak bir CPU türü), aşağıda açıklandığı gibi 0 ila 3 numaralı dört halkaya sahiptir.
Neden Katmanlar?
Tutmak istiyorum
öğrenme?
Bu içerik şuradan alındı
Raspberry Pi Vakfı Çevrimiçi Kursu,
Bilgisayar Sistemlerini Anlamak
Kursu Görüntüle
Katmanlı model iki ana fayda sağlar. İlk olarak, sistem çökmelerine karşı korur. Yüksek halkalardaki hatalar (daha az erişimi olan) genellikle kurtarılabilir. Bunun nedeni, sadece halka 0’ın belleğe ve CPU’ya doğrudan erişimi olmasıdır, bu nedenle dış halka çöküyorsa, veri kaybetmeden veya CPU’da bir hataya neden olmadan yeniden başlatılabilir. İkincisi, artan güvenlik sunuyor. Kaynaklara daha fazla erişim gerektiren talimatları yürütmek için işlem, işletim sisteminden izinleri talep etmelidir. İşletim Sistemi daha sonra talebin verilip verilmeyeceğine karar verebilir veya. Bu seçim süreci, sisteminizi istenmeyen veya kötü niyetli davranışlardan korumaya yardımcı olur.
Koruma halkasının parçaları
Yüzük 0 (en ayrıcalıklı) ve 3 (en az ayrıcalıklı)
Ring 0, çekirdek, çoğu işletim sisteminin merkezi bir parçasıdır ve her şeye erişebilir. Burada çalışan kodun çalıştığı söyleniyor çekirdek modu. Çekirdek modunda çalışan işlemler tüm sistemi etkileyebilir; Burada bir şey başarısız olursa, muhtemelen bir sistemin kapanmasına neden olur. Bu halkanın CPU’ya ve sistem belleğine doğrudan erişimi vardır, bu nedenle her ikisinin de kullanılmasını gerektiren herhangi bir talimat burada yürütülecektir.
En az ayrıcalıklı halka olan Ring 3, çalışan kullanıcı işlemleri için erişilebilir Kullanıcı modu. Bilgisayarınızda çalışan çoğu uygulamanın bulunduğu yer. Bu halkanın CPU veya belleğe doğrudan erişimi yoktur ve bu nedenle bunları 0 çalmaya dahil eden talimatları aktarmak zorundadır.
Halkalar 1 ve 2
Halkalar 1 ve 2, halka 3 (kullanıcı modu) olmayan özel ayrıcalıklara sahiptir. Ring 1, bilgisayarınıza bağlı donanımla etkileşim kurmak ve kontrol etmek için kullanılır. Hoparlörler veya kulaklıklar aracılığıyla bir şarkı çalmak veya monitörünüzde video görüntülemek, bu ringde çalışması gereken talimatlara örnektir. Ring 2, sistem depolama, yükleme veya dosyayı kaydetmesi gereken talimatlar için kullanılır. Bu tür izinler denir giriş Ve çıktı, Verileri Çalışma Belleğine (RAM) taşımayı içerdikleri için. Örneğin, depolamadan bir kelime belgesinin yüklenmesi, Ring 2’de olacaktır. Belgeyi görüntülemek ve düzenlemek, uygulama katmanı Ring 3’e düşer.
Tartışma
- Hesap makinesi programı gibi bilgisayarınızda çalışabilecek veya bir oyun oynayabilecek bir süreci düşünün. Ne tür talimatlar dahil olur ve hangi halkaları kullanırlar??
- Tüm kodlar Ring 0’da çalışırsa ne olacağını düşünüyorsunuz??