core dumped
Czasami, podczas uruchamiania żle napisanego programu pojawia się komunikat:
Segmentation fault (core dumped)
Polska Wikipedia tłumaczy to jako Naruszenie ochrony pamięci.
Co to znaczy core dumped?
Najpierw core czyli rdzeń. W dawnych czasach pamięć operacyjna komputerów była zbudowana z ogromnej liczby malutkich rdzeni z materiału magnetycznego (ferrytu)
Pojedynczy rdzeń pamięci magnetycznej
Każdy rdzeń mógł zapamiętać jeden bit. Pojedynczy moduł pamięci mógł wyglądać jakoś tak:
Moduł pamięci magnetycznej
A schemat fragmentu tak:
Schemat połączeń pamięci magnetycznej
Pamięci takie były „szyte” ręcznie. „Szyte”, gdyż przez każdy z koralików trzeba było przewlec trzy cieniutkie druty. Stanowisko pracy było to specjalne łoże odpowiednio ukształtowana (z wgłębieniami na koraliki). Pracownik (najczęściej były to kobiety) sypał pewną liczbę koralików; włączone pole magnetyczne pozwalało odpowiednio je ustawić w łożu, nadmiarowe koraliki się usuwało, a następnie trzeba było przeprowadzić druciki przez dziureczki…
Zasadę działania takiej pamięci można znaleźć w Internetach (i nie będę pozbawiał Państwa tej przyjemności.)
Produkowane w Elwro komputery serii Odra 1300 miały taką pamięć. Komputer modułu lądującego na księżycu Lunar Excursion Module (LEM) również był wyposażony w taką pamięć.
Zaletą tej pamięci było to, że po wyłączeniu napięcia zachowywała ona swój stan.
Gdy podczas uruchamiania programu występował jego poważny błąd uniemożliwiający dalszą pracę — system operacyjny automatycznie drukował zawartość pamięci operacyjnej, słowo po słowie, na przykład jako liczby ósemkowe.
To się nazywało zrzut (po angielsku dump). A skoro był to zrzut pamięci (ferrytowej) — stąd core dump
Dodatkowo drukowane były wszystkie rejestry procesora.
Analiza tych danych (postmortem, czyli „sekcja zwłok”) pozwalały zrozumieć na czym polega problem.
Później wydruk został zastąpiony zrzutem zawartości pamięci operacyjnej do pliku.