Her işletim sisteminin RAM'e ihtiyacı var mı?


76

RAM olmadan kullanılabilecek bir işletim sistemi var mı, özellikle bilgisayardan önyüklenebilir bir önden çekiş oluşturup kullanabildiğim türden? Önyükleme temelde RAM'de işletim sistemi yüklüyor çünkü bu garipleşiyor.

Not: Başlangıçta dizüstü bilgisayarımın (önyükleme yapmayan ancak boş bir ekran sunan) RAM'in kötü olup olmadığını kontrol etmek için RAM'siz bir işletim sistemi hakkında bir şeyler bilmek istedim, ancak bu sorunun kartopu biçimini sevdim.


23
Bir CPU'nun RAM olmadan bile çalışıp çalışamayacağından emin değilim, bu, Computer Science.SE için iyi bir soru olabilir . Kesin olarak bildiğim şey, BIOS'u geçmeyi başaramazsanız bile hiçbir yere varamayacağınızdır.

12
@ AndréDaniel, bir CS açısından, aynı zamanda rasgele erişim belleği olan bir CPU'ya sahiptir. Yani teoride ek RAM modüllerine ihtiyacınız yok. Ancak pratikte x86 mimarisinin buna izin verdiğinden şüpheliyim.
Philipp

30
İşlemci önbelleğini kullanma hakkındaki tüm bu argümanlar şüpheli bir geçerliliğe sahiptir, çünkü en azından x86'da önbellek doğrudan erişebileceğiniz bir bellek değildir. Kodunuz her zaman RAM’e atıfta bulunur, ancak işlemci, en sık erişilen veriler için RAM’de verileri almak zorunda kalmaması için önbelleklerini otomatik olarak yönetir. Fakat yine de, bunu "önbellekte sakla", "bunu önbellekte yaz" diyecek hiçbir montaj talimatı yok, kayıtlar var ve ana hafıza (tüm tuhaf erişim modlarıyla) periyodu var.
Matteo Italia

3
(Otoh, teoride olabilir diğer RAM (örn Video RAM istismar) ya da çevre birimleri fiziksel adres alanında eşleştirilmiş)
Matteo Italia

13
Modern x86 CPU'lar kalıp önbelleğini "RAM olarak Önbellek" moduna geçirmenize izin veriyor - bence bazı MSR'lerin bunu yapması gerekiyor. Bu, bazı ARM işlemciler için de geçerli olabilir. Modern CPU'larda önbellek, ilk PC'nizin maksimum belleğe sahip olabileceğinden daha fazla miktardadır. Bir bilgisayarda, bellenim hala RAM olmadan önyükleme yapmaz. Özel bir ürün yazılımına veya PC platformu olmayan bir şeye ihtiyacınız olacaktır.
LawrenceC

Yanıtlar:


96

Her işletim sisteminin RAM'e ihtiyacı var mı?
IBM PC uyumlu donanım için, BIOS POST işleminin zorunlu bir adımı, BIOS'u yüklemek için RAM olup olmadığını kontrol etmektir. İsteğe bağlı olarak POST işlemi, RAM'inizin doğru çalışıp çalışmadığını kontrol eder. POST işleminden sonra, BIOS önyükleyiciyi RAM'e yükler ve önyükleyiciyi kontrol eder. Bu nedenle sorunuzun cevabı ("Her işletim sisteminin RAM'e ihtiyacı var mı?"): Evet, IBM PC uyumlu her donanımın en azından önyüklenmesi için çalışan bir RAM gerekir. Bu, o donanım üzerinde çalışan tüm işletim sistemleri için geçerlidir.

OP'nin orijinal sorusunda IBM PC uyumlu donanım olarak yorumladığım "dizüstü bilgisayar" a atıfta bulunduğuna dikkat edin. Bu cevabın geri kalanında IBM PC uyumlu bir donanım kabul edeceğim.

