Saya tahu bahwa dalam sistem 32 bit, memori terbesar yang dapat kita miliki adalah 4GB (2 ^ 32). Tapi saya tidak jelas apa implikasinya dalam hal file.
Saya pikir kita dapat memiliki file dengan ukuran sewenang-wenang dalam HD kita, bukan? Lebih dari 4GB. Jadi, apakah ada peringatan dalam sistem 32 bit dan file besar?
Saya berasumsi bahwa program 32-bit tertentu tidak akan dapat memuat file lebih dari 4GB atau apakah saya salah?
2
Jawaban:
Itu hanya masalah jika Anda memiliki aplikasi yang mencoba memuat seluruh file dalam memori.
Seorang programmer yang melakukan itu untuk file besar harus ditembak. Ada cara yang lebih baik.
Beberapa perangkat lunak mungkin bersendawa pada file yang sangat besar (artinya besar> 2 Gigabyte), tetapi perangkat lunak seperti itu biasanya akan melakukannya pada sistem 64-bit juga.
Dalam kebanyakan kasus itu disebabkan oleh programmer yang memiliki perangkat lunak yang dirancang untuk dan diuji dengan file yang lebih kecil. Perangkat lunak ini mengandung kesalahan logika yang mencegahnya bekerja dengan baik dengan file yang sangat besar. Ini bukan batasan OS itu sendiri.
(Contoh yang sangat umum adalah menggunakan nomor 32 yang ditandatangani untuk melacak posisi dalam file, yang memberikan masalah pada batas 2 GB.)
Dalam hal contoh video Anda: Hanya sebagian kecil (bagian yang benar-benar diputar dan sejumlah detik tambahan buffering) biasanya dimuat dalam memori. Biasanya tidak lebih dari 2-3 Megabita setiap kali.
Adapun file ukuran sewenang-wenang pada harddisk: Itu tidak benar.
Setiap sistem file memiliki batasan ukuran maksimum dari setiap file tunggal.
Misalnya dalam kasus Fat32 batasnya adalah 4 GB per file. NTFS memiliki batas 16 TB. Linux filesystem ext3 memiliki batas 16GB, 256GB atau 2TB tergantung pada apakah filesystem tersebut menggunakan blok 1K, 2K atau 4K.
sumber
16GB, 256GB or 2TB limit depending on whether the filesystem uses 1K, 2K or 4K blocks
Bagaimana ukuran blok memengaruhi batas file?Ini salah; sangat mungkin untuk CPU 32-bit untuk menggunakan lebih dari 4 GiB RAM, sama seperti itu mungkin untuk CPU 16-bit untuk menggunakan lebih dari 64 KiB RAM. Ingatlah bahwa 16-bit 80286 dapat mengatasi 16 MiB melalui bus alamat 24-bitnya (pada saat ini dianggap sebagai sejumlah besar memori; 80286 menjadi tersedia pada tahun 1982, dan 1983 melihat pengenalan hard disk 3,5 "pertama. , dengan kapasitas penyimpanan 10 MB ; IBM PC AT , yang dirancang dengan Intel 80286, hadir dengan RAM minimum 256 KiB), dan Intel 8086 vintage 1979 memiliki ruang alamat 1 MiB (dan menyediakan kapasitas komputasi PC IBM 5150 asliyang dapat ditingkatkan ke jumlah RAM 256 KiB yang sama, jauh melampaui batas asli alamat 16-bit 64 KiB). Mencari teknik-teknik seperti Physical Address Extension , switching bank (yang, meskipun membutuhkan perawatan dari programmer, adalah umum pada PC awal dan komputer elektronik sebelumnya karena kesederhanaan implementasi relatifnya; Apollo Guidance Computer adalah desain bank-switched ) dan model memori yang disegmentasi seperti model segmentasi memori x86 .
Faktor pembatas akhirnya untuk seberapa banyak memori dapat diatasi tanpa bergantung pada teknik-teknik tersebut adalah lebar bus alamat asli CPU , yang independen dari lebar kata asli CPU, atau bitness seperti yang biasa disebut . Sangat mungkin untuk membuat CPU yang berfungsi dengan data dalam potongan 64-bit (yang akan membuatnya menjadi CPU 64-bit) meskipun memiliki bus alamat 16-bit; Saya tidak dapat melihat aplikasi nyata untuk hal seperti itu, tetapi secara teknis itu bukan kontradiksi.
Sekarang, banyak orang tidak peduli dengan teknik-teknik ini pada CPU 32-bit karena sekitar waktu mereka umum di PC, 4 GiB benar-benar yang Anda butuhkan, dan CPU 32-bit umumnya memiliki bus alamat yang cukup lebar untuk tidak membuat ini menjadi perhatian; bahkan kemampuan rendah 80386SX memiliki bus alamat 24-bit yang dapat digunakan , memungkinkan untuk 16 MiB ruang alamat pada tahun 1988 ketika tahun yang sama melihat pengenalan setup hard disk 20 MB . Tidak perlu khawatir dengan segmentasi, PAE dan teknik serupa membuat hidup jauh lebih mudah pada programmer. Perangkat lunak server 32-bit, bagaimanapun, umumnya ditulis untuk menangani lebih dari 4 GiB RAM.
Dan tentu saja, untuk perspektif, perangkat lunak 16-bit secara teratur bekerja dengan file yang lebih besar dari 65.536 byte. Dibutuhkan sedikit pemikiran jika Anda ingin perangkat lunak Anda bekerja secara asli dengan file yang terlalu besar untuk masuk ke dalam blok memori yang dialokasikan sendiri, tetapi jelas bukan tidak mungkin.
Tidak, Anda tidak dapat memiliki file besar secara sewenang - wenang , bahkan jika dibatasi oleh ruang penyimpanan fisik yang tersedia: pada level logis terendah, sistem file membatasi penggunaan file besar, hanya karena ia harus dapat menyimpan ukuran file yang besar. mengajukan suatu tempat. Batas tepat bervariasi dengan sistem file dan kadang-kadang dengan pengaturan. Dengan sistem file modern seperti NTFS, ext4, dan sebagainya, batasnya cukup tinggi sehingga Anda tidak mungkin menabraknya dengan disk tunggal, meskipun mungkin menjadi masalah jika Anda memiliki array penyimpanan yang besar. Sebagai contoh, NTFS (sistem file) mendukung ukuran file hingga 16 EiB, meskipun implementasi NTFS di Windows saat ini (secara artifisial) terbatas ke ukuran file maksimum hanya di bawah 256 TiB (dinaikkan dari 16 TiB dengan rilis Windows 8 dan Windows Server 2012).
16 TiB bukanlah jumlah penyimpanan yang terlalu besar; Anda dapat mencapainya dengan menjalankan mis. 7 disk masing-masing 4 TB dalam RAID-6, yang tentunya baik dalam jangkauan finansial bahkan individu.
Hal yang sama telah dilakukan dengan edisi Windows yang berbeda, secara artifisial membatasi jumlah RAM yang dapat digunakan meskipun arsitektur yang mendasarinya memungkinkan lebih banyak untuk digunakan.
Itu tergantung pada perangkat lunak, dan pada tingkat yang lebih rendah cara kerjanya dengan file datanya, jadi ya, jika kata-kata operasinya adalah program 32-bit tertentu maka asumsi Anda hampir pasti benar. Kemudian lagi, program 64-bit tertentu mungkin tidak dapat menangani file besar dengan baik. Saya mengalami hal ini sesekali di tempat kerja; misalnya, Microsoft Word 2010 akan menolak saya untuk memuat file apa pun yang lebih besar dari 512 MB, walaupun saya memiliki lebih banyak memori daripada yang tersedia jika hanya untuk mencoba menggunakannya.
Jika perangkat lunak mencoba memuat seluruh file ke dalam memori sekaligus (yang sebenarnya tidak seharusnya) dan tidak memiliki keterbatasan buatan, faktor pembatas dengan sistem operasi saat ini adalah ukuran memori virtual yang tersedia. (Catatan: memori virtual dan swap adalah dua hal yang sama sekali berbeda. Anda juga perlu mempertimbangkan overcommitting memori .) Jika di sisi lain perangkat lunak hanya memuat sebagian file ke dalam memori pada satu waktu, selama OS itu sendiri menyediakan fasilitas untuk mengakses bagian dari file di luar batas ukuran 32-bit dari 4 GiB dan sistem file dapat menangani ukuran file, ukuran sebenarnya file seharusnya tidak menjadi masalah sama sekali, dan jika itu adalah , itu kemungkinan adalah bug perangkat lunak pengguna.
sumber