RAM olmayan, ancak diski olan bir bilgisayar RAM'li olana eşdeğer mi?


18

Anladığım kadarıyla bellek birçok şey için kullanılıyor. Disk önbellek görevi görür ve programların talimatlarını ve yığınlarını ve yığınlarını içerir. İşte bir düşünce deneyi. Bir bilgisayarın gıcırdama yapması için gereken hız veya süreyi umursamıyorsa, çok büyük bir diske sahip olduğu varsayılarak, sahip olunabilecek minimum minimum bellek miktarı nedir? Hafızadan kurtulmak ve sadece bir diske sahip olmak mümkün mü?

Disk önbelleğe alma gerekli değildir. Diskte takas alanı kurarsak, program yığını ve yığın bellek de gerektirmez. Belleğin bulunmasını gerektiren bir şey var mı?



3
Bu sorunun ardındaki fikir nedir?
Yves Daoust

12
"Disk" tanımlayın. Hızla disksiz bir dünyaya doğru ilerliyoruz (Terry Pratchett'in buna şahit olması gerekmediğine sevindim). Bu, tüm depolama alanlarının muhtemelen tersine de olsa, bir tür katı durum veya sorunuza cevap veren bir tür olacağı anlamına gelir.
Peter - Monica

2
Bellek bellektir
Édouard

8
Rastgele adreslenebilir bellek, bildiğim kadarıyla bilgisayarlar için bir gereklilik değildir. Bir Turing makinesinden gelen bant rastgele adreslenemez. İsterseniz hiçbir şey blok başına yalnızca bir bit okumanızı / yazmanızı engellemez.
Édouard

Yanıtlar:


24

Elbette. Prensip olarak, uygun donanım verildiğinde, her şey diskte saklanan sadece bir diskiniz olabilir. CPU herhangi bir yükleme veya saklama talimatı yaptığında, bunu bir diske okuma veya yazma işlemine dönüştüren bazı donanımlar olabilir. Son derece yavaş olurdu: manyetik bir diskte, her arama yaklaşık 10 ms sürer, böylece saniyede yaklaşık 100 rastgele erişim okuma ve yazma yapabilirsiniz.

Bazı sistemler, adres alanlarına flash bellek eşlemelidir. Flash bellek, kalıcı (kalıcı) depolama sağlar. Yani, bazı açılardan bu, bahsettiğiniz şeye benziyor - bu sistemlerde genellikle RAM de var.


6
@MSalters, bir diski (veya üzerine ekstra donanım katmanı) RAM benzeri hale getirmek için değiştirirsek, o zaman sadece RAM olarak da adlandırabileceğimizi iyi bir noktaya işaret eder. Sorun şu ki, "Hafızadan kurtulmak ve sadece bir diske sahip olmak mümkün mü?" Sorusu çok belirsiz. Bellek ve disk ile neyi kastediyoruz? Modern bir masaüstü bilgisayarda bulunanları mı kastediyoruz? O zaman cevap hayır. Bazı varsayımsal bellek ve disk mi kastediyoruz? Sonra bu durumda ikisi arasındaki fark yine de bulanıklaşır ve soru "mekanik tabanlı RAM'li bir bilgisayara sahip olmak mümkün mü?" .
JBentley

1
AS / 400 tür işleri böyle. Tek Düzey Depolama ve yalnızca tek bir Adres Alanı vardır. Disk ve bellek, platform ürün yazılımı tarafından tek bir depolama soyutlamasında birleştirilir, işletim sisteminin kendisi yalnızca tek bir düz birleşik depolama alanı görür. İşaretçi yok, yalnızca nesne başvuruları var. Nesneler bellekten diske ve platform yazılımı tarafından şeffaf bir şekilde geri taşınır (PC-konuşmada BIOS, AS / 400-konuşmada SLIC). Diskleri çıkardıysanız ve yalnızca RAM'iniz varsa veya RAM'inizi çıkartıp yalnızca diskleriniz olsaydı, işletim sistemi ve uygulamalarda bir fark yaratmaz.
Jörg W Mittag

Ayrıca HDD'lerin ömrünün çok daha kısa olacağını düşünüyorum. Ve bir SSD için daha da kötüsü. Büyük olasılıkla Android telefonların takas olmamasının nedeni
Suici Doga

16

Hesaplanabilirlik açısından, her modern bilgisayarın, tek depolaması yazılabilen tek bir doğrusal bant hücresi olan bir Turing Machine tarafından simüle edilebileceği bilinmektedir. Sınırsız miktarda disk depolama alanı eklemeye devam edebileceğinizi varsayarsak, yalnızca sabit disklere sahip bir bilgisayar kadar güçlüdür. Yani kesinlikle hafızasız bir bilgisayar yapabilirsiniz.

Tabii ki, "sınırsız alan" sabit diskleri yoktur, ancak sınırsız RAM de yoktur.

Bazı pratik sorunlar vardır, örneğin, diskteki farklı alanların ve adreslerin eşlenmesi için, ara depolama ve yönetilen disk adresleri için diske yazılan bir işletim sistemi olan kurallara ihtiyacınız olacaktır. Gerçekte, sabit sürücünüzde RAM'i yakından taklit edersiniz.


14

Soru sadece akademik değil. Ticari olarak üretilen en eski bilgisayarlardan birinin [özür dilerim, hangi hazırlıksız olduğunu hatırlamıyorum] herhangi bir RAM'e sahip olmadığı tarihsel bir kayıt meselesidir - tüm programlar doğrudan manyetik bir tamburdan [dönen bir silindirden talimatlar getirilerek yürütülmüştür. dış yüzeyi mıknatıslanabilir (diskler daha sonra geldi)]. Nispeten yavaştı, ancak rekabetin çoğundan çok daha ucuzdu. [bu 'tüp' günlerinde geri döndü]

İlginç bir şekilde, 'optimize edici montajcı' olarak bilinen şimdi kullanılmayan bir araçla geldi - yani montajcı sadece makine talimatlarını üretmekle kalmadı, her talimat için zaman miktarını en aza indirgemek için bunları ardışık olarak yazdı. tamburun bir sonrakine dönmesini bekliyorum.


3
Stantec Zebra'yı düşünüyor olabilirsiniz - archive.computerhistory.org/resources/text/Standard/… . 1967'de üniversiteye gittiğimde hala CS bölümünde bir tane vardı.
David Marshall

3
Aslında, IBM 1408'i düşünüyor olabileceğimi düşünüyorum.
PMar

8
Davul hafızası olan Royal McBee LPG-30 üzerinde çalışan bir programcı hakkında Mel'in Hikayesi'ne ( catb.org/jargon/html/story-of-mel.html ) bakın .
db48x

@ db48x: Bu hikayenin ne kadar havalı olduğunu unutmuştum. Muhtemelen 10 yıldır okumadım.
Peter Cordes

7

Hayır. Disk sürücüleri RAM gibi Rastgele Adreslenebilir değildir. Bunun yerine blok depolama cihazlarıdır. Onlardan bir bayt okuyamaz veya yazamazsınız. Ve CPU'nuz tüm sektörü aynı anda okuyamaz, bu rasgele erişime ihtiyaç duyarlar. İşletim sistemleri bu ayrıntı düzeyini sizden gizler, ancak bunu tüm sctorları RAM'e okuyarak, değiştirerek ve geri yazarak yaparlar.

Sonuç olarak, rasgele erişimli bir depolama bloğuna ihtiyacınız vardır. Bu , SRAM'den (hızlı bir RAM türü) yapılan CPU önbelleği olabilir .

Sadece diskler değil. Flash bellek, düşük fiyatının anahtarı olan bloklardan yapılmış tasarımdır. Hatta normal disk sektörlerinden çok daha büyük bloklara sahiptir, ancak bunu işletim sisteminden gizlemek için dahili olarak RAM kullanır.

Bir CPU tarafından doğrudan kullanılabilir kalıcı depolama alanı oluşturabilirsiniz. EEPROM depolaması bu kategoriye girer (Elektronik Olarak Silinebilir Programlanabilir "Salt Okunur" Bellek - "Okuma için Optimize Edilmiş" gerçekten daha iyi bir açıklama olsa da).


5
"Hayır" ın "Evet, ancak özel olarak oluşturulmuş diskler gerektirmesi" olduğunu düşünüyorum.
Taemyr

3
Her ikisinde de kesinlikle bir bayt okuyabilirsiniz. Yapamayacağınız şey tek bir bayt yazmaktır, çünkü yazma işlemlerinin bir kerede tüm blok yazmasına ihtiyacı vardır. Bununla birlikte, prensipte değiştirilmemiş verileri orijinal bloktan yeni bir bloğa kopyalayarak, gerektiğinde yeni veriler yazıp sonra tekrar orijinal bloğa kopyalayarak bir bloğu değiştirememenizin bir nedeni yoktur. Diskinizi oldukça hızlı bir şekilde yıprayacaksınız, ancak bu OP'nin sorusundan kaçınılmaz.
Graham

3
Ve "engelleme" fiziksel disk alanının verimli kullanılması için yapılır: Eğer blok tanımlamak için "gerçek" her veri parçası etrafında yer ihtiyacı sağlamak bloklar vb arasındaki "bekçi" uzay hiç yoktur teknik bloklar biri olamazdı nedeni bayt uzunluğunda (ancak hız, kapasitede olduğu gibi daha da düşecektir).
İşkembe

6
Aslında, mevcut RAM bile gerçekten byte-adreslenebilir değil - DDR3 seri çekimde çalışır ve minimum okuma / yazma boyutu 8 64 bit kelimedir (yani 64 bayt); Ben bir uzman değilim, ama aynı hizada erişimin de gerekli olduğunu iddia ediyorum. Tüm bunlar, blok boyutunun 512 bayt civarında olduğu eski disklere çok benzemez, bu yüzden bu ayrımların çoğunlukla tarihsel olduğunu, çizginin gerçekten bulanık olduğunu söyleyebilirim.
Matteo Italia

1
(ayrıca, hiçbir şey tüm bir bloğu kullanmanızı engellemez - boyut ne olursa olsun - sadece bir bayt tutmak için - biraz verimsiz ama diskleri ödeyen kişi olmadığım sürece sorun yok)
Matteo Italia

1

Sanal bellek kullandığınızda ve sayfa hatalarını işlemeniz gerektiğinde, en azından sayfa hatasını işleyen kural dışı durum işleyici, sabit sürücüden veri okuyan ve önce kirli sayfaları diske yazan sayfa sürücüsü ve sayfa tabloları gerekir her zaman RAM'de olmak. Çünkü RAM'de değilse, onları tekrar RAM'e değiştiremezsiniz. Ayrıca en az bir sayfa RAM için yer açmanız gerekir.

30 MB önbellek ile büyük bir 12 çekirdekli Xeon gibi bir CPU'nuz varsa, ne RAM ne de sabit sürücüye sahip bir sisteminiz olabilir, ancak sadece önbellek kullanın. (Bunun gerçekten çalışıp çalışmadığından veya herhangi bir nedenle RAM gerekli olup olmadığından emin değilsiniz).


IIRC, x86, ana önbellek olarak dahili önbellek kullandığı bir moda sahiptir . electronics.stackexchange.com/questions/16485/… bazı ayrıntılara sahiptir. Bence bazen "dolgu modu yok" yani CPU aslında önbellek hatlarını harici bellekten doldurmaya çalışmaz. Bu, "sistem aracısı" LMA önbelleğine DMA yükleyemediğinden, sabit sürücü G / Ç için DMA kullanılmasını engelleyebilir. L4 eDRAM ile bir Skylake üzerinde çalışabilir, çünkü DMA dahil her şeyi önbelleğe alabilen bir bellek tarafı önbellek (Broadwell'in aksine) olarak ayarlanmıştır . Programlanmış IO hala disk için çalışır.
Peter Cordes

Tabii ki, bu noktada, 15M yıl önce iyi bir miktar olan 128MiB RAM ile bir Çip Üzerinde Sistem çalıştırıyorsunuz. Sadece L3 SRAM önbellekleri ile, bir masaüstü çipinde hala 4 ila 8MiB'dir, bu da çok soyulmuş bir Linux için yeterli, ancak DOS için kolayca yeterlidir. Kodunuzun çoğu RAM değil ROM'daysa, sorun olmaz.
Peter Cordes

1

Kavramsal olarak mümkündür. RAM sadece önbellekleme seviyesidir. Modern bir bilgisayarda birçok önbellek seviyesi vardır (CPU'nun L1, L2, L3 .. önbelleklerine bakın, tabii ki Ram, takas alanı - ki bu, RAM olarak kullanılan diskin mantıksal bir bölümüdür ...) veya bir tane ekleyin, makine çalışacaktır. Örneğin, bir Ubuntu canlı cd'si HDD'nin önbellek seviyesini kullanamayabilir. Ancak, RAM seviyesinin yokluğunu destekleyen herhangi bir işletim sistemi olduğunu düşünmüyorum.


1
İşletim sistemi değil, talimatların koç haline gelmesini gerektiren donanım (aslında adres alanında eşlenmiş).
Ángel

@Angel, modern bir işletim sisteminde, bir programın çalışması için metnin (talimatlar), bss, yığın ve yığının belleğe yüklenmesi gerçekten gerekli mi? Takasta (disk) olamazlar mı? Linux'ta söyleyin.
Tosh

1
Bilgisayar bilimi veya bilgisayar mühendisliğinden mi bahsediyoruz? Bir işletim sisteminin uygulanmasını bilmiyorum, ne donanım seviyesi, sadece Church-Turing tezine dayanıyorum. Belki piyasada bulunan mevcut donanımı kullanarak veya mevcut işletim sistemlerini kullanarak bu mümkün değildir, ancak teorik bir senaryoda mümkün olabilir.
Picci

1
@ Bu işletim sistemi değil, donanım sorunu. CPU'nuz, talimat işaretçisi tarafından gösterilen bellek adresinde bulunan bir komutu yürütür. Yani sadece bir diske sahip olmak işe yaramaz (donanımınızı değiştirmeden). Sorunuzu cevaplamak için, tüm bölümlerin belleğe yüklenmesi gerekmez, aslında işletim sistemi bunları yalnızca program bunlara erişmeye çalıştığında yükleyebilir. Aşırı bir sayaç örneği olarak, hdd'den bir seferde bir kelimeyi * okuyan bir emülatör kullanarak programı "diskten" çalıştırabilirsiniz. Ancak bellekte olmanız gerekir, bu yüzden hala biraz RAM'e ihtiyacınız vardır .
Ángel

1
Üzgünüz, @Tosh: " emülatörünüzün hafızada olması gerekir".
Ángel

-1

Teknik olarak RAM, işlem hızını artırmak için kullanılan birincil geçici bir bellektir. Güç kesildikten sonra, birincil bellekteki veriler kaybolur. Bir disk kullanırsak, yani söylediğiniz gibi, RAM değil, sadece diskimizi çalıştırabiliriz, ancak daha fazla okuma yazma yükü olurdu, böylece sistemi önemli ölçüde yavaşlatır. Bu yüzden RAM kullanıyoruz.


CS.SE'ye Hoşgeldiniz! Daha fazla okuma-yazma yükünün sık sık sistem çökmesi olasılığını artırdığı iddiasını haklı gösterebilir misiniz? Bu bana doğru gelmiyor.
DW

It depends on the is u are using. Like in unix/Linux there is a concept known as buffer cache. It can be used to store prefetched blocks or the blocks marked for delayed write. But in Windows or Mac there is no such concept. Hence, you have to access required blocks from secondary storage. Now while running parallel processes the read write overhead would increase and the processing speed would decrease consequentially. The processes won't be able to execute thereby slowing the computer such that it starts hanging and subsequently crashes
Sanket Gupte

2
That sounds like a misconception. Slowing a computer down doesn't mean that the computer will crash.
D.W.
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.