İçeriğe geç
academia.sh

Kurs Orta

Sahiplik ve Bellek Modeli

Yayın Güncelleme

Bu kursun sonunda

Kursa başla

01

Sahiplik Kuralları

Değerin nerede yaşadığının tipte görünür olması, tek sahip kuralının taşımayı zorunlu kılması, ödünç almanın sahipliği devretmeden erişim vermesi, dilimin sahiplik almadan veri görüntülemesi, ve bütün bunları derleme zamanında sınayan denetleyicinin neyi güvence altına aldığı.

  1. 01 Yığıt ve Öbek On dört değerlik bir ölçüm çekirdeği koşturulur ve her değerin ömrünü dört sınıftan birine yerleştirir — kapsam sonu, taşındığı yerde, açık çağrıda, kabıyla birlikte; sonuç 6/3/1/4 olarak sabittir. Kapsam sonunda biten değerlerin bitiş sırasının bildirim sırasının tam tersi olduğu ve öbeğe alınan bir değerin de aynı deftere düştüğü ölçülür.
  2. 02 Sahiplik ve Taşıma Bir değerin işleve, iç kapsama ve yapı alanına taşınmasının üçü de aynı sınıfa (taşındığı yerde) giriyor ve üçünde de değer tam olarak bir kez bitiyor; taşımadan sonra eski bağlamanın kullanılamaması derleyicinin derleme zamanında sınadığı bir kural, yeni sahip ise değeri sorunsuz kullanabiliyor.
  3. 03 Ödünç Alma Bir değer sahipliği hiç vermeden bir referans üzerinden okunabilir ve yazılabilir: ödünç sürerken defterde hiçbir kayıt oluşmaz, ödünç kapsamı kapandığında değer hâlâ sahibinde erişilebilir durumdadır. Paylaşımlı ve değiştirilebilir referans birbirini dışlar; bir referansın kapsamı, kaynağın kapsamının her zaman içinde kalmak zorundadır.
  4. 04 Dilimler Bir dilim, sahiplik almadan bir dizginin ya da bir büyüyen dizinin belirli bir aralığını görüntüler: dilim kullanılır, dilim biter, ama kaynak hiç bitmez. Dilimin uzunluğu kaynaktan türer ve boş bir dilim geçerlidir; dilim yaşarken kaynak değiştirilemez, dilim bittikten sonra değişiklik sorunsuz geçer.
  5. 05 Ödünç Denetleyicisi Ödünç denetleyicisi, derleme zamanında bir değerin sahiplik ve ödünç kurallarını sınar; üç redd örneği (taşıma sırasında canlı bir ödünç, okurken değiştirme, yerel bir sahibe referans döndürme) hep düzyazıda tarif edilir, yanlarına kabul edilen çözüm koşturulur. Aynı işi yapan iki farklı çözüm aynı defter kaydını üretebilir; ödünç kurallarına uyan bir kod ise yine de yanlış bir sonuç verebilir — denetleyici doğruluğu değil, yalnız sahiplik disiplinini güvence altına alır.

02

Yaşam Süreleri

