İçeriğe geç
academia.sh

Ders 01 / 11

Bilgisayar Donanım Bileşenleri

Donanımın sınır listesi olarak okunması: 43 kalemlik envanterde sekiz bileşenin çizdiği sınır, sınırı geçmek için aynı anda yanlış olması gereken kalem sayısının uzaktan 1 ile 3, fiziksel erişimde 0 ile 3 arasında değişmesi, iki bileşenin tek başına envanterin tamamını açması ve dört sertleştirme ayarından üçü açıldıktan sonra bile açılan kalemin 43'te kalması.

İçindekiler

Önceki kurs bir varlığa ulaşmanın kaç ayrı yolu olduğunu saydı ve her savunma ilkesini kapattığı yol cinsinden ölçtü. Bütün o yolların ortak bir noktası vardı: hepsi bir makinenin üzerinden geçiyordu. Makinenin kendisi hiç açılmadı.

Bu ders donanımı katalog olarak ele almaz. İşlemcinin kaç çekirdeği olduğu ya da belleğin ne kadar hızlı olduğu buradaki soru değildir. Soru şudur: bir bileşen hangi sınırı çiziyor, o sınırın iki yanında kaç kalem duruyor ve sınır bir kez geçildiğinde neye erişiliyor.

Sınır Listesi Olarak Donanım

Bir bileşenin güvenlik değeri üç sayıyla yazılır.

Sınırın adı ve tarafı. Bileşen bir ayrımı zorlar: bir kalem kümesi içeride, kalanı dışarıdadır. “İşlemci güvenlidir” bir karar taşımaz; “işlemci ayrıcalık kipi sınırını çizer ve o sınırın içinde şu kadar kalem vardır” taşır.

Sınırı geçmek için gereken kalem. Bir yandan öbürüne geçmek kaç ayrı koşulun aynı anda yanlış olmasını ister. Bu sayı yalıtım gücüdür. Bir ise sınır yoktur: tek bir hata bütün geçişi verir. Sıfır ise sınır hiç kurulmamıştır.

Sınır düştüğünde erişilen kalem. Sınırın bir kez geçildiği varsayılır ve kaç kaleme erişildiği sayılır. Dar bir sınır düşse de az kalem verir; geniş bir sınır düştüğünde envanterin tamamı açılır.

Sekiz Bileşenin Sınırı

Örnek, kursun kurgu bölgesel ölçüm ağındaki bir şube sunucusudur: sayaç okumalarını toplayan uçlardan gelen veriyi saklar, saha ekiplerinin dizüstü bilgisayarlarına dağıtır. Sunucu da envanteri de kurgudur; aşağıdaki tablo bir modeldir, gerçek bir makine, satıcı ya da yapılandırma yoktur.

DI1: korunan varlık envanteri 43 kalemdir ve yedi katmana bölünür. DI2: her bileşen bir sınır çizer; sınır düştüğünde erişilen katmanlar kalem kalem yazılır. DI3: eşik, sınırı geçmek için aynı anda yanlış olması gereken kalem sayısıdır ve uzaktan erişimle fiziksel erişimde ayrı ayrı verilir. DI4: dört sertleştirme ayarı vardır; her biri ilgili bileşenin fiziksel eşiğine iki kalem ekler. DI5: en düşük eşikli sınır seçilir; erişilen kalem, eşiği bir ve altında olan sınırların açtığı katmanların birleşimidir. DI6: çevre birim arayüzü uzaktan geçilemez, fiziksel takma ister.

// bt/bilesen.mjs — kurgu bolgesel olcum agi sube sunucusunun bilesen ve sinir envanteri
// (model): gercek bir makine, satici ya da yapilandirma yok. Rastgelelik yok.

// Varlik envanteri: yedi katman, katman basina kalem sayisi.
export const KATMAN = { "cekirdek-bellek": 5, "surec-bellegi": 9, "disk-veri": 11,
  "yapilandirma": 6, "anahtar-malzemesi": 3, "ag-ucu": 4, "gunluk": 5 };
export const TOPLAM = Object.values(KATMAN).reduce((a, b) => a + b, 0);
const HEPSI = Object.keys(KATMAN);

