Apakah setiap OS membutuhkan RAM?

76

Apakah ada OS yang dapat digunakan tanpa RAM, khususnya jenis yang saya dapat membuat flashdisk bootable dan menggunakannya di komputer? Ini menjadi canggung, karena booting pada dasarnya memuat OS dalam RAM.

Catatan: Saya awalnya ingin tahu tentang OS tanpa RAM untuk memeriksa apakah laptop saya (yang tidak bisa boot tetapi menyajikan layar kosong) RAM sudah rusak, tapi saya suka cara pertanyaan ini menjadi seperti bola salju.

Suvarna Pattayil
sumber
23
Saya tidak yakin apakah CPU dapat berfungsi sama sekali tanpa RAM, itu mungkin pertanyaan yang bagus untuk Computer Science.SE . Yang saya tahu pasti adalah bahwa Anda tidak akan sampai ke mana pun jika Anda bahkan tidak berhasil melewati BIOS.
12
@ AndréDaniel CPU memiliki cache yang, dari perspektif CS, juga merupakan memori akses acak. Jadi secara teori Anda tidak perlu modul RAM tambahan. Namun dalam praktiknya saya ragu bahwa arsitektur x86 memungkinkan ini.
Philipp
30
Semua argumen tentang penggunaan cache prosesor ini memiliki validitas yang meragukan, karena, setidaknya pada x86, cache bukanlah memori yang dapat Anda akses langsung. Kode Anda selalu mengacu pada RAM, tetapi prosesor secara otomatis mengelola cache sehingga tidak benar-benar harus mengambil data dalam RAM untuk data yang paling sering diakses. Tapi sekali lagi, tidak ada instruksi perakitan untuk mengatakan "simpan ini di cache" "tulis ini di cache", ada register dan ada memori utama (dengan semua mode akses yang aneh), titik.
Matteo Italia
3
(OTOH, secara teori Anda dapat mengeksploitasi RAM lain (mis. RAM video) atau periferal yang dipetakan dalam ruang alamat fisik)
Matteo Italia
13
CPU x86 modern memungkinkan Anda meletakkan cache on-die dalam mode "Cache sebagai RAM" - Saya pikir beberapa MSR perlu diatur untuk melakukan itu. Ini mungkin berlaku untuk beberapa CPU ARM juga. Cache pada CPU modern dalam jumlah yang lebih besar daripada apa yang dimiliki PC pertama Anda sebagai memori maksimum. Pada PC, firmware masih tidak bisa boot tanpa RAM. Anda memerlukan firmware khusus atau sesuatu yang bukan platform PC.
LawrenceC

Jawaban:

96

Apakah setiap OS membutuhkan RAM?
Untuk perangkat keras yang kompatibel dengan IBM PC, langkah wajib dari proses POST BIOS adalah untuk memeriksa apakah ada RAM untuk memuat BIOS. Secara opsional proses POST memeriksa fungsi RAM Anda dengan benar. Setelah proses POST, BIOS memuat bootloader ke RAM dan memberikan kontrol ke bootloader. Jadi jawaban untuk pertanyaan Anda ("Apakah setiap OS membutuhkan RAM?") Adalah: ya, setiap perangkat keras yang kompatibel dengan PC IBM membutuhkan setidaknya beberapa RAM yang berfungsi untuk melakukan booting. Ini berlaku untuk OS apa pun yang berjalan pada perangkat keras itu.

Perhatikan bahwa dalam pertanyaan awal OP, ada referensi ke "laptop", yang saya artikan sebagai: perangkat keras yang kompatibel dengan IBM PC. Untuk sisa jawaban ini, saya akan menganggap perangkat keras yang kompatibel dengan IBM PC.

