Jeśli code.txt
(lub jakikolwiek plik) zostanie edytowany i zapisany, mam dwa pomysły na to, jak komputer poradziłby sobie z tym procesem:
Komputer usuwa się
code.txt
całkowicie i tworzy od nowa nowącode.txt
(edytowaną wersję).Komputer edytuje część szesnastkową
code.txt
. Więc nie dzieje się usunięcie.
Który pomysł reprezentuje działanie komputerów?
Odpowiedzi:
Może być albo - zależy to od używanego edytora tekstu.
Koncepcja „pliku tekstowego” nie jest wbudowana w komputery - każdy system operacyjny może zarządzać plikami inaczej, a każdy edytor tekstowy może używać tych plików w inny sposób.
W praktyce znajdziesz edytory tekstu, które mają oba mechanizmy. Praktycznie wszystkie systemy operacyjne pozwalają na bezpośrednie zastąpienie zawartości istniejącego pliku, więc proste edytory, takie jak Notatnik, zwykle po prostu proszą system operacyjny o zapisanie bezpośrednio w oryginalnym pliku, ponieważ jest to najłatwiejsze do wdrożenia - ale ryzykowne, jeśli stracisz moc w trakcie zapisu. Dlatego ze względów niezawodności wielu redaktorów celowo zapisuje zaktualizowane dane w nowym pliku i usuwa oryginał.
(Myślę, że aktualizacje w miejscu są częstsze wśród edytorów szesnastkowych, gdzie większość edycji nie wstawia / nie usuwa bajtów, a jedynie zmienia istniejące lokalizacje, więc pełny plik przepisywania nie jest potrzebny).
Istnieje nawet trzeci tryb działania - edytor może najpierw wykonać kopię zapasową starego pliku, a następnie bezpośrednio zapisać nowe dane w pliku.
Zależy to również od systemu plików, który przechowuje plik. W przypadku większości tradycyjnych systemów plików, jeśli program prosi o zapisanie do istniejącego pliku, system plików po prostu nadpisze stare dane w miejscu.
Jednak niektóre systemy plików nie działa w trybie „kopiowanie przy zapisie”, gdzie każde nowe dane są zawsze zapisywane w innym miejscu, czy program chce, czy nie. Ponownie, ma to możliwą zaletę zwiększonej niezawodności, ponieważ przerwaną zmianę można całkowicie przywrócić.
W niektórych systemach plików (takich jak Btrfs lub ext4) jest to funkcja opcjonalna; w innych (np. systemy plików o strukturze dziennika) jest to część podstawowego projektu.
źródło
Ponieważ mówisz o „zapisywaniu pliku”, plik nie będzie edytowany w miejscu na dysku.
W przypadku pliku w zwykłym systemie plików należy rozważyć dwie rzeczy. Jest pozycja katalogu, a następnie gdzieś na dysku znajdują się rzeczywiste dane pliku.
Gdy edytujesz plik w normalnym edytorze, załaduje on dane pliku do pamięci RAM, a każda edycja będzie miała miejsce na tej kopii danych. Następnie, kiedy zapisujesz plik, istnieją zasadniczo dwie opcje:
Opcja 1: nazwa oryginalnego pliku zostaje zmieniona , więc zarówno oryginalny wpis katalogu, jak i oryginalne dane pozostaną na dysku. Zmiana nazwy może na przykład zmienić sufiks pliku na
.bak
(.bak
zwykle usunięcie poprzedniego pliku). Następnie tworzony jest nowy plik i tam zapisywane są dane z pamięci.Opcja 2: oryginalny wpis katalogu jest modyfikowany, więc plik jest obcięty do 0 długości. Obszar na dysku użyty do danych pliku zostanie oznaczony jako nieużywany, ale stara zawartość pliku pozostanie na dysku, dopóki nie zostaną zastąpione. Następnie zapisywane są nowe dane. W takim przypadku pozycja katalogu pozostaje, tylko dane, na które wskazuje, zostają zmienione.
Istnieje kilka możliwych odmian, z których jedną jest to, że edytowane dane są najpierw zapisywane w pliku tymczasowym, więc jeśli komputer ulegnie awarii w tym momencie, oryginalny plik prawdopodobnie nie zostanie uszkodzony. Następnie oryginalny plik jest usuwany, a nowy plik zmienia nazwę na poprawną nazwę. Lub oryginalny plik można po prostu usunąć przed napisaniem nowego.
Więc twoja teoria 1 jest zbliżona do tego, co robi większość redaktorów.
Potem są specjalne przypadki. Najbardziej oczywistym jest edytor dysku, który umożliwia odczyt i nadpisywanie bajtów bezpośrednio na dysku. Innym może być plik bazy danych, w którym rekordy mogą mieć stały rozmiar, więc łatwo jest po prostu nadpisać rekord. Ale danych nie można dodawać w środku pliku, a zatem edycja plików tekstowych lub innych plików, w których długość danych w środku pliku często się zmienia, tych sztuczek naprawdę nie można zastosować.
Więc twoja teoria 2 jest możliwa w niektórych przypadkach, ale zwykłe edytory tekstu i takie nie robią tego.
źródło
Historycznie napędy były kontrolowane bezpośrednio przez system operacyjny, który z kolei kontrolowany był przez aplikację. W tym kontekście Teoria 2 była podstawowym sposobem działania komputerów PC. system operacyjny określił fizyczną lokalizację do umieszczenia danych i miał pełną kontrolę nad tym procesem. W rezultacie wczesne systemy plików miały tabelę „uszkodzonego sektora”, więc po utracie danych komputer mógł powiedzieć, że dane zostały utracone, i oznaczyć sektor jako niezdatny do użytku, aby uniknąć dalszej utraty danych. Skanowanie dysku i defragmentacja były na porządku dziennym.
Jednak po przełomie wieków przenieśliśmy się do LBA, więc teraz system operacyjny będzie po prostu odwoływał się do „logicznego” bloku, który chciał odczytać lub napisać. Sam dysk twardy miał teraz inteligencję, aby przeszukiwać dane za plecami systemu operacyjnego, nie zauważając tego. Oznaczało to lepszą niezawodność, ponieważ sektory, których nie udało się zweryfikować, można po prostu przenieść do nowej fizycznej lokalizacji bez wpływu na wiedzę systemu operacyjnego o lokalizacji tych danych.
W nowoczesnym sprzęcie dyski „talerzowe” zwykle po prostu nadpisują to, co było wcześniej, nowymi przychodzącymi danymi i opcjonalnie odwzorowują LBA, jeśli sektor wygląda na to, że może nie zatrzymać danych (sektor jest uszkodzony lub zużyty). Dyski „Flash” zazwyczaj usuwają stare komórki, a następnie zapisują dane w nowych komórkach, proces ten znany jest jako wyrównywanie zużycia.
W obu przypadkach jest to możliwe, ponieważ pojemność zawsze jest niewykorzystana powyżej podanej wartości. To przeszacowanie pozwala na dłuższą żywotność napędu niż raczej zawodna technologia z poprzedniego wieku. Tryb LBA umożliwia wyodrębnienie nośnika fizycznego z systemu operacyjnego, aby sam dysk mógł podjąć wszelkie środki, które uzna za konieczne, aby zapobiec utracie danych.
Na poziomie aplikacji zazwyczaj otwierasz plik w trybie „NAPISZ”, który nakazuje systemowi wyczyścić plik („usunąć” zawartość, ale nie sam plik), a następnie zapisać nowe dane. Wszystko to jest buforowane na poziomie systemu operacyjnego, a następnie „opróżniane” na dysk, co powoduje wymagane zmiany.
Biorąc pod uwagę te informacje, Teoria 1 jest technicznie tym, co dzieje się na poziomie programowania aplikacji, przynajmniej domyślnie, ponieważ istnieje również tryb „zapisu z dołączaniem”, aby uniknąć wyczyszczenia zawartości pliku. Sam system operacyjny przedstawi zmiany, które mają być bardziej podobne do teorii 2, ale streszczone za pomocą LBA. Sam napęd prawdopodobnie wtedy zrobi coś, co jest kombinacją teorii 1 i teorii 2.
Tak. Jest to skomplikowane i bardzo zależne od producenta / programisty systemu operacyjnego / programisty aplikacji. Jednak cała ta złożoność ma na celu zwiększenie niezawodności przechowywania danych przy jednoczesnym zwiększeniu zużycia energii / żywotności baterii.
źródło
Zależy. AFAIK Microsoft Word, podczas zapisywania
.doc
(nie.docx
) plików z włączonymi opcjami szybkiego zapisywania , dołącza zmiany wprowadzone do dokumentu od czasu ostatniego zapisania do istniejącego pliku.źródło
Ogólnie rzecz biorąc, komputer przydzieli pamięć, w której znajduje się oryginalny plik, jako „usunięty”, ale tak naprawdę oznacza to, że nie będzie się już wyświetlać w przeglądarce plików, a komórki w pamięci, w których zostały zapisane, są dozwolone do zastąpienia w przyszłości.
To, czy nowy plik zostanie zapisany w tym samym miejscu, zależy od wielu czynników, głównie od używanego oprogramowania i tego, w jaki sposób ma on korzystać z pamięci.
źródło
Mam nadzieję, że to nie jest zbędne, trochę dodatkowych informacji / tła.
Komputer zwykle nie ma dużej kontroli nad sposobem edytowania pliku, tylko aplikacja.
Kilka przykładów tego, jak niektóre aplikacje mogą obsługiwać edycję:
Notatnik ładuje cały dokument do pamięci, a następnie zapisuje całość na oryginalnym dokumencie (lub nowym, który określisz).
Prawie wszystkie inne małe edytory zapisują „nowy” plik podczas edycji, a następnie kopiują go na oryginalnym dokumencie, usuwając go podczas „zapisywania”.
Edytory dużych dokumentów, których możesz użyć do edycji książki, zwykle czytają / modyfikują sekcję dokumentu, ponieważ mogą edytować dokumenty większe niż pamięć. Mogą one faktycznie edytować dokument „W miejscu”. Mogą ponownie napisać jedną stronę, a resztę zostawić w spokoju. Często mają one bardziej złożoną indeksowaną reprezentację na dysku niż prosty plik .txt, który pozwala na to zachowanie.
Duzi redaktorzy mogą również zapisywać pliki tymczasowe z „aktualizacjami” oryginalnego dokumentu. Po dokonaniu ostatecznego zapisu może połączyć je wszystkie i ponownie napisać dokument.
Większość edytorów można skonfigurować tak, aby pozostawić istniejącą wersję nietkniętą i utworzyć nową ze swoimi zmianami (zachować stare wersje).
Jeśli chodzi o część pytania dotyczącą działania „komputera”, niektóre systemy operacyjne zapamiętują każdą wersję pliku i zawsze tworzą nową. Obecnie jest to dość rzadkie, ale pamiętam stare „Mini Computers” (które teraz nazywamy komputerami mainframe), w których każdy plik miał na końcu wersję, taką jak „File.text.1”, i dodawałby się do wersji za każdym razem, gdy zredagowałem to. Takie zachowanie lepiej byłoby zastosować do czegoś takiego jak napęd taśmowy lub CD-ROM, w którym zastąpienie starej wersji było całkowicie niepraktyczne.
źródło
2 nie jest niemożliwe, ale jest głupie z różnych powodów.
Dobrze napisany edytor plików tekstowych:
myfile.txt
, nowy może byćmyfile.txt.new
myfile.txt~
myfile.txt
Jeśli komputer ulegnie awarii lub zabraknie miejsca na dysku w powyższym przypadku, nie ma sytuacji, w której stare i nowe pliki zostaną utracone lub tylko częściowo zapisane.
źródło
Krótka odpowiedź
Bardzo zależy od twojego edytora, oprogramowania / sterowników, pamięci.
Odpowiedź paranoiczna
Można go odzyskać, chyba że usuniesz go na stałe.
Długa odpowiedź
W twoim pytaniu brakuje informacji (oprogramowania, sprzętu itp.), Więc zamiast odpowiedzieć sobie, pomogę ci odpowiedzieć sam na twoje pytanie.
To zależy od kilku czynników:
Edytor : jeśli oprogramowanie edytora zastępuje bloki tego samego pliku, może zostać przepisane. Może to zależeć również od ustawień edytora i typów plików. Zauważ, że słowo może być zapisane kursywą. Nawet gdy edytor przepisuje plik, nadal może pozostać nietknięty (przeczytaj następne punkty).
Podstawowe oprogramowanie / sterowniki / system plików : plik pozostanie niezmieniony, jeśli pod spodem znajduje się inne oprogramowanie / sterowniki, które chronią plik początkowy przed nadpisaniem. Do tego typu oprogramowania należą systemy kontroli wersji, wirtualne dyski różnicowe, niektóre oprogramowanie do tworzenia kopii zapasowych. Przykładem jest Git , który zachowa oryginalne bloki plików i utworzy nowy plik zawierający zmodyfikowane bloki.
Przechowywanie :
Sama pamięć może zapisywać zmienione bloki w nowym sektorze i oznaczać stare bloki jako „wolne”. Następnie plik pozostanie fizycznie w pamięci (i będzie można go odzyskać), chyba że zostanie zastąpiony innym plikiem. Przykładem jest nowoczesna pamięć SSD , która może to zrobić na poziomie sprzętowym.
Istnieją sposoby odzyskiwania danych z typowych mechanicznych dysków magnetycznych HDD, nawet gdy dane zostały nadpisane . I są w tym wyspecjalizowane firmy.
Więc jeśli chcesz uzyskać konkretną odpowiedź na pytanie, czy plik zostanie usunięty, musisz także powiedzieć, jakiego edytora, oprogramowania / sprzętu do tworzenia kopii zapasowych / VCS i pamięci używasz. Jeśli nie zauważyłem żadnego punktu, możesz edytować odpowiedź.
Jak upewnić się, że usunięty plik jest faktycznie usunięty z pamięci?
To prawdopodobnie następne pytanie, które sam sobie zadacie. Istnieje wiele rozwiązań programowych / sprzętowych. Ponieważ SuperUser nie jest przeznaczony do promowania oprogramowania / sprzętu, zamiast wymieniać nazwy powiem ci, jak je znaleźć: wyszukaj słowa kluczowe „trwale usuń plik”. W celu dokładniejszego dopasowania podaj swój system operacyjny, typ dysku twardego lub inne posiadane informacje.
źródło
Jedno zachowanie, o którym nikt jeszcze nie wspominał, to istotne zachowanie niektórych wersji systemów operacyjnych MS Windows jest również związane z używanym systemem plików.
Zachowanie działa w ten sposób: gdy zmienisz nazwę lub usuniesz plik, jeśli utworzysz (odtworzysz) (nowy) plik o tej samej nazwie w ciągu 15 sekund od usunięcia (lub zmiany nazwy) oryginalnego pliku, data utworzenia / znacznik czasu jest kopiowany z oryginalnego pliku. Zasadniczo nowy plik „staje się” starym / oryginalnym plikiem.
W tym przypadku tak naprawdę nie ma znaczenia, czy aplikacja zapisuje zmiany w pliku za pomocą metody nr 1: utworzenie nowego pliku o tej samej nazwie lub za pomocą metody nr 2: edycja / aktualizacja pliku na miejscu (plik nie usunięty). Tak czy inaczej, końcowy plik wygląda (prawie) pod każdym względem, tak jak oryginalny plik. Jedyną rzeczą jest to, że prawdopodobnie zajmie on inną przestrzeń na dysku fizycznym (klastry / sektory), a pozycja katalogu dla pliku prawdopodobnie będzie znajdować się w innej lokalizacji.
Jak powiedziałem, jest to zachowanie niektórych wersji MS Windows / systemów plików. Nie wiem, która wersja systemu Windows i system plików to uruchomiło, i czy jest to zachowanie nowszych wersji. Gdybym musiał zgadywać, powiedziałbym, że został wprowadzony na Windows NT i Windows XP i nadal jest zachowaniem Windows 10, i (wciąż zgaduję) zachowanie wymaga systemu plików Fat32 lub NTFS (i być może nowszego).
źródło