Benimle görüşmeci arasında işletim sistemi hakkında bir oyun | The Force Project

Yazar | Kılavuz Brother

Sorumlu Editör | Wu Xingling

Üretildi | CSDN Blogu

Herkese merhaba, ben Rehber kardeşim! Pek çok okuyucu, bilgi işlem işletim sistemlerinin bilgi noktalarının karmaşık olduğundan ve bunları okumak için fazla sabırları olmadığından şikayet eder, ancak röportajlar sırasında sık sık bunlarla karşılaşırlar. Bu yüzden derlediğim işletim sisteminin ortak sorunlarını getiriyorum! Bu makale, süreç yönetimi, bellek yönetimi, sanal bellek vb. Gibi daha önemli olduğunu düşündüğüm işletim sistemi ile ilgili bazı konuları özetlemektedir.

Deneme formatı, en sevilen görüşmeciler ve iş başvurusunda bulunanlar arasındaki diyalog yoluyla geliştirilir. Ek olarak, Brother Guide sadece üniversitedeyken işletim sistemleri okudu, ancak temelde unuttu.Bu makaleyi yazarken, birçok ilgili kitap ve blog okudu. Makalede eklenmesi veya iyileştirilmesi gereken herhangi bir şey varsa, bunu yorum bölümünde belirtebilirsiniz. İçeriğin iyi olduğunu düşünüyorsanız, tıklayıp izlemeyi unutmayın!

Ben şahsen işletim sistemini iyi öğrenmenin çok faydalı olduğunu düşünüyorum. Ayrıntılar için lütfen dün gezegende paylaştığım bir pasaja bakın:

Bu makale, işletim sistemlerinin bazı daha önemli kavramlarına genel bir bakış niteliğindedir.Derinlemesine çalışırsanız, kitabı dürüstçe okumanızı öneririm. Ek olarak, bu makalenin içeriğinin çoğu Modern İşletim Sisteminin üçüncü baskısına atıfta bulunuyor, çok teşekkür ederim.

İşletim sistemi temelleri

1.1 İşletim sistemi nedir?

Mülakatçı: Önce basit bir soru soralım! İşletim sistemi nedir?