Bisakah OS boot dengan RAM yang rusak?
Jika RAM Anda rusak (dan tidak sepenuhnya absen / rusak) atau jika Anda dapat (sebagian) ganti RAM Anda, Anda mungkin dapat boot menggunakan BadRAM dari BadMEM patch kernel. Ini mengharuskan Anda untuk mengkompilasi ulang kernel (terdengar lebih mudah daripada jika Anda melakukannya untuk pertama kali) dan Anda dapat reboot dan memberi tahu kernel di mana memori buruk Anda. Penjelasan yang bagus tentang penggunaan Memtest86 / Memtest86 + , BadRAM / BadMEM dapat ditemukan di sini .

Bisakah OS boot tanpa RAM dan menggunakan cache CPU sebagai RAM?
Sejauh yang saya tahu tidak ada cara untuk menggunakan cache CPU Anda sebagai RAM tanpa ada RAM di sistem Anda (seperti yang disarankan oleh @ philipp dan lainnya) di komentar. Jika ada, alangkah baiknya menambahkannya di sini. Satu-satunya kertas yang bisa saya temukan mengenai hal ini adalah makalah ini yang menyatakan: "Menggunakan cache prosesor sebagai RAM hingga RAM diinisialisasi". Tidak yakin apakah (dan bagaimana) itu akan bekerja tanpa RAM. Sejauh yang saya tahu tidak ada kode kerja yang melakukan booting OS pada PC yang kompatibel dengan IBM. Referensi apa pun terhadap pembuktian konsep, kode kerja, atau apa pun diterima dalam komentar dan saya akan menambahkannya ke jawaban ini.

Bisakah saya masuk ke BIOS?
Pertanyaan OP agak kabur jika laptop mampu melewati BIOS POST. Seperti yang ditunjukkan @Tonny, tidak ada OS yang akan membantu Anda untuk " sampai ke BIOS ". Anda memasukkan BIOS menggunakan F1atau F2atau F10atau DELatau ESCkunci, tergantung pada merek Anda dari BIOS.

Bagaimana memulihkan data dari laptop tanpa RAM?
Adapun tujuan di balik pertanyaan Anda: mengapa Anda perlu akses ke laptop Anda? Mungkin karena masih ada data pada HDD yang ingin Anda pulihkan? Jika itu masalahnya, jauh lebih mudah untuk mengeluarkan HDD (lihat manual) dan memasangnya ke perangkat penyimpanan eksternal atau langsung ke PC. Ini adalah panduan yang bagus untuk melakukan hal itu.

agtoever
sumber
3
Dalam praktiknya adalah mungkin untuk menjalankan mesin dengan RAM yang agak rusak (katakanlah, hanya ada satu bank yang tidak bekerja dengan benar). Jika BIOS tidak melihat (atau, jika itu memperhatikan, mungkin ada F1 override yang biasa) Anda masih dapat menjalankan OS seperti Linux dengan patch BadMEM / BadRAM, yang memerintahkan kernel untuk menghindari blok memori yang ditentukan.
Matteo Italia
5
@VusP: untuk hanya memeriksa RAM Anda menggunakan livecd / -usb dengan Memtest86 / Memtest86 +, lewati pengujian RAM di BIOS Anda dan jalankan memtest dari livecd / -usb.
agtoever
4
Siapa bilang pengujian RAM saat boot adalah " wajib "? Itu umum ketika mesin memiliki beberapa MB atau kurang, tetapi segera menjadi opsional ketika ukuran bertambah dan waktu menjadi penghalang.
Andrew Medico
3
@agtoever: Hah? Trik cache-sebagai-RAM tidak tiba-tiba berhenti bekerja ketika RAM diinisialisasi. Hanya saja pada saat itu bodoh untuk menghindari RAM, jadi tidak ada yang pernah mencoba. Tetapi triknya tidak ada hubungannya dengan RAM yang tidak diinisialisasi; saat itulah sebenarnya bermanfaat.
Mehrdad
3
@ Hai-Angel, itu tidak dapat mengeksekusi langsung dari disk karena cpu tidak dapat langsung mengakses isi disk. Itu harus menyodok perintah ke pengontrol disk dan menunggu untuk mentransfer blok data dari disk ke suatu tempat di ram. Hanya dari sana cpu dapat langsung menjalankan instruksi.
psusi
33

