Jika code.txt
(atau file apa pun) diedit dan disimpan, saya punya dua ide tentang bagaimana PC akan menangani proses:
PC menghapus
code.txt
sepenuhnya dan membuat yang barucode.txt
(versi yang diedit) dari awal.PC mengedit bagian hex
code.txt
. Jadi tidak ada penghapusan terjadi.
Ide mana yang mewakili cara kerja komputer?
Jawaban:
Bisa jadi - itu tergantung pada editor teks yang digunakan.
Konsep 'file teks' tidak dibangun ke dalam komputer - setiap sistem operasi dapat mengelola file secara berbeda, dan setiap editor teks dapat menggunakan file-file tersebut secara berbeda.
Dalam praktiknya, Anda akan menemukan editor teks yang memiliki kedua mekanisme. Praktis semua sistem operasi memungkinkan penimpaan langsung dari isi file yang ada, sehingga editor sederhana seperti Notepad biasanya hanya meminta OS untuk menulis langsung ke file asli, karena itu paling mudah untuk diterapkan - tetapi berisiko jika Anda kehilangan daya saat menulis. Jadi untuk alasan keandalan, banyak editor sengaja menyimpan data yang diperbarui ke file baru dan menghapus yang asli.
(Saya pikir pembaruan di tempat lebih umum di antara hex editor, di mana sebagian besar pengeditan tidak memasukkan / menghapus byte tetapi hanya mengubah lokasi yang ada, sehingga file penulisan ulang penuh tidak diperlukan.)
Bahkan ada mode operasi ketiga - editor mungkin pertama-tama membuat salinan cadangan dari file lama, lalu langsung menulis data baru ke dalam file.
Ini juga tergantung pada sistem file yang menyimpan file. Dengan kebanyakan filesystem tradisional, jika suatu program meminta untuk menulis ke file yang ada, filesystem tersebut hanya akan menimpa data lama di tempat.
Namun, beberapa filesystem melakukan pekerjaan di "copy-on-write" mode, di mana setiap data baru selalu ditulis ke lokasi yang berbeda, apakah program menginginkannya atau tidak. Sekali lagi, ini memiliki kemungkinan keuntungan dari peningkatan keandalan karena perubahan yang terputus dapat sepenuhnya dikembalikan.
Dalam beberapa sistem file (seperti Btrfs atau ext4) ini adalah fitur opsional; pada yang lain (misalnya filesystem log-terstruktur) itu adalah bagian dari desain inti.
sumber
Karena Anda berbicara tentang "menyimpan file", maka file tidak akan diedit di tempat pada disk.
Dengan file dalam sistem file yang biasa, ada dua hal yang perlu dipertimbangkan. Ada entri direktori, dan kemudian ada data file aktual di suatu tempat di disk.
Ketika Anda mengedit file di editor normal, itu akan memuat data file ke dalam RAM, dan setiap editing akan terjadi pada salinan data tersebut. Kemudian ketika Anda menyimpan file, pada dasarnya ada dua opsi:
Opsi 1: file asli diganti namanya , sehingga entri direktori asli dan data asli akan tetap ada di disk. Ganti nama mungkin misalnya mengubah akhiran file ke
.bak
(biasanya menghapus.bak
file sebelumnya ). Kemudian file baru dibuat dan data dari memori ditulis di sana.Opsi 2: entri direktori asli dimodifikasi sehingga file dipotong ke 0 panjangnya. Area pada disk yang digunakan untuk data file akan ditandai sebagai tidak terpakai, tetapi konten file lama akan tetap di disk sampai mereka ditimpa. Kemudian data baru ditulis. Dalam hal ini entri direktori tetap, hanya data yang ditunjuknya diubah.
Ada beberapa variasi yang mungkin, satu yang umum, data yang diedit pertama kali disimpan ke file sementara, jadi jika komputer Anda crash pada saat ini, file asli kemungkinan tidak akan rusak. Kemudian file asli dihapus dan file baru diganti nama dengan nama yang benar. Atau, file asli bisa dihapus sebelum menulis yang baru.
Jadi teori Anda 1 dekat dengan apa yang dilakukan kebanyakan editor.
Lalu ada kasus khusus. Yang paling jelas adalah editor disk, yang memungkinkan membaca dan menimpa byte secara langsung pada disk. Lain mungkin file database, di mana catatan mungkin ukuran tetap, sehingga mudah untuk hanya menimpa catatan. Tetapi data tidak dapat ditambahkan di tengah file, dan karena itu mengedit file teks atau file lain di mana panjang data di tengah file biasanya berubah, trik ini tidak dapat digunakan.
Jadi teori Anda 2 mungkin dalam beberapa kasus, tetapi editor teks biasa dan semacamnya tidak melakukannya.
sumber
Secara historis, drive dikendalikan langsung oleh OS, yang pada gilirannya dikendalikan oleh aplikasi. Dalam konteks itu, Teori 2 adalah cara utama PC bekerja. OS menentukan lokasi fisik untuk menaruh data, dan ia memiliki kontrol penuh atas proses ini. Akibatnya, sistem file awal memiliki tabel "bad sector", jadi setelah data Anda hilang, komputer dapat memberi tahu Anda data yang hilang dan menandai sektor sebagai tidak dapat digunakan untuk menghindari lebih banyak kehilangan data. Pemindaian disk dan defragmentasi adalah urutan hari itu.
Namun, setelah pergantian abad, kami pindah ke LBA, jadi sekarang OS hanya akan mereferensikan blok "logis" yang ia ingin baca atau tulis. Hard drive itu sendiri sekarang memiliki kecerdasan untuk mengaduk-aduk data di belakang OS tanpa ia sadari. Ini berarti keandalan yang lebih baik, karena sektor-sektor yang gagal memverifikasi dapat dengan mudah dipindahkan ke lokasi fisik baru tanpa memengaruhi pengetahuan OS tentang di mana data itu berada.
Dalam perangkat keras modern, disk drive "platter" biasanya hanya menimpa apa pun yang ada di sana sebelumnya dengan data yang masuk baru, dan secara opsional memetakan ulang LBA jika sektor tersebut sepertinya tidak menyimpan data (sektor ini rusak atau aus). Drive "Flash" biasanya menghapus sel-sel lama dan kemudian menulis data ke sel-sel baru, sebuah proses yang dikenal sebagai level-wear.
Dalam kedua kasus, ini dimungkinkan karena selalu ada kapasitas yang tidak digunakan di luar nilai yang dilaporkan. Overprovisioning ini memungkinkan drive untuk memiliki kehidupan yang dapat digunakan lebih lama daripada teknologi yang agak tidak dapat diandalkan dari teknologi abad sebelumnya. Mode LBA memungkinkan media fisik untuk diabstraksi dari OS sehingga drive itu sendiri dapat mengambil tindakan apa pun yang menurut drive diperlukan untuk mencegah kehilangan data.
Pada tingkat aplikasi, Anda biasanya membuka file dalam mode "MENULIS", yang memberitahu OS untuk menghapus file ("menghapus" konten, tetapi bukan file itu sendiri), kemudian menulis data baru. Semua ini buffered di tingkat OS, kemudian "memerah" ke drive, yang membuat perubahan yang diminta.
Mengingat informasi itu, Teori 1 adalah apa yang secara teknis terjadi pada tingkat pemrograman aplikasi, setidaknya secara default, karena ada juga mode "tulis dengan menambahkan" untuk menghindari membersihkan konten file. OS itu sendiri akan menyajikan perubahan yang dibuat lebih seperti Theory 2, tetapi disarikan melalui LBA. Drive itu sendiri mungkin akan melakukan sesuatu yang merupakan campuran dari Teori 1 dan Teori 2.
Ya. Ini rumit, dan sangat tergantung pada pabrikan / pengembang OS / pengembang aplikasi. Namun, semua kompleksitas ini ditujukan untuk membuat penyimpanan data lebih dapat diandalkan sambil meningkatkan penggunaan daya / masa pakai baterai.
sumber
Tergantung. AFAIK Microsoft Word, saat menyimpan
.doc
(bukan.docx
) file dengan opsi Simpan cepat diaktifkan, menambahkan perubahan yang dibuat ke dokumen sejak penyimpanan terakhir lakukan file yang ada.sumber
Secara umum, komputer akan mengalokasikan memori di mana file asli berada sebagai 'dihapus', tetapi semua ini benar-benar berarti bahwa itu tidak akan muncul di browser file Anda lagi, dan sel-sel di memori tempat ditulisnya diperbolehkan untuk ditimpa di masa depan.
Seperti apakah file baru ditulis di tempat yang sama adalah ke sejumlah faktor, terutama perangkat lunak yang Anda gunakan dan bagaimana ia dirancang untuk menggunakan memori.
sumber
Semoga ini tidak berlebihan, sedikit info / latar belakang tambahan.
PC biasanya tidak memiliki banyak kendali atas bagaimana suatu file diedit, itu adalah aplikasi yang melakukannya.
Beberapa contoh bagaimana beberapa aplikasi dapat menangani pengeditan:
Notepad memuat seluruh dokumen ke dalam memori dan kemudian menyimpan semuanya di atas dokumen asli Anda (atau yang baru Anda tentukan).
Hampir semua editor kecil lainnya akan menyimpan file "baru" saat Anda mengedit dan kemudian menyalinnya di dokumen asli Anda menghapusnya ketika Anda "menyimpan".
Editor Dokumen berukuran besar yang mungkin Anda gunakan untuk mengedit buku cenderung membaca / memodifikasi bagian dokumen karena mereka dapat mengedit dokumen yang lebih besar daripada memori. Ini sebenarnya dapat mengedit dokumen "Di tempat". Mereka mungkin menulis ulang satu halaman dan meninggalkan sisanya sendirian. Ini sering memiliki representasi di-disk yang diindeks lebih kompleks daripada file .txt sederhana untuk memungkinkan perilaku ini.
Editor besar mungkin juga hanya menyimpan file sementara dengan "pembaruan" ke dokumen asli Anda. Ketika Anda melakukan final save Anda dapat menggabungkan semuanya dan menulis ulang dokumen Anda.
Sebagian besar editor dapat dikonfigurasikan untuk membiarkan versi yang ada tidak tersentuh dan membuat yang baru dengan perubahan Anda (pertahankan versi lama).
Mengenai bagian pertanyaan Anda mengenai apa yang dilakukan "PC", beberapa sistem operasi akan mengingat setiap versi file dan selalu membuat yang baru. Ini cukup langka akhir-akhir ini, tetapi saya ingat "Komputer Mini" lama (Apa yang sekarang kita sebut mainframe) di mana setiap file memiliki versi pada akhirnya seperti "File.text.1" dan itu akan menambah versi setiap kali Anda mengeditnya. Perilaku semacam ini akan lebih baik berlaku untuk sesuatu seperti tape drive atau CD rom di mana menimpa versi lama sama sekali tidak praktis.
sumber
2 bukan tidak mungkin, tetapi itu bodoh karena berbagai alasan.
Editor file teks yang ditulis dengan baik akan:
myfile.txt
, yang baru mungkinmyfile.txt.new
myfile.txt~
myfile.txt
Jika komputer crash atau kehabisan ruang pada disk selama di atas, tidak ada situasi di mana file lama dan yang baru hilang atau hanya disimpan sebagian.
sumber
Jawaban singkat
Sangat tergantung pada editor Anda, perangkat lunak / driver yang mendasarinya, penyimpanan.
Jawaban paranoiac
Dapat dipulihkan kecuali Anda menghapusnya secara permanen.
Jawaban panjang
Ada informasi yang hilang dalam pertanyaan Anda (perangkat lunak, perangkat keras, dll), jadi alih-alih menjawab sendiri, saya akan membantu Anda menjawab pertanyaan Anda sendiri.
Itu tergantung pada beberapa faktor:
Editor : Jika perangkat lunak editor menggantikan blok dari file yang sama, maka mungkin akan ditulis ulang. Dan ini juga tergantung pada pengaturan editor dan tipe file. Perhatikan bahwa kata mungkin dibuat miring. Bahkan ketika editor menulis ulang file, itu masih bisa tetap tidak tersentuh (baca poin berikutnya).
Perangkat lunak / driver / sistem file yang mendasarinya : File akan tetap tidak tersentuh jika ada perangkat lunak / driver lain di bawahnya yang melindungi file awal agar tidak ditimpa. Jenis-jenis perangkat lunak tersebut termasuk sistem versi, disk diferensial virtual, beberapa perangkat lunak cadangan. Contohnya adalah Git , yang akan menyimpan blok file asli dan akan membuat file baru yang menampung blok yang dimodifikasi.
Penyimpanan :
Penyimpanan itu sendiri dapat menulis blok yang diubah pada sektor baru , dan menandai blok lama sebagai "gratis". Kemudian file tersebut secara fisik akan tetap berada di penyimpanan (dan dapat dipulihkan), kecuali jika ditimpa oleh file lain. Contohnya adalah penyimpanan SSD modern , yang dapat melakukannya pada tingkat perangkat keras.
Ada beberapa cara untuk memulihkan data dari cakram magnetik HDD mekanis tipikal, bahkan ketika data ditimpa . Dan ada perusahaan khusus di dalamnya.
Jadi jika Anda ingin mendapatkan jawaban konkret apakah file Anda akan dihapus atau tidak, Anda juga harus memberi tahu editor, perangkat lunak / perangkat keras / penyimpanan dan penyimpanan VCS apa yang Anda gunakan. Jika saya melewatkan poin apa pun, silakan edit jawabannya.
Bagaimana cara memastikan bahwa file yang dihapus benar-benar dihapus dari penyimpanan?
Ini mungkin pertanyaan berikutnya yang akan Anda tanyakan pada diri sendiri. Yah ada banyak solusi perangkat lunak / perangkat keras. Karena SuperUser bukan untuk mempromosikan perangkat lunak / perangkat keras, alih-alih memberi tahu nama, saya akan memberi tahu Anda cara menemukannya: cari kata kunci "hapus file secara permanen". Untuk kecocokan yang lebih tepat, sebutkan OS Anda, jenis hard drive, atau info lain yang Anda miliki.
sumber
Satu perilaku yang belum ada yang disebutkan adalah perilaku yang relevan dari beberapa versi sistem operasi MS Windows juga terkait dengan sistem file yang digunakan.
Perilaku ini bekerja seperti ini: Ketika Anda mengganti nama atau menghapus file, jika Anda membuat (membuat ulang) file (baru) dengan nama yang sama dalam waktu 15 detik ketika file asli dihapus (atau diganti namanya), tanggal pembuatan / cap waktu disalin dari file asli. Pada dasarnya, file baru "menjadi" file lama / asli.
Dalam hal ini, itu benar-benar tidak masalah jika aplikasi menyimpan perubahan pada file dengan metode Anda # 1: membuat file baru dengan nama yang sama, atau dengan metode Anda # 2: mengedit / memperbarui file di tempat (file tidak dihapus). Either way, file terakhir terlihat dalam (hampir) segala hal, seperti file asli. Satu-satunya hal adalah, ia kemungkinan akan menempati ruang drive fisik yang berbeda (cluster / sektor) dan entri direktori untuk file tersebut kemungkinan akan berada di lokasi yang berbeda.
Seperti yang saya katakan, ini adalah perilaku dari beberapa versi MS Windows / sistem file. Saya tidak tahu versi Windows mana dan sistem file mana ini dimulai, dan apakah masih perilaku versi yang lebih baru. Jika saya harus menebak saya akan mengatakan itu diperkenalkan pada Windows NT dan Windows XP dan masih merupakan perilaku Windows 10, dan (masih tebakan) perilaku memerlukan sistem file Fat32 atau NTFS (dan mungkin lebih baru).
sumber