Bir işletim sistemi hatalı RAM ile başlatabilir mi? RAM'iniz
arızalıysa (ve tamamen mevcut değilse / kırılmamışsa) veya RAM'inizi (kısmen) değiştirebiliyorsanız , BadMEM'in çekirdek yamaları BadRAM'ını kullanarak önyükleme yapabilirsiniz . Çekirdeği yeniden derlemenizi gerektirir (ilk kez yaparsanız olduğundan daha kolay sesler) ve çekirdeği yeniden başlatıp kötü belleğinizin nerede olduğunu söyleyebilirsiniz. Memtest86 / Memtest86 + , BadRAM / BadMEM kullanımının güzel bir açıklaması burada bulunabilir .

Bir işletim sistemi RAM olmadan önyükleme yapabilir ve CPU önbelleğini RAM olarak kullanabilir mi?
Bildiğim kadarıyla CPU'nuzun önbelleğini, sisteminizde hiçbir RAM olmadan (@philipp ve diğerleri tarafından önerildiği şekilde) yorumlarda RAM olarak kullanmanın bir yolu yoktur. Varsa, buraya eklemek güzel olurdu. Bu konuda bulabildiğim tek kağıt, "RAM başlatılana kadar işlemcinin önbelleğini RAM olarak kullanmak" diyen bu kağıt . RAM olmadan çalışacak (ve nasıl) emin değil . Bildiğim kadarıyla IBM uyumlu bir PC'de bir işletim sistemi önyükleyen bir çalışma kodu yok . Kavramların ispatı, çalışma kodu ya da herhangi bir şeye yapılan herhangi bir referans yorumda açıktır ve ben de bu cevaba ekleyeceğim.

BIOS'a erişebilir miyim?
Dizüstü bilgisayarın BIOS POST'unu geçebilmesi durumunda OP'nin sorusu biraz belirsiz. @Tonny'nin işaret ettiği gibi, hiçbir işletim sistemi " BIOS'a gitme " konusunda size yardımcı olmaz . Sen kullanarak BIOS girmek F1veya F2veya F10veya DELveya ESCBIOS markanız bağlı olarak anahtar.

Dizüstü bilgisayardaki verileri RAM olmadan nasıl kurtarırım?
Sorunuzun arkasındaki hedefe gelince: neden dizüstü bilgisayarınıza erişmeniz gerekiyor? Muhtemelen, kurtarmak istediğiniz HDD’de hala veri bulunduğundan? Bu durumda, HDD'yi çıkarmak (kılavuza bakınız) ve harici bir depolama aygıtına veya doğrudan bir PC'ye bağlamak çok daha kolaydır. İşte sadece bunu yapmak için güzel bir rehber.


3
Pratikte ise biraz kusurlu RAM (diyelim ki, düzgün çalışmıyorsa sadece bir banka yoktur) ile bir makineyi çalıştırmak mümkün. BIOS farketmezse (veya fark ederse, normal F1 geçersiz kılma olabilir), çekirdeği belirtilen bellek bloklarından kaçınması için çekirdeğe BadMEM / BadRAM yamasıyla Linux gibi bir işletim sistemi çalıştırabilirsiniz.
Matteo Italia

5
@VusP: RAM'inizi yalnızca Memtest86 / Memtest86 + ile bir livecd / -usb kullanarak kontrol etmek için BIOS'unuzdaki RAM testini atlayın ve memtest'i livecd / -usb'den çalıştırın.
agtoever

4
Önyükleme sırasında RAM testinin " zorunlu " olduğunu kim söylüyor ? Makinelerin birkaç MB veya daha azına sahip olmaları yaygındı, ancak boyutlar büyüdükçe ve zaman engelleyici hale geldiğinde yakında isteğe bağlı hale geldi.
Andrew Medico

3
@ agtoever: Huh? RAM olarak önbellek numarası, RAM başlatıldığında aniden çalışmayı durdurmaz. Sadece bu noktada RAM'den kaçınmanın aptalca olduğu, bu yüzden kimse denemez. Fakat püf noktası RAM'in başlatılmamasıyla hiçbir ilgisi yok; Bu sadece gerçekten işe yaradığında.
Mehrdad,