Secara teori itu mungkin , tetapi akan sangat lambat, karena itu perlu menggunakan disk untuk penyimpanan sementara yang tidak muat dalam cache CPU. (CPU memiliki beberapa megabyte cache karena bahkan RAM terlalu lambat untuk mereka. Pikirkan tentang itu.) Jadi Anda akan membutuhkan OS yang agak kecil.

(Yah, embedded-on-chip sistem dapat mengeksekusi kode baik dari RAM atau memori Flash internal - PC BIOS secara teori bisa melakukan hal yang sama, tetapi tidak dapat menjalankan seluruh OS.)

Tetapi, hal lain adalah, BIOS berjalan sebelum dan di luar sistem operasi yang diinstal, dan BIOS yang memungkinkan Anda mem-boot dari flashdisk atau apa pun. Jadi, jika Anda tidak dapat mencapai BIOS, maka tidak ada OS lain di dunia yang akan membantu Anda.

grawity
sumber
6
Mungkin saja CPU dapat menggunakan cache sendiri, bukan RAM. Ini bisa menjadi fitur yang berguna untuk bagian-bagian kode BIOS, yang berjalan sebelum tes memori. Tetapi membuat perangkat keras lain berfungsi tanpa RAM bisa jadi rumit. Anda tidak akan dapat melakukan DMA, jadi disk I / O harus dilakukan secara berbeda. Saya kira BIOS bahkan tidak akan mencoba memuat OS, jika tidak ada RAM yang dapat digunakan ditemukan. Ukuran cache lebih sedikit masalah. Beberapa MB mungkin tidak banyak dengan standar modern, tetapi sebuah OS dari hari-hari ketika satu MB RAM banyak, masih harus bekerja pada komputer modern.
kasperd
2
@kasperd DEC Alpha dirancang untuk menjalankan tahap pertama inisialisasi pengaktifan dari cache, dimuat dari "serial ROM". Ini karena CPU tidak dapat mengakses RAM, ROM konvensional, atau sumber daya yang dipetakan memori lainnya (yang mencakup semua perangkat I / O, IIRC) sampai tabel halaman telah diinisialisasi.
zwol
@ kegembiraan, bagaimana dengan SSD?
TechLife
@ TechLife: Masih lebih lambat dari RAM dengan beberapa pesanan daripada besarnya. Padahal, saya kira, jika Anda menggunakannya sebagai RAM ... itu hanya akan disebut RAM, jadi masih tidak.
grawity
15

Anda dapat, dengan susah payah, merancang sistem yang tidak mengandung RAM. Muat perangkat lunak Anda dari ROM (atau penyimpanan) dan lakukan semuanya dalam register atau cache. Sistem seperti itu akan memiliki penggunaan yang sangat sempit dan mengingat harga RAM saat ini menjadi sedikit sia-sia. Laptop off-the-shelf tidak akan berfungsi tanpa memori onboard.

Pertanyaan Anda yang sebenarnya lebih cenderung "Bagaimana cara mendapatkan informasi dari komputer yang tidak bisa boot" dan itu mudah. Bongkar, lepas drive, dan sambungkan ke wadah drive eksternal.

Namun, perlu diketahui bahwa komputer mana pun yang cukup umur sehingga Anda tidak bisa hanya mendapatkan RAM seharga $ 20 karena akan memiliki drive ATA (ATA biasa, bukan SATA). Antarmuka ini hampir punah hari ini, jadi Anda juga perlu menemukan kasing drive dengan kartu ATA serta adaptor ukuran-penuh untuk ukuran laptop. Saya punya satu yang saya beli pada tahun 2000, dan saya menyimpan beberapa case lama hanya untuk keperluan ini.