Bir referansın geçerlilik aralığının bir kavram olarak kurulması, iki kaynağın ömrü ayrıştığında açıklamanın yazılmasının zorunlu olması, derleyicinin yazılmayan açıklamayı hangi kurallarla türettiği, ve bir yapının alanında referans tutmanın yapının kendi ömrüne getirdiği koşul.

  1. 01 Yaşam Süresi Kavramı Bir referansın geçerli olduğu kaynak aralığının bir çalışma zamanı nesnesi olmadığı, yalnız derleyicinin sınadığı bir aralık olduğu kuruluyor. Ödünç Denetleyicisi dersinde sınandığı gösterilen aralığa burada bir ad veriliyor ve iki bağımsız referansın aralığının iç içe olmak zorunda olmadığı ölçülüyor.
  2. 02 Açık Yaşam Süresi Açıklamaları Bir işlev birden çok referans alıp içlerinden birini döndürdüğünde, dönen referansın hangi girdiye bağlı olduğu kaynaktan tek başına çıkarılamaz ve açık bir yaşam süresi açıklaması gerekir. Açıklamanın bir referansın ömrünü uzatmadığı ya da kısaltmadığı, yalnızca var olan bir ilişkiyi kaynağa yazdığı ve derleyicinin bu yazıyı bir istek olarak doğruladığı ölçülüyor.
  3. 03 Yaşam Süresi Çıkarım Kuralları Derleyicinin bir imzada yazılmayan yaşam süresi açıklamasını hangi kurallarla türettiği ölçülüyor. Aynı imza açık ve örtük biçimde yazılıp koşturuluyor ve ikisinin de aynı davranışı verdiği gösteriliyor; çıkarımın kapsamadığı imzada açıklamanın yine zorunlu kaldığı bir redd-kabul çiftiyle sınanıyor.
  4. 04 Yapılarda Referans Tutma Bir yapının alanında referans tutmanın yapının kendi ömrüne getirdiği koşul ölçülüyor: yapı, referans verdiği veriden uzun yaşayamaz. Aynı veri bir yapıya taşınarak ve ödünç verilerek tutuluyor; taşınan alanın yapıyla birlikte bittiği, ödünç verilen verinin yapıdan sonra bittiği koşturularak karşılaştırılıyor.

03

Paylaşımlı Sahiplik

Öbekte tekil sahipliğin özyinelemeli tipleri mümkün kılması, sayacın paylaşılan bir değerin ömrünü belirlemesi, aynı sayacın iş parçacıkları arasında atomik biçimi, ödünç denetiminin çalışma zamanına taşınması, ve iki değerin birbirini tutmasıyla ömrün hiç bitmemesi.

  1. 01 Öbekte Tekil Sahiplik Bir değerin öbekte yaşarken de tek bir sahibi kalabildiği, kabıyla birlikte biten bir değerin kabın kendi sırasına bağlı olduğu ve bu tekilliğin kendine referans veren bir tipi mümkün kıldığı ölçülüyor.
  2. 02 Referans Sayımı Bir Rc değerinin sayacının her kopyada arttığı, her bitişte azaldığı ve değerin ancak sayaç sıfıra inince deftere düştüğü ölçülüyor; bir referans almanın bu sayacı hiç değiştirmediği ve hangi kopyanın bırakıldığının değil kaç kopyanın kaldığının belirleyici olduğu gösteriliyor.
  3. 03 Atomik Referans Sayımı Aynı sayma düzeneğinin Arc ile kurulduğunda da birebir aynı bitiş kaydını ürettiği, farkın davranışta değil sayacın nasıl güncellendiğinde olduğu ölçülüyor; hangi bağlamda kullanılabildiği K04'ün konusu olduğu için burada anlatılmıyor. Paylaşılan verinin Arc üzerinden yalnızca okunabildiği, doğrudan değiştirilemediği ayrıca gösteriliyor.
  4. 04 İç Değişebilirlik Aynı 'bir yazan ya da çok okuyan' kuralının derleme zamanı yerine çalışma zamanında, bir sayaçla sınandığı ölçülüyor; bir bağlamanın kendisi değişmezken içindeki değerin RefCell ile değişebildiği ve başarısız bir ödünç denemesinin panik değil bool sonucuyla alınabildiği gösteriliyor. Kural kaybolmuyor, yer değiştiriyor.
  5. 05 Döngüsel Referanslar İki değer RefCell üzerinden birbirini Rc ile tuttuğunda güçlü sayacın hiçbir zaman sıfıra inmediği ve defterde hiçbir kaydın oluşmadığı ölçülüyor — kursun tek sızıntısı. Bir zayıf referansın sayacı artırmadan aynı döngüsel referansı kırdığı ve kırıldıktan sonra defterde iki kaydın birden oluştuğu koşturuluyor; güçlü ve zayıf sayaç değerleri basılıyor.

Bitirme sınavı

Sahiplik ve Bellek Modeli — Bitirme Sınavı

Hazırlanıyor

Bu kursun soru bankası henüz tamamlanmadı. Yeterli soru eklendiğinde sınav burada otomatik olarak açılır.

Aramak için yazmaya başlayın.

↑↓ ↵ Esc gezin · aç · kapat