3
@ Hi-Angel, cpu doğrudan disk içeriğine erişemediğinden doğrudan diskten yürütülemiyor. Komutları disk denetleyicisine sokması ve veri bloklarını diskten koçtaki herhangi bir yere aktarmasını beklemelidir. Sadece oradan cpu direk olarak talimat verebilir.
psusi

33

Teoride mümkündür , ancak çok yavaş olacaktır, çünkü diski CPU önbelleklerine sığmayan herhangi bir geçici depolama için kullanması gerekirdi. (İşlemcilerde birkaç megabayt önbellek var, çünkü RAM bile onlar için çok yavaş . Bunu düşünün.) Bu yüzden oldukça küçük bir işletim sistemine ihtiyacınız olacak.

(Eh, gömülü sistemler-on-chip olabilir RAM veya dahili flaş bellek birinden kodu çalıştırmak -. Bilgisayar BIOS teoride aynı yapabilirdi, ama bu bütün OS koşamam)

Ancak, bir başka şey de, BIOS kurulu herhangi bir işletim sisteminin önünde ve dışında çalışır ve bir pendrive veya her neyse önyüklemenizi sağlayan BIOS'dur. Eğer BIOS'a erişemiyorsanız , dünyadaki başka hiçbir işletim sistemi size yardım etmeyecektir .


6
Bir CPU'nun RAM yerine kendi önbelleğini kullanması olabilir. Bellek testinden önce çalışan BIOS kod bölümleri için faydalı bir özellik olabilir. Ancak RAM olmadan çalışmak için başka bir donanım almak zor olabilir. DMA'yı yapamazsınız, bu yüzden disk G / Ç farklı şekilde yapılmalıdır. Kullanılabilir RAM bulunmazsa, BIOS bir işletim sistemi yüklemeyi bile deneyemez. Önbellek boyutu olsa da, daha az bir sorun var. Birkaç MB, modern standartlara göre çok fazla olmayabilir, ancak bir MB RAM'in çok olduğu o günlerde bir işletim sistemi hala modern bilgisayarlarda çalışmalıdır.
kasperd

2
@ kasperd DEC Alpha , ilk açılış aşamasını önbellek, "seri ROM" dan önceden yüklenmiş olarak çalıştırmak üzere tasarlanmıştır. Bunun nedeni, CPU’nun sayfa tabloları başlatılana kadar RAM’e, geleneksel ROM’a veya diğer herhangi bir bellek eşlemeli kaynağa (tüm I / O cihazlarını içeren IIRC dahil) erişememesiydi.
zwol

@grawity ne SSD'ler hakkında?
TechLife

@ TechLife: RAM'den, siparişlerden büyüklükten daha yavaş. Yine de, sanırım, eğer RAM olarak kullanacak olsaydın ... buna sadece RAM denirdi , o yüzden hala hayır.
Grawity

15

Biraz çaba ile RAM içermeyen bir sistem tasarlayabilirsiniz. Yazılımınızı ROM’dan (veya depolamadan) yükleyin ve kayıt defterlerinde veya önbellekte her şeyi yapın. Böyle bir sistem son derece dar bir kullanıma sahip olacaktı ve bugünkü RAM fiyatlarına verilenler biraz anlamsız olacak. Kullanıma hazır bir dizüstü bilgisayar, bazı dahili bellekler olmadan çalışmaz.

Asıl sorumuz daha büyük olasılıkla "Önyüklenmeyecek bir bilgisayardan nasıl bilgi alabilirim" ve bu kolay. Sökün, sürücüyü çıkarın ve harici bir sürücü kasasına bağlayın.

Ancak, yalnızca 20 ABD doları değerinde çalışan RAM alamayacağınız kadar eski herhangi bir bilgisayarın ATA (normal ATA, SATA değil) sürücüsüne sahip olacağını unutmayın. Bu arabirim bugün neredeyse tükenmiştir, bu nedenle bir ATA kartlı dizüstü bilgisayar boyutunda adaptöre sahip bir sürücü çantası da bulmanız gerekir. 2000 yılında aldığım bir tane var ve bu amaç için bir kaç eski vakayı tuttum.