Peter
sumber
Sepakat. Tidak ada RAM berarti tidak ada tumpukan yang berarti tidak ada kemampuan untuk memanggil rutin. Kode apa pun yang bisa berfungsi dalam situasi ini harus perakitan hati-hati.
Loren Pechtel
Benar. Saya telah melihat kode yang melakukan itu. (Saya adalah bagian pertama dari rutin BIOS sebelum pengontrol memori diinisialisasi).
Hennes
2
@ LorenPechtel Itu tidak sepenuhnya benar. Tumpukan dapat (dan sering) disimpan dalam memori on-chip.
reirab
2
@ LorenPechtel tidak perlu. ARM tidak menggunakan stack untuk memanggil rutin.
domen
1
Sejauh yang saya bisa lihat chip tersebut memiliki SRAM internal ... yang dihitung sebagai RAM.
domen
10

Jika saya membaca pertanyaan dengan benar, semua orang di sini menggonggong pohon yang salah.

Dia menyatakan secara eksplisit "untuk sampai ke BIOS".

Jika laptop sangat rusak bahkan tidak bisa masuk ke BIOS, semua yang lain tidak ada gunanya.

Anda tidak dapat mem-boot OS APA SAJA ini terlepas dari situasi RAM.

Tonny
sumber
8

Asumsi Anda bahwa ingatannya buruk kemungkinan tidak valid. Jika Anda tidak mendapat bunyi bip atau pesan di layar, Penyebab utama hampir pasti adalah CPU yang gagal (agak tidak mungkin) atau mainboard yang gagal (sangat mungkin). Mainboard gagal seiring bertambahnya usia karena sambungan solder dingin, yang merupakan kejadian umum pada hari-hari awal pergerakan ROHS dan persyaratan untuk menggunakan solder bebas timbal. Teknik-teknik manufaktur telah dioptimalkan untuk menggunakan solder berbasis timah dan industri membutuhkan waktu untuk menangkap dan menyelesaikan masalah. Banyak produsen komponen yang tidak mau mengeluarkan uang untuk meningkatkan proses mereka. Setelah semua, perangkat akan menguji dan membakar dengan baik, hanya gagal beberapa bulan atau tahun kemudian, setelah garansi mungkin berakhir. Hanya dengan serangkaian kegagalan dan umpan balik negatif yang intens dari pengguna, produsen mulai memperbaiki keadaan. Pada laptop seperti itu, memiliki mainboard kembali untuk memperbaiki sambungan solder dingin hampir pasti biaya mahal.

selokan
sumber
Itu mungkin, tapi ingatan buruk juga bukan tebakan yang buruk. Saya telah melihat memori buruk (dan bahkan soket memori buruk) menyebabkan kegagalan POST beberapa kali sebelumnya. Tentu saja, pemeriksaan termudah untuk memori biasanya hanya dengan mencoba booting dengan berbagai stick yang dihapus atau boot dengan hanya satu stick yang dikenal baik. Jika itu menyelesaikan masalah, itu bisa berupa memori, slot memori, atau pengontrol memori.
reirab
5

Sebagian besar komputer awal 1980-an atau sekitar memiliki semacam sistem operasi (driver perangkat keras, dukungan IO, pemuatan program, antarmuka baris perintah yang sangat sederhana, dll) dalam chip ROM. Ini bisa berfungsi meskipun chip RAM tidak dapat beroperasi. Fitur ini digunakan dalam versi konten ROM khusus yang dirancang untuk menjalankan pengujian perangkat keras dan berkomunikasi sebagian besar melalui pager dan lampu keyboard.

CPU memiliki beberapa register untuk mengingat alamat perintah yang dieksekusi paling tidak, tetapi ini biasanya tidak disebut RAM.