// Her bilesen bir sinir cizer. u/f: sinirin uzaktan ve fiziksel erisimde gecilmesi icin ayni
// anda yanlis olmasi gereken kalem sayisi (Infinity: o yoldan gecilemez). ayar: sinira kalem
// ekleyen sertlestirme; ek: ayar acikken f'ye eklenen kalem. acar: sinir dustugunde erisilen
// katmanlar.
export const SINIR = [
  { ad: "islemci", sinir: "ayricalik-kipi", u: 2, f: 2, ayar: null, ek: 0,
    acar: ["cekirdek-bellek", "surec-bellegi", "yapilandirma", "gunluk"] },
  { ad: "bellek-yonetim-birimi", sinir: "surec-adres-alani", u: 2, f: 2, ayar: null, ek: 0,
    acar: ["surec-bellegi"] },
  { ad: "kalici-depolama", sinir: "dosya-sistemi-izni", u: 2, f: 0,
    ayar: "disk-sifrelemesi", ek: 2, acar: ["disk-veri", "yapilandirma", "gunluk"] },
  { ad: "bellenim", sinir: "acilis-zinciri", u: 3, f: 1,
    ayar: "imzali-acilis", ek: 2, acar: HEPSI },
  { ad: "guvenilir-platform-birimi", sinir: "anahtar-saklama", u: 3, f: 3, ayar: null, ek: 0,
    acar: ["anahtar-malzemesi"] },
  { ad: "ag-arayuzu", sinir: "dinlenen-uc", u: 1, f: 1, ayar: null, ek: 0, acar: ["ag-ucu"] },
  { ad: "cevre-birim-arayuzu", sinir: "aygit-bellek-erisimi", u: Infinity, f: 1,
    ayar: "aygit-adres-yalitimi", ek: 2, acar: ["cekirdek-bellek", "surec-bellegi"] },
  { ad: "bant-disi-yonetim-arayuzu", sinir: "yonetim-agi", u: 2, f: 1,
    ayar: "yonetim-agi-bolutlemesi", ek: 2, acar: HEPSI },
];

export const AYAR = ["imzali-acilis", "disk-sifrelemesi", "aygit-adres-yalitimi",
  "yonetim-agi-bolutlemesi"];

export const kalem = (katmanlar) => katmanlar.reduce((a, k) => a + KATMAN[k], 0);
// Esik: acik ayarlar kumesine gore bir sinirin gecilmesi icin gereken kalem sayisi.
export const esik = (s, yol, acik) => (yol === "u" ? s.u : s.f + (acik.has(s.ayar) ? s.ek : 0));

// En zayif halka: en dusuk esik, o esikteki sinirlar ve esigi <=1 olan sinirlarin birlesimi.
export function zayif(yol, acik = new Set()) {
  const e = SINIR.map((s) => esik(s, yol, acik));
  const min = Math.min(...e);
  const gevsek = SINIR.filter((s, i) => e[i] <= 1);
  const birlesim = new Set(gevsek.flatMap((s) => s.acar));
  return { min, minAd: SINIR.filter((s, i) => e[i] === min).map((s) => s.ad).join(" "),
    gevsek: gevsek.length, acilan: kalem([...birlesim]) };
}
// bt/olc.mjs — her bilesenin sinirini, esigini ve sinir dustugunde acilan kalemi sayar.
import { KATMAN, TOPLAM, SINIR, AYAR, kalem, esik, zayif } from "./bilesen.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const say = (n) => (n === Infinity ? "-" : n);

console.log(`varlik envanteri: ${TOPLAM} kalem / ${Object.keys(KATMAN).length} katman — ` +
  Object.entries(KATMAN).map(([k, v]) => `${k} ${v}`).join(", "));

const A = [-27, -22, 9, 10, 7, 10];
console.log("\n1. bilesen basina sinir (icerde: sinir dustugunde erisilen kalem)");
yaz(A, "bilesen", "sinir", "icerde", "disarida", "uzak", "fiziksel");
for (const s of SINIR) {
  const i = kalem([...new Set(s.acar)]);
  yaz(A, s.ad, s.sinir, i, TOPLAM - i, say(s.u), say(s.f));
}

const B = [-12, -28, 9, 9, 9];
console.log("\n2. en zayif halka (hicbir sertlestirme ayari acik degilken)");
yaz(B, "yol", "en zayif bilesen", "en dusuk", "esik<=1", "acilan");
for (const [ad, yol] of [["uzaktan", "u"], ["fiziksel", "f"]]) {
  const z = zayif(yol);
  yaz(B, ad, z.minAd, z.min, z.gevsek, z.acilan);
}