Kabul. RAM yok, yığın yok anlamına gelir, bu da rutin çağrı yapmamak anlamına gelir. Bu durumda işe yarayabilecek herhangi bir kodun özenle el işi yapılması gerekir.
Loren Pechtel

Doğru. Bunu yapan kod gördüm. (Bellek denetleyicisi başlatılmadan önce bir BIOS rutininin ilk parçasıydım).
Hennes

2
@LorenPechtel Bu tamamen doğru değil. Yığın çip üzerinde saklanabilir (ve genellikle saklanır).
reirab

2
@LorenPechtel gerekli değil. ARM, rutini çağırmak için yığın kullanmaz.
domen

1
Bu cipsleri görebildiğim kadarıyla RAM olarak sayılan dahili SRAM var.
domen

10

Eğer soruyu doğru okursam, buradaki herkes yanlış ağaca havlıyor.

O açıkça "BIOS'a ulaşmak için" diyor.

Dizüstü bilgisayar bu kadar kırılırsa BIOS'a bile girmeyecek, her şey anlamsız.

RAM durumundan bağımsız olarak bu konuda HERHANGİ bir işletim sistemi açamazsınız.


8

Belleğin bozuk olduğu varsayımınız büyük olasılıkla geçersiz. Hiçbir bip sesi veya ekran mesajı alamazsanız, kök neden neredeyse kesinlikle başarısız bir CPU (biraz muhtemel) veya başarısız bir anakarttır (büyük olasılıkla). Anakartlar, ROHS hareketinin ilk günlerinde yaygın bir durum olan ve lehimsiz lehim kullanma gereksinimi olan soğuk lehim bağlantılarından dolayı her zaman yaşla başarısız olur. Üretim teknikleri kurşun bazlı lehim kullanmak için optimize edildi ve sektörün sorunları çözmesi ve çözmesi biraz zaman aldı. Birçok bileşen üreticisi, işlemlerini geliştirmek için para harcamak konusunda çok istekli değildi. Ne de olsa, cihazlar bir garanti süresi dolduktan sonra, sadece aylar veya yıllar sonra arızalanmak için, sadece iyi bir şekilde test edip yakılabilir. Sadece artan başarısızlık dağları ve kullanıcılardan gelen yoğun olumsuz geri bildirimlerle üreticiler işleri geliştirmeye başladı. Böyle bir dizüstü bilgisayarda, anakartın soğuk lehim bağlantılarını düzeltmek için tekrar akıtılması neredeyse kesinlikle masraflı değildir.


Bu mümkün, ancak kötü bellek de kötü bir tahmin değil. Kötü bellek (ve hatta kötü bellek soketlerinin) POST'un daha önce birçok kez başarısız olmasına neden olduğunu gördüm. Tabii ki, hafızanın en kolay kontrolü genellikle sadece farklı çubuklarla çıkarılmış önyüklemeyi ya da bilinen tek bir iyi çubukla önyüklemeyi denemektir. Bu sorunları çözerse, ya bellek, bellek yuvaları ya da bellek denetleyicisiydi.
reirab

5

1980'lerin ya da yaklaşık eski bilgisayarların çoğu, ROM yongasında bir çeşit işletim sistemine (donanım sürücüleri, IO desteği, program yükleme, çok basit komut satırı arayüzü vb.) Sahipti. RAM yongaları çalışmazken bile bir şekilde çalışabilir. Bu özellik, donanım testlerini çalıştırmak ve çoğunlukla bip ve klavye lambaları aracılığıyla iletişim kurmak için tasarlanmış özel ROM içerik sürümlerinde kullanılmıştır.

CPU, en azından yürütülen komutun adresini hatırlamak için birkaç kayıt içerir, ancak bunlar normal olarak RAM olarak adlandırılmaz.