Kode C reguler tidak dapat berjalan dalam sistem tanpa RAM karena menggunakan memori tumpukan untuk mengalokasikan variabel, dan tumpukan dalam RAM. Saat komputer baru-baru ini melakukan booting, RAM dinamis biasa pada awalnya tidak tersedia karena perangkat penyegaran RAM membutuhkan pengaturan awal untuk berfungsi. Kode assembly berjalan terlebih dahulu dan melakukan inisialisasi motherboard. RAM mulai bekerja dan kemudian kode C dapat berjalan.

h22
sumber
4
Paragraf terakhir tidak sepenuhnya benar. Tumpukan tidak harus dalam RAM off-chip. Sebenarnya cukup umum untuk stack berada di memori on-chip. Bahkan pada mesin normal, tumpukan utas yang saat ini dijalankan biasanya akan berada dalam cache dan hanya akan didorong keluar ke DRAM saat penjadwal menukar utas. Saya sudah menulis kode untuk DSP, di mana tumpukan berada dalam memori on-chip langsung-addressable dan tidak pernah menyentuh DRAM. Tentu saja, saya kira Anda bisa berpendapat bahwa memori on-chip secara teknis RAM dalam hal ini.
reirab
4
Juga, itu tidak biasa untuk setidaknya beberapa parameter dan mengembalikan nilai yang akan diteruskan ke fungsi C menggunakan register (daripada stack.) Selain itu, variabel lokal juga biasanya disimpan dalam register daripada di stack oleh kompiler C. Anda bahkan dapat secara khusus meminta kompilator memasukkan variabel tertentu dalam register menggunakan kata kunci 'register'. Tentu saja, sekali suatu fungsi membutuhkan lebih banyak variabel lokal daripada ruang pendaftaran Anda, Anda harus keluar ke memori, tetapi itu adalah kendala perangkat keras yang berlaku terlepas dari bahasa pemrograman.
reirab
4

Ketika saya kuliah di Universitas pada tahun 1967, Departemen Komputer memiliki Stantec Zebra . Memori terdiri dari drum magnetik 8192 kata. Ada juga 12 register dan dua akumulator. Anda mungkin mempertimbangkan RAM itu tetapi tidak seperti yang kita ketahui.

David Marshall
sumber
3

Anda memerlukan setidaknya pada cache chip untuk register (pada dasarnya jumlah kecil pada chip on-chip) sehingga unit eksekusi CPU dapat berfungsi. Jadi bahkan CPU Anda memiliki 'RAM'.

Tidak ada OS Von-Neumann yang dirancang tanpa persyaratan memori yang saya percaya.

Jadi tidak.

Hai Lo
sumber
3

Seperti semua orang lain di sini, saya setuju pada kenyataan bahwa Anda memerlukan RAM dan tidak dapat bekerja tanpanya, tetapi saya juga membaca yang berikut:

(Awalnya saya ingin memuat OS tanpa RAM untuk memeriksa apakah RAM sudah rusak, tapi saya suka cara pertanyaan ini menjadi semakin membesar.)

Ini sebenarnya ada di BIOS, ada fungsi untuk memeriksa RAM secara mendalam. Saat mem-boot dan masuk ke dalam BIOS, ubah opsi "Quick Power-on self test" ke mati, dan itu akan melakukan pemeriksaan lulus penuh pada RAM Anda. Opsi ini harus terletak di "fitur BIOS canggih", sesuatu seperti pilihan kedua pada AMI BIOS.

Harapan itu akan membuat Anda selangkah lebih maju. ;-)

Olivier M.
sumber
3

Anda tidak perlu RAM misalnya, gunakan mesin Turing .

Mesin Turing adalah perangkat hipotetis yang memanipulasi simbol pada pita rekaman sesuai dengan tabel aturan. Terlepas dari kesederhanaannya, mesin Turing dapat diadaptasi untuk mensimulasikan logika dari setiap algoritma komputer, dan sangat berguna dalam menjelaskan fungsi-fungsi CPU di dalam komputer.

(Saya tidak akan menganggap kaset sebagai RAM.)

Sekarang pertanyaan Anda yang sebenarnya seharusnya bertanya tentang "berguna" dan mendefinisikan apa yang Anda maksud dengan "berguna" .

