Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ağ yeniden yönlendiricileri, istemci-sunucu ortamlarında dosya erişim performansını iyileştirmek ve ağ trafiğini azaltmak için fırsatçı kilitleri (oplock) kullanır.
Bu belgeler ağ yeniden yönlendirme geliştiricilerine yöneliktir, ancak bazı bilgiler istemci uygulama geliştiricileri için geçerlidir. İstemci uygulamalarıyla ilgili daha fazla oplock belgesi için Windows SDK'sindeki Fırsatçı Kilitler makalelerine bakın.
Oplock'a genel bakış
Oplock (fırsatçı kilit), istemcinin sunucuda bulunan bir dosyaya yerleştirdiği bir kilittir. Çoğu durumda, istemci verileri yerel olarak önbelleğe alabilmesi için bir oplock isteğinde bulunur. Uzak sunuculara sahip istemcilerdeki ağ yeniden yönlendiricileri, yerel sunuculardaki istemci uygulamaları gibi oplock'ları kullanır. Çeşitli geçerli ve eski oplock'ların açıklaması için bkz. oplock türleri.
Oplock'lar, dosya sunucusu istemcilerinin (SMB ve SMB2 protokollerini kullanan istemciler gibi) belirli bir dosya veya akış için arabelleğe alma stratejisini tutarlı bir şekilde dinamik olarak değiştirmesine olanak tanır. Oplock kullanımı performansı artırır ve ağ kullanımını azaltır. Bir istemci, uzak dosya işlemlerinin ağ performansını artırmak için dosya verilerini yerel olarak arabelleğe alabilir ve bu da ağ paketlerini gönderme ve alma gereksinimini azaltır veya ortadan kaldırır. Örneğin:
- İstemci verilere başka bir işlemin erişmediğini biliyorsa, istemci uzak sunucudaki bir dosyaya bilgi yazmak zorunda olmayabilir.
- İstemci, uzak dosyaya başka hiçbir işlemin veri yazmadığını biliyorsa, istemci uzak dosyadan önceden okunan verileri arabelleğe alabilir.
Uygulamalar ve sürücüler, bu dosyaları kullanması gerekebilecek diğer uygulamaları etkilemeden dosyalara saydam bir şekilde erişmek için oplock'ları da kullanabilir.
NTFS gibi dosya sistemleri, dosya başına birden çok veri akışını destekler. Sistem, akış tanıtıcıları üzerinde oplock'lar verir; bu, sistemin belirli bir dosya akışı açılışında oplock'u sağladığı ve işlemlerin bu akışa uygulandığı anlamına gelir. Çoğu durumda, bir akıştaki işlemler başka bir akıştaki oplock'ları etkilemez. Daha fazla bilgi için bkz. Oplocks isteme ve verme.
FAT gibi alternatif veri akışlarını desteklemeyen dosya sistemleri için, oplock tartışmalarında "akış" kelimesine referans verildiğinde "dosya" olarak düşünün.
Çekirdek, öncelikle FsRtlInitializeOplock gibi FsRtlXxx yordamları aracılığıyla oplock paketinin çekirdek oplock işlevini uygular. Dosya sistemleri, dosya sistemlerinde oplock işlevselliğini uygulamak için bu paketi çağırır. Bu bölümdeki oplock makalelerinde NTFS dosya sisteminin çekirdek oplock paketiyle nasıl birlikte çalışıldığı açıklanmaktadır. Diğer dosya sistemleri benzer şekilde çalışır ancak küçük farklılıklar olabilir.
Oplock anahtarları
Akış tutamacını, aynı istemci önbelleği görünümüne ait birden fazla tutamağın tanımlanmasında kullanılan bir GUID değeri olan oplock anahtarı ile ilişkilendirebilirsiniz. Oplock anahtarının, akış tanıtıcısının işaret ettiği FILE_OBJECT yapısıyla ilişkili olduğunu söylemek daha doğrudur. Bu ayrım, tanıtıcıyı çoğalttığınızda (örneğin, DuplicateHandle işlevini kullanarak) önemlidir. Yinelenen tanıtıcıların her biri aynı temel FILE_OBJECT yapısına başvurur.
Akış tutamacını oluştururken oplock anahtarını ( IoCreateFileEx'e) açıkça sağlayabilirsiniz. Tanıtıcı oluşturma sırasında açıkça bir oplock anahtarı belirtmezseniz, sistem tanıtıcıyı kendisiyle ilişkilendirilmiş benzersiz bir oplock anahtarına sahip olarak ele alır. Bu benzersiz anahtar, başka herhangi bir sap üzerindeki diğer anahtarlardan farklıdır.
Bir oplock, aşağıdaki koşulların tümü sağlandığında bozulur:
- Verilen oplock tanıtıcısı dışında bir tanıtıcıda dosya işlemine başlanır.
- oplock tutamacıyla ilişkilendirilmiş oplock anahtarı, işlemin tutamacıyla ilişkili anahtardan farklıdır.
- İşlem şu anda verilen oplock ile uyumlu değil.
Aynı işlem veya iş parçacığı uyumsuzluk yaratan işlemi yapsa bile oplock bozulur. Örneğin, özel bir oplock aşağıdaki durumlarda hemen bozulur:
- İşlem, kendisine özel bir kilit (oplock) verilmiş bir akışı açar.
- Aynı işlem, farklı (veya hayır) bir oplock anahtarı kullanarak aynı akışı yeniden açar.
Daha fazla bilgi için bkz Oplock'ların Kırılması.
Oplock anahtarlarının tanıtıcılarda bulunduğunu ve tanıtıcıyı oluşturduğunuzda onları tanıtıcının üzerine 'yerleştirdiğinizi' unutmayın. Hiçbir oplock verilmese bile bir tanıtıcıyı oplock anahtarıyla ilişkilendirebilirsiniz.