Düzenli C kodu, değişkenleri tahsis etmek için yığın belleği kullandığı ve yığın RAM'de olduğu için RAM olmayan bir sistemde çalışamaz. Yeni bir bilgisayar önyüklendiğinde, düzenli bir dinamik RAM başlangıçta mevcut değildir, çünkü RAM yenileme cihazı ilk kurulumun çalışmasını gerektirir. Montaj kodu önce çalıştırılır ve ana kart başlatma işlemini gerçekleştirir. RAM çalışmaya başlar ve sonra C kodu çalışabilir.


4
Son paragraf tam olarak doğru değil. Yığın çipsiz RAM'de olması gerekmez. Yığının yonga belleğine yerleştirilmesi aslında oldukça yaygın. Normal makinelerde bile, halen çalışmakta olan iş parçacığının yığını genellikle önbellekte olur ve yalnızca zamanlayıcı iş parçacığı değiştirdiğinde DRAM'ye itilir. Yine de, DSP'ler için kod yazdım, burada yığının doğrudan adreslenebilir çip hafızasında bulunduğu ve DRAM'ye asla dokunmadığı. Tabii ki, bu durumda çip üzerindeki belleğin teknik olarak RAM olduğunu iddia edebilirsin.
reirab

4
Ayrıca, kayıtların (yığın yerine) C işlevlerine geçirilmesi gereken parametrelerin ve dönüş değerlerinin en azından bazıları için alışılmadık bir durum değildir. Ayrıca, yerel değişkenler de genellikle C derleyicileri tarafından yığın yerine kayıtlarda depolanır. Derleyiciden, 'register' anahtar kelimesini kullanarak bir register içine belirli bir değişken koymasını bile isteyebilirsiniz. Elbette, bir fonksiyon için kayıt yaptığınız alandan daha fazla yerel değişkene ihtiyaç duyulduğunda, belleğe gitmeniz gerekecektir, ancak bu programlama dilinden bağımsız olarak uygulanan bir donanım kısıtlamasıdır.
reirab

4

1967'de üniversiteye gittiğimde Bilgi İşlem Departmanında Stantec Zebra vardı . Bellek, 8192 kelimelik bir manyetik tamburdan oluşuyordu. Ayrıca 12 kayıt ve iki akümülatör vardı. Bu RAM'i düşünebilirsiniz ama bizim bildiğimiz gibi değil.


3

CPU yürütme biriminin çalışabilmesi için kayıtlar için en azından küçük bir on-chip RAM (çip üzerinde çok az miktarda) olması gerekir. Yani işlemcinizde bile 'RAM' var.

Hiçbir Von-Neumann işletim sistemi inandığım hafızanın gereği olmadan tasarlanmadı.

Yani hayır


3

Buradaki diğer tüm insanlara göre, RAM'e ihtiyaç duyduğunuz ve onsuz çalışamayacağınız konusunda hemfikirim, ama ayrıca aşağıdakileri de okudum:

(Başlangıçta RAM'in kötü olup olmadığını kontrol etmek için RAM'siz bir işletim sistemi yüklemek istedim, ancak bu sorunun kartopu biçimini beğendim.)

Bu aslında BIOS'ta var, RAM'i derinlemesine kontrol etmek için bir işlev var. BIOS'un önyüklemesi ve içine girerken, "Hızlı Açılışta Kendi Kendini Sınama" seçeneğini kapalı olarak değiştirin ve RAM'inizde tam bir kontrol geçişi yapacaktır. Bu seçenek, AMI BIOS'taki ikinci seçenek gibi "gelişmiş BIOS özellikleri" içinde bulunmalıdır.

Umarım bu size bir adım daha ileri götürür. ;-)


3

RAM'e ihtiyacınız yok , örneğin bir Turing makinesi kullanın .

Bir Turing makinesi, bir bant şeridindeki simgeleri kural tablosuna göre işleyen varsayımsal bir cihazdır. Basitliğine rağmen, bir Turing makinesi herhangi bir bilgisayar algoritmasının mantığını simüle etmek için uyarlanabilir ve bir bilgisayarın içindeki bir CPU'nun işlevlerini açıklamada özellikle yararlıdır.

