Katı hal depolama ile ne yapar?


13

Mekanik depolamada, düşük seviyeli disk çalışması seek(), sabit sürücü kafalarının, belirli bir alandan okumaya hazır olmaları için bir konuma hareket etmelerine neden olur.

SD kartlar, flash sürücüler ve SSD'ler gibi yarıiletken depolamada, donanımın hareketli parçaları yoktur, sadece elektrik sinyalleri vardır.

NAND uçucu olmayan bir RAM teknolojisinin donanımın temeli olduğunu varsayarsak, seek()böyle bir aygıtın donanım düzeyinde gerçekte hangi işlevi yerine getirir?

Açık olmak gerekirse, aşağıdakilerin gerçekleştiğini zaten biliyorum:

  1. Kullanıcı alanı programı seek()sistem çağrısını veya işletim sistemine özgü eşdeğerini çağırır

  2. Çekirdek sistem çağrısını yorumlar ve aramak için SATA denetleyicisine bir mesaj gönderir

  3. SATA denetleyicisi komutu yorumlar ve katı durumdaki bağlı disk aygıtına arama yapmasını söyler (ya da katı halini tanıyacak kadar akıllıdır ve hatta söylemez mi ??)

  4. Ne yok katı hal cihaz yapar, bildiğim ??? "aramak" komutuyla.

İşletim sistemine bağlı olacak ayrıntılar varsa, çekirdek sürüm 3.2 ile GNU / Linux'un nispeten standart bir masaüstü sürümünü varsayalım.


2
Bence büyük bir şişman NOP yapıyor. Şaka gibi, eğer bir SSD sürücüsü olsaydım, şeylerin olabildiğince hızlı gerçekleşmesini sağlamak için önbelleğe "ihtiyati" okuma yaparım. Ama bu sadece en ufak bir fikrim yok bir şeyde belirsiz bir tahmin olduğundan, bir tuz tanesi ile al ...
ppeterka

"Arama" işlemlerinin artık düşük düzey depolama arayüzünde kullanıldığını düşünmüyorum. Varsa, bir sonraki G / Ç işlemi için depolanan konumu değiştirirlerdi.
David Schwartz

Yanıtlar:


4

Linux'a atıfta bulunuyorsanız, seek hala gerekli bayt sayısının ilerisinde yer alır. Örneğin:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Sıfırlar 1024 bayt'ı diskin başlangıcına kopyalamaya başlayacak, sdb'nin sd kart mı yoksa ssd sürücü mi olduğu önemli değil, soyutlama denilen küçük bir şey nedeniyle bunun gerçek mekaniği daha düşük bir seviyede ele alınmaktadır.

Güncelleme

Şimdi ne dediğini anlıyorum. SD kart örneğimin ardından, flash bellek sayfa adı verilen bir şey kullanır ve sayfalar belirli bir boyutta gelir. bir arama geldiğinde, işletim sistemi okuma ve yazma için belirli bir sayfaya gitmek için sd kart / kart denetleyicisine komut gönderir .


Dosyada mantıksal olarak ilerlediğinin farkındayım , ancak soyut "bloklar" açısından dosya üzerindeki mantıksal etkinin yanı sıra, aslında araması söylendiğinde donanım farklı bir şey yapıyor mu? lseek()Gerekirse sistem çağrısına belirli bir örnek olarak bakabilirsiniz . Bu sistem çağrısının sadece mantıksal arama yapmakla kalmayıp, aynı zamanda mekanik bir diskle uğraşırken HDD kafalarının hareket etmesine neden olduğunu biliyorum, bu yüzden SSD ne yapıyor?
allquixotic

@allquixotic Cevabımı güncelledim.
MDMoore313

1
Fiziksel olarak dönen bir sabit sürücüde bile, işletim sistemi LBA X'i almak için sürücü için bir komut (SCSI komutu, ATA / SATA komutu veya USB yığın depolama komutu) gönderir. Ana bilgisayar, sürücüye sürücüyü herhangi bir seviyeye giderseniz, sürücünün bellenimi bunu yapar. Depolama komutlarına yanıt olarak bir SSD ürün yazılımının ne yaptığına dair bir fikir edinmek istiyorsanız, bunları bulabiliyorsanız Jasmine OpenSSD projesinin bazı özelliklerine bakın, bazıları çok düşük bir seviyede şeyleri açıklar.
LawrenceC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.