const C = [-26, 9, 9, 9];
console.log("\n3. ayarlar sirayla acildikca (fiziksel erisim)");
yaz(C, "acik ayar", "en dusuk", "esik<=1", "acilan");
const acik = new Set();
yaz(C, "(hicbiri)", zayif("f").min, zayif("f").gevsek, zayif("f").acilan);
for (const a of AYAR) {
  acik.add(a);
  const z = zayif("f", acik);
  yaz(C, `+ ${a}`, z.min, z.gevsek, z.acilan);
}

const D = [-34, 9];
console.log("\n4. esik dagilimi (tum ayarlar acik, fiziksel erisim)");
const hepsi = new Set(AYAR);
const dag = {};
for (const s of SINIR) dag[esik(s, "f", hepsi)] = (dag[esik(s, "f", hepsi)] || 0) + 1;
yaz(D, "esik (kalem)", "bilesen");
for (const k of Object.keys(dag).sort()) yaz(D, k, dag[k]);
yaz(D, "envanterin tamamini acan bilesen",
  SINIR.filter((s) => kalem([...new Set(s.acar)]) === TOPLAM).length);
varlik envanteri: 43 kalem / 7 katman — cekirdek-bellek 5, surec-bellegi 9, disk-veri 11, yapilandirma 6, anahtar-malzemesi 3, ag-ucu 4, gunluk 5

1. bilesen basina sinir (icerde: sinir dustugunde erisilen kalem)
bilesen                    sinir                    icerde  disarida   uzak  fiziksel
islemci                    ayricalik-kipi               25        18      2         2
bellek-yonetim-birimi      surec-adres-alani             9        34      2         2
kalici-depolama            dosya-sistemi-izni           22        21      2         0
bellenim                   acilis-zinciri               43         0      3         1
guvenilir-platform-birimi  anahtar-saklama               3        40      3         3
ag-arayuzu                 dinlenen-uc                   4        39      1         1
cevre-birim-arayuzu        aygit-bellek-erisimi         14        29      -         1
bant-disi-yonetim-arayuzu  yonetim-agi                  43         0      2         1

2. en zayif halka (hicbir sertlestirme ayari acik degilken)
yol         en zayif bilesen             en dusuk  esik<=1   acilan
uzaktan     ag-arayuzu                          1        1        4
fiziksel    kalici-depolama                     0        5       43

3. ayarlar sirayla acildikca (fiziksel erisim)
acik ayar                  en dusuk  esik<=1   acilan
(hicbiri)                         0        5       43
+ imzali-acilis                   0        4       43
+ disk-sifrelemesi                1        3       43
+ aygit-adres-yalitimi            1        2       43
+ yonetim-agi-bolutlemesi         1        1        4

4. esik dagilimi (tum ayarlar acik, fiziksel erisim)
esik (kalem)                        bilesen
1                                         1
2                                         3
3                                         4
envanterin tamamini acan bilesen          2

Sayılar ölçüm sınıfındadır; girdileri DI1–DI6’dır.

Alttaki Sınır Üsttekini Kurar

Birinci tablonun icerde sütunu bileşenleri iki gruba ayırır. Bellenim ile bant dışı yönetim arayüzü düştüğünde 43 kalemin tamamı açılır; disarida sütunları sıfırdır. Bellek yönetim birimi düştüğünde 9, güvenilir platform birimi düştüğünde 3 kalem açılır.

Fark, bileşenin önemli olup olmamasından gelmez; sırasından gelir. Bellenim (firmware), makine açıldığında ilk çalışan koddur ve kendisinden sonra çalışacak her katmanı o yükler. Bu zincire açılış zinciri (boot chain) denir: bellenim çekirdek yükleyiciyi, yükleyici işletim sistemi çekirdeğini, çekirdek de kullanıcı süreçlerini başlatır. Ayrıcalık kipi sınırını uygulayan kod da, dosya sistemi izinlerine bakan kod da bu zincirin üst halkalarındadır. Zincirin ilk halkası değiştirilirse üstteki hiçbir sınır kurulmaz — çünkü sınırı kuran şeyin kendisi değiştirilmiştir.