(Bir kaseti RAM olarak kabul etmem.)

Şimdi gerçek sorularınız “faydalı” hakkında soruyor olmalı ve ne demek istediğinizi “faydalı” olarak tanımlamalıdır .


3
Bir Turing Makinesi'nin kavramsal seviyesinde, tüm okuma-yazma veri depolama türleri esasen eşdeğerdir: RAM, yazmaçlar, önbellek, manyetik bant, disk. Aralarındaki tek fark, erişim hızı.
Barmar

1
@Barmar RAM, Rasgele Erişim Belleği anlamına gelir. Bu, içindeki hücrelere istediğiniz sırayla erişebileceğiniz anlamına gelir. Bir Turing makinesindeki bir banttaki hücrelere, yalnızca sırayla erişilebilir (her iki yönde veya dönüşümlü olarak). Yani bir Turing makinesindeki kasetin tanımı gereği RAM değil diyelim.
kasperd

1
@Barmar Bu yanlış. RAM'in tanımı arama sürelerine izin vermiyor. Bu nedenle, bir TM'nin bandı, RAM tanımına uymaz çünkü keyfi hücrelere aramadan erişemezsiniz.
kasperd

1
@Barmar, duvar saati zaman nosyonu geçerli olmayabilir, fakat zaman (n) 'i gerektiren o (n) oraya gitme işlemlerini gerektiren zaman nosyonu mutlaka yapar.
psusi

1
@Barmar, hayır, yapmazsınız. Bu nedenle, gerçek bir şeyin ne kadar “zaman” ile ilgili olabileceği ile ilgili olmayan tamamen matematiksel karmaşıklık hakkında konuşmak için büyük “O” gösterimini kullanıyoruz. Bu TM'deki bir teyp sürücüsünün matematiksel modeli, her iki yönde de okuyabilir ... ... herhangi bir zamanda ileri veya geri zoom yapamaz. Bu nedenle, en son bayt 1'i okuduysanız, önce 26 baytı okumadan bayt 27'yi okuyamazsınız. Bu yüzden ram değil. Bu 26 baytı atlayabilen bir bellek istiyorsanız, bunu yapmak 0 ya da 5 dakika sürse de bu bir kaset değil, ram olacaktır.
psusi

3

Tamamen bir ROM dışında çalışan gömülü kullanım için özel işletim sistemleri vardır (sadece okuma belleği) Ancak RAM olmadan açılacak bir bilgisayar görmedim.

Bellek testi hakkındaki asıl soruya gelince, eğer bilgisayar POST yapacaksa (yani Power On Self Test'inizi yapıp önyüklemeye çalışın), Memtest86 RAM'inizi test etmek için özel olarak tasarlanmıştır. İlk 64KB RAM’i test eder, kendisini bu RAM’e yükler, ardından sistem belleğinizin geri kalanını istediğiniz gibi test edin. "Flakey" hafızası (sadece düz kötü hafızanın aksine) nadirdir, ancak Memtest86’nın bilgisayar hafızası testinin kaçırdığı zaman zaman kötü bir bit yakaladığını gördüm (sonuçta, POST hafıza testinin makul bir süre içinde tamamlanması bekleniyor) memtest86'nın en hızlı testi saatlerce süren daha kapsamlı testlerle 5-10 dakika sürüyor.)


1

Evet, RAM olmadan bir bilgisayarınız olabilir. Çoğu x86 işlemcisinde yalnızca önbellekle çalıştırmayı sağlayan özel bir mod vardır. Coreboot (eski linuxbios) olup olmadığını kontrol ederseniz, bunu yapabilir. Adı RAM olarak önbellek. Aslında buna bağlı olarak bütün bir işletim sistemi yapabilirsiniz ve modern büyük boyutlu önbelleklerle bir gui'ye (son kullanıcı menüsü) bile son verebilir. Ama henüz kimse yapmadı.

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.