Ben: Aşağıdaki dört nokta üzerinden size bir işletim sisteminin ne olduğunu tanıtmama izin verin!

  • İşletim Sistemi (İşletim Sistemi, işletim sistemi olarak anılır), bilgisayar donanımını ve yazılım kaynaklarını yöneten ve bir bilgisayar sisteminin temel ve temel taşı olan bir programdır;

  • İşletim sistemi esasen bilgisayarda çalışan bir yazılım programıdır;

  • İşletim sistemi, kullanıcıların sistemle etkileşim kurması için bir arayüz sağlar;

  • İşletim sistemi bir çekirdek ve bir kabuğa bölünmüştür (kabuğu, çekirdeği çevreleyen bir uygulama programı olarak anlayabiliriz ve çekirdek, donanımı çalıştırabilen bir programdır).

  • Çekirdek hakkında bir kelime daha: Çekirdek, sistemin işlemlerini, belleğini, aygıt sürücülerini, dosyalarını ve ağ sistemlerini vb. Yönetmekten sorumludur ve sistemin performansını ve kararlılığını belirler. Uygulamaları ve donanımı birbirine bağlayan bir köprüdür.

    Çekirdek, işletim sisteminin arkasındaki kara kutunun özüdür.

    1.2 Sistem çağrıları

    Görüşmeci: Sistem çağrısı nedir? Bana ayrıntılı olarak anlatır mısınız?

    Ben: Sistem çağrısını tanıtmadan önce, önce kullanıcı durumunu ve sistem durumunu anlayalım.

    Kaynaklara erişen sürecin özelliklerine göre, sürecin sistem üzerindeki işleyişini iki seviyeye ayırabiliriz:

  • Kullanıcı modu: Kullanıcı modunda çalışan işlem, kullanıcı programının verilerini doğrudan okuyabilir.

  • Sistem modu (çekirdek modu): Sistem modunda çalışan işlem veya programın bilgisayarın neredeyse tüm kaynaklarına kısıtlama olmaksızın erişebileceğini kolayca anlayabilirsiniz.

  • Kullanıcı modu ve sistem modu hakkında konuştuktan sonra, sistem çağrısı nedir?

    Çalıştırdığımız programlar temelde kullanıcı modunda çalışır.İşletim sistemi tarafından sağlanan sistem modu düzeyinde alt işlevleri çağırırsak ne olur? O zaman bir sistem çağrısına ihtiyacınız var!

    Yani çalıştırdığımız kullanıcı programında sistem durumu düzeyinde kaynaklarla ilgili tüm işlemler (dosya yönetimi, süreç kontrolü, bellek yönetimi vb.) Sistem çağrıları ve işlemler aracılığıyla işletim sistemine servis talepleri yapmalıdır. Sistem tamamlayacak.

    Bu sistem çağrıları, işlevlerine göre kabaca aşağıdaki kategorilere ayrılabilir:

  • Ekipman yönetimi. Ekipman talebini veya serbest bırakma işlemini ve ekipman başlatma ve diğer işlevleri tamamlayın.

  • Dosya yönetimi. Dosyaları okuma, yazma, oluşturma ve silme işlevlerini tamamlayın.

  • Süreç kontrolü. Süreç oluşturma, iptal etme, engelleme ve uyandırma gibi tam işlevler.

  • Süreç iletişimi. İşlemler arasında mesaj iletimi veya sinyal iletimi gibi eksiksiz işlevler.

  • Hafıza yönetimi. Tam bellek tahsisi, geri dönüşümü ve işin kapladığı bellek alanının boyutunu ve adresini elde edin.

  • Süreçler ve iş parçacıkları

    2.1 Süreç ve iş parçacığı arasındaki fark

    Mülakatçı: Tamam! Anlıyorum! Sonra tekrar bunun hakkında konuşuyorsunuz: bir süreç ve bir iplik arasındaki fark.

    Ben: Tamam! Aşağıdaki şekil Java hafıza alanıdır.JVM perspektifinden iş parçacıkları ve süreçler arasındaki ilişkiden bahsedelim!

    Java bellek alanı (çalışma zamanı veri alanı) hakkında fazla bir şey bilmiyorsanız şu makaleyi okuyabilirsiniz: "Muhtemelen Java bellek alanıyla ilgili en net makale"

    Yukarıdaki şekilden, bir işlemde birden çok iş parçacığı olabileceği ve birden çok iş parçacığının işlemin yığın ve yöntem alanını (JDK1.8'den sonraki meta alan) kaynaklarını paylaştığı, ancak her iş parçacığının kendi program sayacı ve sanal makine yığını olduğu görülebilir. Ve yerel yöntem yığını.

    Özet: Bir iş parçacığı, bir işleme bölünmüş daha küçük bir işletim birimidir ve bir işlem, yürütülmesi sırasında birden çok iş parçacığı oluşturabilir. İş parçacıkları ve işlemler arasındaki en büyük fark, her işlemin temelde bağımsız olmasıdır, ancak her iş parçacığı zorunlu değildir, çünkü aynı süreçteki iş parçacıkları muhtemelen birbirini etkiler. İş parçacığı yürütme ek yükü küçüktür, ancak kaynak yönetimi ve korumaya elverişli değildir; süreç tam tersidir.

    2.2 Sürecin durumları nelerdir?

    Mülakatçı: O halde sürecin durumları nelerdir?

    Ben: İşlemleri genel olarak 5 duruma ayırırız ve bunlar konu başlıklarına çok benzerdir!

  • Oluşturma durumu (yeni): İşlem yaratılıyor ve henüz hazır durumuna ulaşmadı.

  • Hazır durumu (hazır): İşlem çalışmaya hazırdır, yani işlem işlemci dışındaki tüm gerekli kaynakları elde etmiştir ve işlemci kaynaklarını (işlemci tarafından ayrılan zaman dilimi) elde ettikten sonra çalışabilir.

  • Çalışma durumu (çalışıyor): İşlem işlemci üzerinde çalışıyor (tek çekirdekli bir CPU altında herhangi bir zamanda yalnızca bir işlem çalışıyor).

  • Engelleme durumu (bekleme): Bekleme durumu olarak da bilinen işlem, bir olayı bekler ve bir kaynağın kullanılabilir olmasını veya bir GÇ işleminin tamamlanmasını beklemek gibi çalışmayı askıya alır. İşlemci boşta olsa bile işlem çalışamaz.

  • Bitti durumu (sonlandırıldı): İşlem sistemden kayboluyor. İşlem normal şekilde sona ermiş veya başka nedenlerle kesintiye uğrayarak çıkmış olabilir.

  • 2.3 Süreçler arası iletişim

    Görüşmeci: Süreçler arasındaki ortak iletişim yolları nelerdir?

    Ben: Süreçler arasında yaklaşık 7 ortak iletişim yolu vardır.

    Aşağıdaki bölüm başvuruyu özetler: "İşlemler Arası İletişim IPC (İşlemler Arası İletişim)" Bu makalenin okunması önerilir ve özet çok iyidir.

  • Borular / Anonim Borular (Borular): Üst ve alt süreçler arasında veya bir ilişkisi olan kardeş süreçler arasında iletişim için kullanılır.

  • Adlar Borular: Anonim kanalların isimleri yoktur ve sadece akrabalıkta süreçler arası iletişim için kullanılabilir. Bu eksikliğin üstesinden gelmek için iyi bilinen bir boru önerildi. Ünlü boru hatları kesinlikle ilk giren ilk çıkar (ilk giren ilk çıkar) takip eder. İyi bilinen boru, makinenin herhangi iki işlemi arasındaki iletişimi gerçekleştirebilen bir disk dosyası olarak mevcuttur.

  • Sinyal (Sinyal): Sinyal, alma sürecine bir olayın meydana geldiğini bildirmek için kullanılan daha karmaşık bir iletişim yöntemidir;

  • Message Queuing: Message Queuing, bellekte saklanan ve ileti kuyruğu tanımlayıcısı tarafından tanımlanan belirli bir biçime sahip bağlantılı bir ileti listesidir. Boruların ve mesaj kuyruklarının iletişim verileri ilk giren ilk çıkar ilkesine dayanır. Kanallardan (adsız kanallar: yalnızca bellekte bulunan dosyalar; adlandırılmış kanallar: mevcut disk medyası veya dosya sistemleri) farklı olarak, ileti kuyruğu çekirdekte saklanır ve yalnızca çekirdek yeniden başlatıldığında (yani, işletim sistemi yeniden başlatıldığında) veya görüntülendiğinde Bir mesaj kuyruğu silindiğinde, mesaj kuyruğu fiilen silinir. Mesaj kuyruğu mesajın rastgele sorgulanmasını gerçekleştirebilir, mesajın ilk giren ilk çıkar sırasında okunması gerekmez, ancak mesajın türüne göre de okunabilir FIFO'dan daha fazla avantajı vardır. Mesaj kuyruğu, daha az bilgi taşıyan sinyalin eksikliklerinin üstesinden gelir, boru hattı yalnızca biçimlendirilmemiş baytları ve sınırlı tampon boyutunu taşıyabilir.

  • Semaforlar (Semaforlar): Semaforlar, paylaşılan verilere çok işlemli erişim için kullanılan bir sayaçtır.Semaforların amacı süreçler arasında senkronizasyon sağlamaktır. Bu iletişim yöntemi, esas olarak senkronizasyonla ilgili sorunları çözmek ve yarış koşullarından kaçınmak için kullanılır.

  • Paylaşılan hafıza (Paylaşılan hafıza): Birden fazla işlemin aynı hafıza alanına erişmesine izin verir ve farklı süreçler, paylaşılan hafızadaki verilerin güncellemesini diğer süreçte zaman içinde görebilir. Bu yöntemin, muteksler ve semaforlar gibi bazı senkronizasyon işlemlerine dayanması gerekir. Bunun süreçler arası iletişimin en kullanışlı yolu olduğu söylenebilir.

  • Soketler: Bu yöntem esas olarak istemci ile sunucu arasında ağ üzerinden iletişim kurmak için kullanılır. Soket, TCP / IP'yi destekleyen ağ iletişiminin temel işlem birimidir.Farklı ana bilgisayarlar arasındaki süreçler arasında iki yönlü iletişim için bir uç nokta olarak kabul edilebilir. Basitçe ifade etmek gerekirse, iletişimin iki tarafı arasındaki bir anlaşmadır. İletişim sürecini tamamlamak için ilgili işlevler.

  • 2.4 İş parçacıkları arasında senkronizasyon yolu

    Görüşmeci: İş parçacıkları arasında senkronize etmenin yolları nelerdir?

    Ben: İş parçacığı senkronizasyonu, temel kaynakları paylaşan iki veya daha fazla iş parçacığının eşzamanlı olarak yürütülmesidir. Kritik kaynak kullanımı çakışmalarını önlemek için iş parçacıkları senkronize edilmelidir. İşletim sistemi genellikle aşağıdaki üç iş parçacığı senkronizasyon yöntemine sahiptir:

  • Mutex (Mutex): Mutex mekanizmasını kullanarak, yalnızca mutekse sahip olan evre genel kaynaklara erişim yetkisine sahiptir. Yalnızca bir muteks olduğundan, kamu kaynaklarına aynı anda birden fazla evre tarafından erişilmeyeceği garanti edilebilir. Örneğin, senkronize edilmiş anahtar sözcük ve Java'daki çeşitli Kilitler bu tür mekanizmalardır.

  • Semafor (Semphares): Birden fazla iş parçacığının aynı kaynağa aynı anda erişmesine izin verir, ancak bu kaynağa aynı anda erişen maksimum iş parçacığı sayısını kontrol etmesi gerekir.

  • Olay (Olay): Bekle / Bildir: Bildirim işlemleri aracılığıyla çoklu iş parçacığı senkronizasyonunu koruyun ve ayrıca çok iş parçacıklı öncelik karşılaştırma işlemlerini kolayca gerçekleştirebilir.

  • 2.5 Süreç planlama algoritması

    Görüşmeci: İşletim sistemindeki süreçlerin zamanlama algoritmalarının ne olduğunu biliyor musunuz?

    Ben: Hmm! Bu, üniversitede öğrendiğimiz çok önemli bir bilgi noktası!

    Bilgisayar bilimcileri, maksimum CPU kullanımına ulaşmak için hangi işlemin ilk olarak yürütüleceğini ve en son hangi işlemin yürütüleceğini belirlemek için bazı algoritmalar tanımladılar. Bunlar:

    • İlk gelen ilk hizmet alır (FCFS) planlama algoritması : Kuyruğa kaynakları ayırmak için hazır kuyruğundan önce giren ve hemen yürütülmesini ve tamamlanıncaya veya bir olay meydana gelip bloke edilene kadar yürütmeye devam etmesini sağlayan ve yeniden programlamadan önce CPU'yu terk eden bir işlem seçin.

    • Önce Kısa İş (SJF) zamanlama algoritması : Kaynakları tahsis etmek için hazır kuyruğundan en kısa tahmini çalışma süresine sahip bir işlem seçin, böylece hemen yürütülecek ve tamamlanana veya bir olay meydana gelene kadar yürütülmeye devam edecek ve yeniden programlamadan önce CPU'dan ayrılacak.

    • Zaman dilimi döngüsel zamanlama algoritması : Zaman dilimi döngüsel robin planlaması, RR (Round robin) planlaması olarak da bilinen en eski, en basit, en adil ve en yaygın kullanılan algoritmadır. Her işleme, sürecin çalışmasına izin verilen zaman dilimi adı verilen bir zaman aralığı atanır.

    • Çok seviyeli geri bildirim kuyruğu planlama algoritması : Yukarıda tanıtılan çeşitli işlem planlama algoritmalarının belirli sınırlamaları vardır. Örneğin, kısa süreç öncelikli programlama algoritması yalnızca kısa süreci dikkate alır ve uzun süreci göz ardı eder. Çok seviyeli geri bildirim kuyruğu planlama algoritması, yalnızca yüksek öncelikli işleri yanıtlamakla kalmaz, aynı zamanda kısa işleri (süreçleri) hızlı bir şekilde tamamlar. Bu nedenle, şu anda daha iyi bir süreç planlama algoritması olarak kabul edilmektedir ve UNIX işletim sistemi tarafından benimsenen bu programlama algoritmasıdır.

    • Öncelikli planlama : Her işleme öncelik atayın, işlemi önce en yüksek önceliğe sahip olarak yürütün ve bu şekilde devam edin. Aynı önceliğe sahip işlemler FCFS modunda yürütülür. Öncelik, bellek gereksinimlerine, zaman gereksinimlerine veya diğer kaynak gereksinimlerine göre belirlenebilir.

    İşletim sistemi bellek yönetimi temelleri

    3.1 Bellek yönetimine giriş

    Görüşmeci: İşletim sisteminin bellek yönetimi esas olarak ne yapar?

    Ben: İşletim sisteminin bellek yönetimi esas olarak belleğin tahsisi ve kurtarılmasından sorumludur (malloc işlevi: bellek için uygulama, serbest işlev: belleği serbest bırakma) Ayrıca, adres çevirisi mantıksal adresleri karşılık gelen fiziksel adreslere dönüştürmektir ve diğer işlevler de işletim sistemi bellek yönetimidir. Yapılacak şeyler.

    3.2 Birkaç ortak bellek yönetimi mekanizması

    Mülakatçı: İşletim sisteminin bellek yönetimi mekanizmasını anlıyor musunuz? Hafıza yönetiminin yolları nelerdir?

    Ben: Bunu işletim sistemlerini öğrenirken öğrendim.

    Basitçe iki türe ayrılır: sürekli dağıtım yönetimi modu ve süreksiz dağıtım yönetimi modu. Sürekli tahsis yönetimi yöntemi, blok yönetimi gibi bir kullanıcı programı için sürekli bir hafıza alanının tahsisine karşılık gelir. Benzer şekilde, kesintili tahsis yönetimi yöntemi, bir program tarafından kullanılan belleğin, sayfa yönetimi ve bölüm yönetimi gibi ayrı veya bitişik olmayan bellekte dağıtılmasına izin verir.

  • Blok yönetimi : Eski çağlarda bilgisayar işletim sistemlerinin bellek yönetimi yöntemi. Belleği birkaç sabit boyutlu bloğa bölün ve her blok yalnızca bir işlem içerir. Program belleğe ihtiyaç duyarsa, işletim sistemi onu tahsis eder.Program sadece küçük bir alana ihtiyaç duyarsa, ayrılan belleğin büyük bir kısmı neredeyse boşa harcanır. Her bloktaki bu kullanılmayan alanlara parça adı verilir.

  • Sayfa yönetimi : Ana bellek sayfa sayfa eşit ve sabit olarak bölünmüştür Sayfalar daha küçüktür, bu blok yönetiminden daha güçlüdür, bu da bellek kullanımını geliştirir ve parçalanmayı azaltır. Sayfa yönetimi, sayfa tablosu aracılığıyla mantıksal adrese ve fiziksel adrese karşılık gelir.

  • Segment yönetimi : Sayfa yönetimi bellek kullanımını iyileştirse de, sayfa yönetimindeki sayfaların aslında pratik bir anlamı yoktur. Segment yönetimi, ana belleği segmentlere ayırır ve her segmentin alanı bir sayfanın alanından çok daha küçüktür. Bununla birlikte, en önemli şey, bölümlerin pratik anlamlarının olmasıdır Her bölüm bir mantıksal bilgi grubunu tanımlar, örneğin, ana program bölümü MAIN, alt program bölümü X, veri bölümü D, yığın bölümü S vb. Vardır. Segment yönetimi, segment tablosu aracılığıyla mantıksal adrese ve fiziksel adrese karşılık gelir.

  • Görüşmeci: Cevap fena değil! Ancak, çok önemli bir paragraf yönetim mekanizması eksiktir. Paragraf-sayfa yönetim mekanizması, paragraf türü yönetiminin ve sayfa türü yönetiminin avantajlarını birleştirir. Basitçe ifade etmek gerekirse, bölüm-sayfa yönetim mekanizması ana belleği birkaç bölüme ayırır ve her bölüm birkaç sayfaya bölünür Yani bölüm-sayfa yönetim mekanizması bölümler arasında ve bölümler içinde ayrıktır.

    Ben: Teşekkürler görüşmeci! Bunu unuttum ~

    3.3 Hızlı tablo ve çok seviyeli sayfa tablosu

    Görüşmeci: Sayfa tablosu yönetim mekanizmasında çok önemli iki kavram vardır: hızlı tablolar ve çok seviyeli sayfa tabloları Bu iki şey, sayfa tablosu yönetimindeki iki önemli sorunu çözer. Bana kısa bir giriş yapın!

    Ben: Disk belleği yönetiminde iki önemli nokta şunlardır:

    Sanal adreslerin fiziksel adreslere dönüştürülmesi hızlı olmalıdır.

    Büyük sanal adres alanı ve büyük sayfa tabloları sorununu çözün.

    Hızlı tablo

    Sanal adresin fiziksel adrese dönüşüm hızını çözmek için işletim sistemi, sanal adresin fiziksel adrese dönüşümünü hızlandırmak için sayfa tablosu şemasına dayalı hızlı tablo getirmiştir. Blok tablosunu, içeriği sayfa tablosunun bir kısmı veya tamamı olan özel bir önbellek (Önbellek) olarak anlayabiliriz. Sayfa tablosunun Önbelleği olarak işlevi, sayfa tablosunun işlevine benzer, ancak erişim oranını iyileştirir. Sayfa tablosu adres dönüştürme için kullanıldığından, CPU'nun bellek verilerini okurken ve yazarken ana belleğe iki kez erişmesi gerekir. Hızlı bir tabloyla, bazen ön belleğe yalnızca bir kez ve ana belleğe bir kez erişmesi gerekir, bu da aramayı hızlandırabilir ve komut yürütme hızını artırabilir.

    Hızlı tabloyu kullandıktan sonra adres dönüştürme işlemi şu şekildedir:

  • Hızlı tabloyu sanal adresteki sayfa numarasına göre kontrol edin;

  • Sayfa hızlı tablodaysa, ilgili fiziksel adresi doğrudan hızlı tablodan okuyun;

  • Sayfa hızlı tabloda değilse, bellekteki sayfa tablosuna erişin, sayfa tablosundan fiziksel adresi alın ve aynı zamanda sayfa tablosundaki eşleme tablosu girişini hızlı tabloya ekleyin;

  • Hızlı liste doldurulduğunda ve yeni bir sayfa kaydedilmesi gerektiğinde, hızlı listedeki bir sayfa belirli bir eleme stratejisine göre elenir.

  • Okuduktan sonra, hızlı tablonun geliştirme sistemimizde sıklıkla kullandığımız önbelleğe (Redis gibi) çok benzediğini göreceksiniz.Gerçekten de böyle.İşletim sistemindeki birçok fikir ve birçok klasik algoritma günlük hayatımızda kullanılabilir. Gölgelerini geliştirmede kullanılan çeşitli araçlarda veya çerçevelerde bulun.

    Çok seviyeli sayfa tablosu

    Çok seviyeli sayfa tablolarını tanıtmanın temel amacı, tüm sayfa tablolarını bellekte tutmaktan ve çok fazla yer kaplamaktan kaçınmaktır, özellikle de hiç ihtiyaç duyulmayan sayfa tablolarının bellekte tutulması gerekmez. Çok seviyeli sayfa tabloları, tipik bir zaman değişim alanı senaryosudur. Ayrıntılar için aşağıdaki makaleyi görüntüleyebilirsiniz.

    Çok seviyeli sayfa tablolarıyla nasıl bellekten tasarruf edilir: https://www.polarxiong.com/archives/Çok düzeyli sayfa tabloları ile bellek nasıl kaydedilir?

    sonuç olarak

    Hafızanın alan performansını iyileştirmek için çok seviyeli sayfa tabloları kavramı önerilmiş, ancak alan performansının zaman kaybı performansına dayandığı belirtilmiş, bu nedenle kayıp zaman performansını desteklemek için hızlı tablolar (yani TLB) kavramı önerilmiştir. Hem hızlı tablolar hem de çok seviyeli sayfa tabloları aslında program yerelliği ilkesini kullanır.Yerellik ilkesi daha sonra sanal bellek bölümünde tanıtılacaktır.

    3.4 Sayfalama mekanizması ile segmentasyon mekanizması arasındaki ortak noktalar ve farklılıklar

    Görüşmeci: Sayfalama mekanizması ile bölümleme mekanizması arasındaki ortak noktalar ve farklılıklar nelerdir?

    Ben:

    Ortak zemin:

  • Hem disk belleği mekanizması hem de bölümleme mekanizması, bellek kullanımını iyileştirmek ve bellek parçalanmasını azaltmak için tasarlanmıştır.

  • Sayfalar ve segmentler ayrı ayrı depolanır, bu nedenle her ikisi de ayrı ayrı bellek ayırma yöntemleridir. Ancak, her sayfa ve bölümdeki bellek bitişiktir.

  • fark :

  • Sayfanın boyutu sabittir ve işletim sistemi tarafından belirlenir; şu anda çalıştırmakta olduğumuz programa bağlı olarak segmentin boyutu sabit değildir.

  • Sayfalama yalnızca işletim sistemi bellek yönetiminin ihtiyaçlarını karşılamak içindir ve bölümler, programda kod bölümleri ve veri bölümleri olarak somutlaştırılabilen ve kullanıcıların ihtiyaçlarını daha iyi karşılayabilen mantıksal bilgi birimleridir.

  • 3.5 Mantıksal (sanal) adres ve fiziksel adres

    Mülakatçı: Mantıksal adres ve fiziksel adres olmak üzere iki kavramdan bahsettiniz, tam olarak emin değilim, bunu bana açıklar mısınız?

    Ben: em ... Tamam! Programlamamız genellikle sadece mantıksal adreslerle başa çıkmak için mümkündür.Örneğin, C dilinde işaretçide depolanan değer bellekteki bir adres olarak anlaşılabilir.Bu adres mantıksal adres dediğimiz şeydir ve mantıksal adres işletim sistemi tarafından belirlenir. Fiziksel adres, gerçek fiziksel bellekteki adresi, daha spesifik olarak bellek adres yazmacındaki adresi ifade eder. Fiziksel adres, bellek biriminin gerçek adresidir.

    3.6 CPU adreslemeyi anlıyor musunuz? Neden sanal adres alanına ihtiyacınız var?

    Görüşmeci: CPU adreslemesini anlıyor musunuz, neden sanal adres alanına ihtiyacınız var?

    Ben: Bu kısmı bilmiyorum!

    Bu yüzden görüşmeden sonra ilgili belgeleri sessizce kontrol ettim! Teknoloji olmadan gözyaşları bıraktı.

    İçeriğin bu kısmı Microsoft'un resmi web sitesinin tanıtımına atıfta bulunur: https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh439648(v=vs.85).aspx

    Modern işlemciler, Sanal Adresleme adı verilen bir adresleme yöntemi kullanır. Sanal adresleme ile, CPU'nun sanal adresi fiziksel bir adrese çevirmesi gerekir, böylece gerçek fiziksel belleğe erişebilir. Aslında sanal adreslerin fiziksel adreslere dönüştürülmesini tamamlayan donanım, CPU'da Bellek Yönetim Birimi (MMU) adı verilen bir donanımdır. Aşağıda gösterildiği gibi:

    Neden sanal bir adres alanı var?

    Sanal adres alanı olmadığında başlayalım! Sanal adres alanı olmadığında, programlar doğrudan fiziksel belleğe erişir ve bunları kullanır. Ama sorun ne?

  • Kullanıcı programları, herhangi bir belleğe erişebilir ve belleğin her baytını adresleyebilir, böylece işletim sistemine zarar vermek ve işletim sisteminin çökmesine neden olmak (kasıtlı veya kasıtsız olarak) kolaydır.

  • Aynı anda birden fazla program çalıştırmak özellikle zordur.Örneğin, bir WeChat ve bir QQ Music'i aynı anda çalıştırmak istiyorsanız, çalışmayacaktır. neden? Basit bir örnek: WeChat çalışırken 1xxx hafıza adresine bir değer atadıktan sonra, QQ Music ayrıca 1xxx hafıza adresine bir değer atar, ardından QQ Music tarafından hafızaya atanan değer WeChat tarafından önceden atanan değerin üzerine yazar ve bu da WeChat'e neden olur. Bu program çökecek.

  • Özetle: Fiziksel adres doğrudan açığa çıkarsa, işletim sistemine zarar verme ve aynı anda birden fazla programı çalıştırmada zorluk gibi ciddi sorunlara neden olur.

    Belleğe sanal adresler aracılığıyla erişmenin aşağıdaki avantajları vardır:

    • Programlar, fiziksel bellekte bitişik olmayan büyük bellek arabelleklerine erişmek için bir dizi bitişik sanal adres kullanabilir.

    • Programlar, kullanılabilir fiziksel bellekten daha büyük olan bellek arabelleklerine erişmek için bir dizi sanal adres kullanabilir. Fiziksel bellek miktarı azaldığında, bellek yöneticisi fiziksel bellek sayfalarını (genellikle 4 KB boyutunda) disk dosyalarına kaydeder. Veriler veya kod sayfaları, gerektiğinde fiziksel bellek ve disk arasında taşınır.

    • Farklı süreçler tarafından kullanılan sanal adresler birbirinden izole edilmiştir. Bir işlemdeki kod, başka bir işlem veya işletim sistemi tarafından kullanılan fiziksel belleği değiştiremez.

    Sanal bellek

    4.1 Sanal Bellek nedir?

    Mülakatçı: Size başka bir sağduyu sorusu sormama izin verin! Sanal bellek nedir?

    Ben: Bu, genellikle bilgisayar kullandığımızda, özellikle Windows sistemlerinde çok yaygındır. Bu noktayı çoğu zaman bellek tüketen yazılımları açmak için kullanırız, bu yazılımlar tarafından kullanılan bellek bilgisayarımızın fiziksel belleğinin çok ötesine geçmiş olabilir. Bu neden yapılabilir? Tam olarak sanal belleğin varlığından dolayı, sanal bellek aracılığıyla program, sistemin fiziksel belleğinin boyutunu aşan boş bir bellek alanına sahip olabilir. Ek olarak, sanal bellek her işlem için tutarlı ve özel bir adres alanı sağlar ve bu da her işleme özel ana bellekte olduğu yanılsamasını verir (her işlemin sürekli ve eksiksiz bir bellek alanı vardır). Bu, belleği daha verimli bir şekilde yönetecek ve hataları azaltacaktır.

    Sanal bellek, bilgisayar sistem bellek yönetimi teknolojisidir.Bilgisayarımızın sanal belleğini manuel olarak ayarlayabiliriz. Sanal belleğin sadece "belleği genişletmek için sabit disk alanını kullanma" teknolojisi olduğunu düşünmeyin. Sanal belleğin önemli anlamı, sürekli bir sanal adres alanı tanımlaması ve belleği sabit disk alanına genişletmesidir. Önerilen okuma: "Sanal Bellek Hakkında Küçük Şey"

    Wikipedia'da sanal hafızayı bu şekilde tanıtan birkaç kelime var.

    Sanal bellek: Uygulamanın sürekli kullanılabilir belleğe (sürekli ve tam bir adres alanı) sahip olduğunu düşünmesini sağlar, ancak aslında genellikle birden çok fiziksel bellek parçasına bölünür ve bazıları geçici olarak harici disk depolamasında saklanır. Gerektiğinde veri alışverişi. Sanal bellek teknolojisini kullanmayan sistemlerle karşılaştırıldığında, bu teknolojiyi kullanan sistemler büyük programları yazmayı ve gerçek fiziksel belleği (RAM gibi) daha verimli kullanmayı kolaylaştırır. Şu anda çoğu işletim sistemi, Windows ailesinin "sanal belleği", Linux'un "takas alanı" gibi sanal belleği kullanmaktadır. Gönderen: https: //zh.wikipedia.org/wiki/Virtual memory

    4.2 Yerellik ilkesi

    Görüşmeci: Sanal bellek teknolojisini daha iyi anlamak için, bilgisayarlardaki ünlü yerellik ilkesini bilmeniz gerekir. Ayrıca, yerellik ilkesi hem program yapısı hem de çok önemli bir kavram olan veri yapısı için geçerlidir.

    Ben: Yerellik ilkesi, sanal bellek teknolojisinin temelidir.Kesinlikle programın çalıştığı yerellik ilkesinden dolayı, programın yalnızca bir kısmını belleğe yükleyebilir ve çalışmaya başlayabilir.

    Aşağıdaki içerik "Bilgisayar İşletim Sistemi Eğitimi" Bölüm 4 Bellek Yönetimi'nden alınmıştır.

    1968 gibi erken bir tarihte, birisi programlarımızın genellikle yürütme sırasında yerel yasalar sergilediğine dikkat çekti; bu, kısa bir süre içinde program yürütmenin, program tarafından erişilen depolama alanının küçük bir kısmıyla sınırlı olduğu anlamına gelir. Ayrıca belirli bir alanla sınırlıdır.

    Yerellik ilkesi şu iki yönden kendini gösterir:

    Zamansal yerellik : Programdaki bir komut yürütüldüğünde, komut kısa süre sonra tekrar yürütülebilir; belirli bir veriye erişilmişse, verilere kısa süre sonra tekrar erişilebilir. Zamansal yerelliğin tipik nedeni, programda çok sayıda döngü işlemi olmasıdır.

    Mekansal yerellik : Program belirli bir depolama birimine eriştiğinde, yakın gelecekte yakındaki depolama birimine de erişilecektir, yani program tarafından belirli bir süre içinde erişilen adres, talimat genellikle olduğu için belirli bir aralıkta yoğunlaşabilir. Sıralı olarak depolanan ve sıralı olarak çalıştırılan veriler genellikle vektörler, diziler ve tablolar biçiminde kümeler halinde depolanır.

    Geçici konum, son zamanlarda kullanılan talimatların ve verilerin önbellekte saklanması ve önbelleğin hiyerarşik yapısının kullanılmasıyla sağlanır. Uzamsal yerellik genellikle daha büyük bir önbellek kullanılarak ve önceden getirme mekanizmasının önbellek kontrol mantığına entegre edilmesiyle elde edilir. Sanal bellek teknolojisi aslında iki seviyeli bir "bellek ve harici bellek" bellek yapısı kurar ve yüksek hızlı önbelleği gerçekleştirmek için yerellik ilkesini kullanır.

    4.3 Sanal depolama

    Görüşmeci: Sanal bellekten bahsetmiştim. Yine sanal bellekten bahsediyorsun!

    Ben:

    İçeriğin bu kısmı şunlardan gelmektedir: Wangdao lisansüstü giriş sınavı işletim sisteminin bilgi noktalarının düzenlenmesi.

    Yerellik ilkesine bağlı olarak, program yüklendiğinde, programın bir kısmı belleğe yüklenebilir ve diğer bölümleri programın yürütülmesini başlatmak için harici bellekte bırakılabilir. Harici bellek genellikle bellekten çok daha büyük olduğundan, çalıştırdığımız yazılımın bellek boyutu aslında bilgisayar sisteminin gerçek bellek boyutundan daha büyük olabilir. Program çalıştırma sürecinde, erişilen bilgiler bellekte olmadığında işletim sistemi gerekli kısmı belleğe aktarır ve ardından programı çalıştırmaya devam eder. Öte yandan, işletim sistemi, belleğe aktarılacak bilgiler için yer açmak amacıyla bellekteki geçici olarak kullanılmayan içeriği harici belleğe değiştirir. Bu şekilde, bilgisayar kullanıcılara gerçek bellekten çok daha büyük bir bellek - sanal bellek sağlıyor gibi görünüyor.

    Aslında, sanal belleğin aynı zamanda bir alan için zaman stratejisi olduğunu düşünüyorum.Programın çalışmasını desteklemek için sanal olarak daha geniş bir alan karşılığında CPU'nun hesaplama süresini ve sayfaları yüklemek ve yüklemek için geçen süreyi kullanırsınız. İç çekmeliyim, programlama dünyası neredeyse uzay için zaman ya da zaman için yer.

    4.4 Sanal belleğin teknik olarak gerçekleştirilmesi

    Görüşmeci: Sanal bellek teknolojisinin uygulanmasına ne dersiniz?

    Ben: Sanal belleğin uygulanmasının, bellek yönetiminin ayrık tahsisine dayalı olması gerekir. Sanal belleği uygulamanın üç yolu vardır:

  • Disk belleği depolama yönetimi isteyin : Sayfalama yönetimine bağlı olarak, sanal bellek işlevini desteklemek için, istek sayfalama işlevi ve sayfa değiştirme işlevi eklenir. Çağırma isteği şu anda sanal belleği uygulamak için en yaygın kullanılan yöntemdir. Talep sayfalama depolama yönetim sisteminde, iş çalışmaya başlamadan önce, segmentin yalnızca o anda yürütülecek olan kısmı yüklenebilir. İşin yürütülmesi sırasında erişilecek sayfanın hafızada olmadığı tespit edilirse, işlemci ilgili sayfayı ilgili sayfa değiştirme algoritmasına göre ana belleğe aktarması için işletim sistemine bildirimde bulunacak ve işletim sistemi de geçici olarak kullanılmayan sayfayı değiştirebilecektir. Harici depolama.

  • Parçalanma Yönetimi İste : Segmentli depolama yönetimine bağlı olarak, istek segment ayarlama fonksiyonu ve segment değiştirme fonksiyonu eklenir. İstek bölümlü depolama yönetimi yöntemi, istek sayfalama depolama yönetimi yöntemi ile aynıdır.İş çalışmaya başlamadan önce, yalnızca o anda yürütülecek olan bölümün bir kısmı yüklenebilir; yürütme sırasında, erişimi dinamik olarak yüklemek için istek çağrısı kesme kullanılabilir Ancak, belleğin program bölümünde değildir; bellek alanı dolduğunda ve yeni bir bölümün yüklenmesi gerektiğinde, yeni bölümün yüklenmesi için yer açmak için değiştirme işlevine göre uygun şekilde belirli bir bölüm çağrılır.

  • Segment sayfası depolama yönetimi isteyin

  • Bana daha fazlasını anlatır mısın? Birçok kişi istek sayfalama ve disk belleği depolama yönetimini birbirine karıştırmaya meyillidir. İkisi arasındaki fark nedir?

    Disk belleği depolama yönetimi isteği, sayfalama yönetimine dayanır. Aralarındaki temel fark, programın ihtiyaç duyduğu tüm adres alanını ana belleğe yükleyip yüklemeyeceğidir.Yukarıda analiz ettiğimiz, sayfalama bellek yönetiminin sanal bellek sağlayabilmesinin nedeni de budur.

    Aralarındaki temel fark, bir işin tüm adres alanını aynı anda ana belleğe yükleyip yüklemeyeceğidir. İstenen disk belleği depolama yönetimi, işin tüm adres alanının aynı anda ana belleğe yüklenmesini gerektirmez. Buna dayanarak, sayfalı depolama yönetimi isteği sanal depolama sağlayabilir, ancak sayfalı depolama yönetimi sanal depolama sağlayamaz.

    Yukarıdaki uygulama türünden bağımsız olarak, genellikle şunlara ihtiyacımız var:

  • Belirli bir bellek kapasitesi ve harici bellek: Bir programı yüklerken, programın yalnızca bir bölümünü belleğe yüklemeniz ve diğer bölümleri harici bellekte bırakmanız yeterlidir ve ardından program çalıştırılabilir;

  • Sayfa hatası kesintisi : Yürütülecek talimat veya erişilecek veriler bellekte değilse (sayfa hatası veya bölüm olarak adlandırılır), işlemci işletim sistemine karşılık gelen sayfayı veya bölümü belleğe aktarması için bildirimde bulunacak ve ardından programı çalıştırmaya devam edecektir;

  • Sanal adres alanı : Mantıksal adresten fiziksel adrese dönüştürme.

  • 4.5 Sayfa değiştirme algoritması

    Görüşmeci: Sanal bellek yönetiminin çok önemli bir kavramı, sayfa değiştirme algoritmasıdır. Daha sonra sayfa değiştirme algoritmasının rolü hakkında konuşuyorsunuz, ortak sayfa değiştirme algoritmaları nelerdir?

    Ben:

    Bu konu genellikle yazılı bir sınav olarak karşımıza çıkıyor ve internette çok güzel cevaplar var, ben sadece burada özetledim.

    Adres eşleştirme işlemi sırasında, erişilecek sayfanın hafızada olmadığı sayfada bulunursa, bir sayfa hatası kesintisi oluşur.

    Sayfa arızası kesintisi, erişilecek sayfanın ana bellekte olmadığı ve işletim sisteminin erişmeden önce ana belleğe aktarması gerektiği anlamına gelir. Şu anda, bellek eşlemeli dosya aslında bir disk belleği dosyası haline gelir.

    Bir sayfa hatası kesintisi meydana geldiğinde, mevcut bellekte boş sayfa yoksa, işletim sistemi yüklenecek sayfaya yer açmak için onu bellekten çıkarmak için bellekte bir sayfa seçmelidir. Hangi sayfanın ortadan kaldırılacağını seçmek için kullanılan kurala sayfa değiştirme algoritması denir, sayfa değiştirme algoritmasını sayfaları ortadan kaldırmak için bir kural olarak kabul edebiliriz.

    • OPT sayfa değiştirme algoritması (optimum sayfa değiştirme algoritması) : Optimal (Optimal, OPT) değiştirme algoritması tarafından seçilen elenmiş sayfalar gelecekte asla kullanılmayacaktır veya en uzun süre içinde erişilemeyecek sayfalar, böylece en düşük sayfa hatası oranı garanti edilebilir. Ancak süreç hafızasında bulunan binlerce sayfadan hangisine gelecekte en uzun süre erişilemeyeceğini insanlar tahmin edemedikleri için bu algoritma uygulanamaz. Genellikle diğer permütasyon algoritmalarının bir ölçüsü olarak kullanılır.

    • FIFO (İlk Giren İlk Çıkar) sayfa değiştirme algoritması (ilk giren ilk çıkar sayfa değiştirme algoritması) : Hafızaya ilk giren sayfa her zaman elenir, yani hafızada en uzun kalış süresine sahip sayfa eleme için seçilir.

    • LRU (En Az Şu Anda Kullanılan) sayfa değiştirme algoritması (en son sayfa değiştirme algoritması kullanılmamıştır) : LRU algoritması, her sayfaya, bir sayfaya en son erişildiğinden beri geçen süre T'yi kaydetmek için kullanılan bir erişim alanı verir. Bir sayfanın kaldırılması gerektiğinde, en büyük T değerine sahip mevcut sayfayı, yani en yeni olanı seçin Kullanılan sayfalar elenmiştir.

    • LFU (En Az Kullanılan) sayfa değiştirme algoritması (en az kullanılan sayfa değiştirme algoritması) : Değiştirme algoritması, önceki dönemde en az kullanılan sayfayı elenen sayfa olarak seçer.

    referans:

    "Bilgisayar İşletim Sistemi-Tang Xiaodan" Dördüncü Baskı

    "Bilgisayar sistemlerinin derinlemesine anlaşılması"

    https://zh.wikipedia.org/wiki/Input ve output bellek yönetim birimi

    https://baike.baidu.com/item/ / 19781679

    https://www.jianshu.com/p/1d47ed0b46d5

    https://www.studytonight.com/operating-system

    https://www.geeksforgeeks.org/interprocess-communication-methods/

    https://juejin.im/post/59f8691b51882534af254317

    Wangdaokaoyan işletim sisteminin bilgi noktalarının düzenlenmesi: https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/13.html

    Telif hakkı bildirimi: Bu makale, CSDN blogger "Guide Brother" ın orijinal makalesidir. CC 4.0 BY-SA telif hakkı sözleşmesine uygundur. Lütfen orijinal kaynak bağlantısını ve yeniden yazdırmak için bu bildirimi ekleyin.

    Orijinal bağlantı: https://blog.csdn.net/qq_34337272/java/article/details/105291118

    Alibaba Cloud 200 milyar yuan ekler ve ardından yeni altyapı için "çıkar"!

    Görünüşte alakasız, felsefe ile makine öğrenimi arasında bu kadar büyük bir kesişme var mı?

    Sineral sanatlarda doğdu ve Instagram'ı elinden aldı ve Xiaozha tarafından yeni bir taç izleme web sitesi kurmak için "sıkıştırıldı". Bu programcı biraz harika!

    Tahmin sürecinin hesaplama maliyetini düşürmek için, bu NLP modeli sıkıştırma yöntemlerinin bilinmesi gerekir

    Bütün bu ortak dağıtılmış depolama sistemlerini biliyor musunuz?

    JD Zhilian Cloud yerel uygulaması, size izleme ve günlük tutmanın altın kuralının ne olduğunu söyler

    Poster Çin'in yeni taç pnömonisi salgınına karşı mücadeledeki uygulaması
    önceki
    Toplamak! MySQL röportajının ustalaşması gereken 8 bilgi noktası
    Sonraki
    İlk yerli sunucusuz veritabanı burada ve teknik mimari ortaya çıkıyor
    Apple, iPhone e-posta güvenlik açığına yanıt veriyor; GitHub, arka arkaya 3 gün ciddi kesinti süresiyle patladı; Tencent açık kaynak Transformer çıkarım hızlandırma aracı | Geek Headlines
    Piyasa İşlemi Tek Bölge Gücü! Suzhou'da Nisan ayının dördüncü haftasında 1.493 set konut işlemi% 1,50 arttı
    Tayvan ordusunun enfekte filosu başka yerleri ziyaret etti mi? Tsai Ing-wen: Yan Defa Yok: Evet
    İnsanları kurtarmak için aşağı koştu ve dizleri morarıncaya kadar diz çöktü.Netizenler, kimliğini öğrendikten sonra övdü ve haraç ödedi ...
    Kırmızı Ağ Bin Ekran Ağı, sizi 2020 Hunan (Bahar) Kırsal Kültür Turizmi Festivali'ne katılmanız için "Anhua ile Tanışın" davet ediyor
    "Salgın" ve "kötü" test sorularına nasıl cevap verilir? Genel Sekreter Xi Jinping rehberlik etti
    2020 Leju Online Emlak Fuarı 26 Nisan'da gayrimenkul indirim bilgilerinin yayınlanması
    Yu Hanchao, sınır dışı edildikten on iki gün sonra kötü bir haber aldı ve hukuk uzmanları Evergrande'nin kararını destekledi.
    Yu Hanchaonun sınır dışı edilmesinin 14. gününde olay: Evergrande'den barışçıl bir şekilde ayrılmayı umduğu ve sertleşmek istemediği ortaya çıktı.
    Medya incelemesi Manchester City MVP: Dünyanın ilk orta saha oyuncusu tartışmasız, yaklaşık 17 yıldır Premier Lig rekorunu kırması bekleniyor
    Sanshi Kanfang | Geçen hafta, işlem keskin bir şekilde toparlandı ve LPR tekrar tekrar düştü. Heyecanlı mısınız?
    To Top