İmzalı açılış (secure boot) tam olarak bu yüzden vardır: her halka, bir sonrakini yüklemeden önce imzasını doğrular. Modeldeki imzali-acilis ayarı bellenimin fiziksel eşiğini 1’den 3’e çıkarır; imzayı atlatmak için imza denetiminin kapatılması, güvenilen anahtar kümesinin değiştirilmesi ve değişikliğin kalıcı olması gerekir.

Güvenilir platform birimi (trusted platform module) ters yöndedir. Sınırı dardır — yalnız 3 kalem, anahtar malzemesi. Ama eşiği hem uzaktan hem fiziksel erişimde 3’tür, çünkü anahtar birimden hiç çıkmaz; birim anahtarı kullanır, vermez. Dar ve derin bir sınır, geniş ve sığ bir sınırdan farklı bir işe yarar: birincisi az kalemi neredeyse kesin korur, ikincisi çok kalemi zayıf korur. İki sayı ayrı yazılmazsa bu fark görünmez.

Eşik İki İse Ne Değişir

İşlemcinin ayrıcalık kipi sınırı ile bellek yönetim biriminin süreç adres alanı sınırı modelde aynı eşiği taşır: 2. Sayı, iki ayrı koşulun aynı anda yanlış olması gerektiğini söyler. Ayrıcalık kipi için bunlar çekirdek kodunda geçilebilir bir hatanın bulunması ile o hataya ulaşan bir çağrı yolunun açık olmasıdır; ikisinden biri yoksa geçiş olmaz. Süreç adres alanı için bunlar bir sürecin kendi sınırının dışına yazabilmesi ile yazdığı yerin başka bir sürecin haritasında bulunmasıdır.

Eşiğin ikiye çıkması geçişi zorlaştırır — ama yalnız iki kalem bağımsızsa. Aynı yapılandırma kalemi ikisini birden kapatıyorsa, ya da aynı ayrıcalıklı hesap ikisini birden değiştirebiliyorsa, iki kalem tek kalem gibi davranır ve gerçek eşik 1’dir. Model bu bağımlılığı görmez: esik işlevi kalemleri sayar, aralarındaki bağı sormaz.

Sınırın yetmediği ilk yer burasıdır. Eşik tablosu bir üst sınır verir, alt sınır vermez; bir sınırın “iki kalemlik” olduğu yazıldığında bu, iki kalemin ayrı ayrı yanlış olması gerektiğini değil, en fazla iki kalemin gerektiğini söyler. Sayı bu yüzden yalnız başına kullanılmaz; yanına iki soru yazılır. Sayılan kalemler ayrı ayrı mı yönetiliyor? Tek bir yetki ikisini birden değiştirebiliyor mu? İkinci sorunun yanıtı evet ise sayı bire indirilir ve sınır, sınır sayılmaz.

Aynı sınırlama üçüncü sütun için de geçerlidir. Katman modeli surec-bellegi ile anahtar-malzemesi kalemlerini ayrı sayar, ama bir anahtar kullanılırken süreç belleğinde bulunur; o an bellek yönetim biriminin sınırı düşerse açılan kalem 9 değil, 9 artı o anda bellekte duran anahtardır. Envanteri katmana bölmek sayımı yapılabilir kılar, zamanı ise gizler.

Fiziksel Erişim Eşiği Sıfıra İndirir

İkinci tablo aynı envanteri iki yoldan okur. Uzaktan en zayıf sınır ağ arayüzüdür: eşik 1, açılan kalem 4. Fiziksel erişimde en zayıf sınır kalıcı depolamadır ve eşik 0’dır.

Sıfırın anlamı kesindir: hiçbir koşulun yanlış olması gerekmez. Şifrelenmemiş bir depolama birimi sökülüp başka bir makineye takıldığında dosya sistemi izinleri hiç sorulmaz, çünkü izinleri uygulayan şey diskin kendisi değil, o diski takan işletim sistemidir. İzin bitleri diskte veri olarak durur; onlara uyan bir çekirdek yoksa hiçbir şey uygulanmaz. Disk şifrelemesi bu eşiği 2’ye çıkarır: hem anahtar hem de anahtarı açan sır gerekir.

Çevre birim arayüzünün uzak sütunundaki tire de aynı ayrımın öteki yüzüdür. Aygıtın belleğe doğrudan erişimi uzaktan kullanılamaz; ama makineye fiziksel olarak bir aygıt takılabiliyorsa eşik 1’dir ve çekirdek belleğiyle süreç belleği, yani 14 kalem açılır. Aygıt adres yalıtımı açıldığında aygıtın gördüğü adres alanı sınırlanır ve eşik 3’e çıkar.