Ian Ringrose
sumber
3
Pada tingkat konseptual Mesin Turing, semua jenis penyimpanan data baca-tulis pada dasarnya setara: RAM, register, cache, pita magnetik, disk. Satu-satunya perbedaan di antara mereka adalah kecepatan akses.
Barmar
1
@Barmar RAM berarti Memori Akses Acak. Itu berarti Anda dapat mengakses sel di dalamnya dalam urutan apa pun. Sel-sel pada kaset pada mesin Turing hanya dapat diakses secara berurutan (dalam arah atau bolak-balik). Jadi saya akan mengatakan rekaman pada mesin Turing secara definisi bukan RAM.
kasperd
1
@Barmar Itu tidak benar. Definisi RAM tidak memungkinkan untuk waktu pencarian. Oleh karena itu rekaman TM hanya tidak sesuai dengan definisi RAM, karena Anda tidak dapat mengakses sel sewenang-wenang tanpa mencari.
kasperd
1
@Barmar, gagasan tentang jam dinding mungkin tidak berlaku, tetapi gagasan waktu, karena di dalamnya memerlukan O (n) membaca operasi untuk sampai ke sana, tentu saja berlaku.
psusi
1
@Barmar, tidak, kamu tidak. Itulah sebabnya kami menggunakan notasi "O" besar untuk berbicara tentang kompleksitas matematis murni yang tidak terkait dengan berapa banyak "waktu" sesuatu yang nyata mungkin diperlukan. Model matematika dari tape drive di TM ini sedemikian rupa sehingga hanya bisa membaca ... di kedua arah ... tidak diperbesar ke depan atau ke belakang, dalam jumlah waktu berapa pun. Karenanya, jika Anda terakhir membaca byte 1, Anda tidak dapat membaca byte 27 tanpa terlebih dahulu membaca 26 byte di antaranya. Itu sebabnya bukan ram. Jika Anda ingin memori yang dapat melewati 26 byte itu, apakah itu membutuhkan waktu 0 atau 5 menit, itu akan menjadi ram, bukan kaset.
psusi
3

Ada OS khusus untuk penggunaan tertanam yang kehabisan ROM (hanya baca memori.) Untuk melakukan sesuatu yang bermanfaat, Anda biasanya masih membutuhkan setidaknya sejumlah kecil RAM. Saya belum melihat PC yang akan boot tanpa RAM.

Adapun pertanyaan awal tentang tes memori, jika komputer akan POST (yaitu membuatnya melewati Power On Self-Test dan mencoba untuk boot) maka Memtest86 dirancang khusus untuk menguji RAM Anda. Ini menguji 64KB RAM pertama, memuat dirinya ke dalam RAM itu, kemudian menguji sisa memori sistem Anda secara menyeluruh seperti yang Anda inginkan. Memori "Flakey" (tidak seperti memori buruk biasa) jarang terjadi, tetapi saya telah melihat Memtest86 menangkap sedikit buruk yang tidak terjawab tes memori komputer (setelah semua, tes memori POST dimaksudkan untuk menyelesaikan dalam jangka waktu yang masuk akal) , sementara tes tercepat memtest86 berjalan 5-10 menit, dengan tes yang lebih komprehensif memakan waktu berjam-jam.)

pengguna153822
sumber
1

Ya, Anda dapat memiliki komputer tanpa RAM. Ada mode khusus di sebagian besar prosesor x86 yang memungkinkan untuk menjalankannya hanya dengan cache. Jika Anda memeriksa coreboot (bekas linuxbios), itu bisa dilakukan. Ini disebut cache-as-ram. Sebenarnya Anda bisa melakukan keseluruhan sistem operasi berdasarkan ini, dan dengan cache berukuran besar modern itu bisa berakhir bahkan memiliki gui (periksa menuet-os). Tapi belum ada yang melakukannya.

Jorge Aldo
sumber