En Zayıf Halka Sayılır

Üçüncü tablo bu dersin karar taşıyan sayısını verir. Dört sertleştirme ayarı sırayla açılır ve her satırda açılan kalem okunur: 43, 43, 43, 43, 4.

Üç ayar açıldıktan sonra bile fiziksel erişimde envanterin tamamı açılmaktadır. Nedeni son sütundadır: esik<=1 sayısı 5’ten 4, 3, 2’ye iner ama sıfır olmaz, ve kalan gevşek sınırlardan biri her seferinde 43 kalem açan bant dışı yönetim arayüzüdür. İmzalı açılışı ve disk şifrelemesini açmak o bileşene hiç dokunmaz. Erişilen kalem ancak dördüncü ayar — yönetim ağının bölütlenmesi — açıldığında 4’e iner.

Bu, katman eklemenin kendiliğinden yol kapatmadığının sayısal karşılığıdır. Üç ayar üç ayrı sınırı güçlendirdi, üçü de gerçek iş yaptı, ama ölçülen sonuç değişmedi; çünkü ölçülen şey sınırların ortalaması değil, en zayıfının açtığı kalemdir. Sertleştirme sırası, en çok kalem açan gevşek sınırdan başlamalıdır — modeldeki sıra bunun tersiydi ve bedeli üç adım boyunca hiç kazanç elde edilememesi oldu.

Dördüncü tablo kalan tabloyu verir. Tüm ayarlar açıkken eşik dağılımı 1, 3 ve 4 bileşendir: bir bileşenin eşiği hâlâ 1’dir. O bileşen ağ arayüzüdür ve açtığı kalem 4’tür — dar bir sınır. Ayrıca sekiz bileşenden ikisi tek başına envanterin tamamını açar; bu iki bileşen, ölçüm ağındaki her makinede önce sayılması gereken kalemdir.

Özet

  • Bir bileşenin güvenlik değeri üç sayıdır: sınırın adı ve tarafı, sınırı geçmek için aynı anda yanlış olması gereken kalem sayısı, sınır düştüğünde erişilen kalem sayısı.
  • 43 kalemlik envanterde sekiz bileşenin açtığı kalem 3 ile 43 arasında değişir; bellenim ve bant dışı yönetim arayüzü tek başına envanterin tamamını açar, çünkü ikisi de açılış zincirinin ya da yönetim yolunun altında durur.
  • Uzaktan en düşük eşik 1’dir ve 4 kalem açar; fiziksel erişimde en düşük eşik 0’dır ve 43 kalem açar. Şifrelenmemiş depolamada dosya sistemi izni bir sınır değil, diskte duran veridir.
  • Dar ve derin sınır (güvenilir platform birimi: 3 kalem, eşik 3) ile geniş ve sığ sınır (kalıcı depolama: 22 kalem, eşik 0) aynı tabloda ancak iki sayı ayrı yazılırsa ayırt edilir.
  • Eşik sayısı kalemlerin bağımsız olduğunu varsayar. Aynı yetki ya da aynı yapılandırma kalemi ikisini birden değiştirebiliyorsa iki kalemlik sınır gerçekte tek kalemliktir; tablo bir üst sınır verir, alt sınır vermez.
  • Dört ayardan üçü açıldıktan sonra bile açılan kalem 43’te kalır; sayı ancak en çok kalem açan gevşek sınır kapatıldığında 4’e iner. Ölçülen şey sınırların ortalaması değil, en zayıfıdır.

Sonraki Adım

Donanımın çizdiği sınırlar sayıldı ve ikisinin envanterin tamamını açtığı görüldü. Ancak birinci tablodaki sınırların çoğunu donanım yalnız mümkün kılar; hangi isteğin geçeceğine karar veren kod donanımda değildir. Ayrıcalık kipini işlemci sunar, o kipte hangi sürecin koşacağını işletim sistemi seçer; dosya sistemi iznini disk saklar, o izne uyacak olan yine işletim sistemidir.

Sonraki ders bu karar katmanına iner ve tek bir soru sorar: aynı donanım üzerinde çalışan farklı işletim sistemi aileleri, aynı erişim isteğine kaç kalemde farklı yanıt verir.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat