Segmentation Fault

Zaadresowanie zerowego bloku pamięci albo próba czytania z przypadkowego adresu pamięci kończy się w systemach Unixowych (najczęściej) zdawkowym komunikatem "Segmentation fault (core dumped)" i nagłym końcem działania procesu. Sama nazwa wyjątku - Segmentation fault - albo Segmentation violation - jest trochę tajemniczą. Linux wypisze nam komunikat "Segmentation fault" ale mnemonik sygnału Unixowego który stoi za tym wyjątkiem to SIGSEGV, gdzie V wskazuje na "violation". Skąd to się w ogóle wzięło? Windowsy definiują analogiczny wyjątek jako po prostu "Access violation" - elegancko.

Zaczęło się od komputera GE 645 od General Electric, jeszcze w 1965r. Dla niego powstał też system operacyjny Multics. Do projektu GE 635 dorzucono mechanizm segmentacji pamięci, czyli wczesną formę pamięci wirtualnej. Każdemu procesowi można było przydzielić jednorodny wycinek pamięci, którą tenże proces widział tak, jakby zaczynała się od adresu 0. W założeniu jeden proces nie mógł nagrzebać w pamięci innemu. Potem inżynierowie w DEC podchwycili to rozwiązanie dla komputera PDP-11/45 . Dla niego też powstał Unix w wersji 4, całkowicie pisany w języku C. Tenże PDP (1972) miał już układ zarządzania pamięcią (KT-11C) opartą o segmenty. Więcej - segmenty mogły być rozmaitego rodzaju - np segment kodu, segment tylko do odczytu. Na liście sygnałów Unixa wersji 4 pojawił się sygnał SIGSEGV jako właśnie wyjątek spowodowany na przykład zapisem do segmentu w trybie tylko do odczytu. Intel wprowadził segmentację zdaje się w latach '80 w 80286, gdy upowszechniał się już model pamięci stronicowanej. Ale zanim Intel zawiązał rynkowy kartel z Microsoftem zdawał się być mocno zacofany jeśli chodzi o rozwój architektury komputerowej. No i ten segmentation fault wlecze się za nami od wczesnych lat '70 we wszystkich unixopodobnych systemach operacyjnych. #systemyoperacyjne #linux #oesowo

0baa9b2d-f42c-4039-b453-a240edd98c52

Komentarze (2)

ataxbras

@pierdonauta_kosmolony Jak coś sobie prototypuję w Rust, to segfault jest dosyć powszechnym zjawiskiem. I dobrze poniekąd

korfos

I receive: Gothic 1 You receive: Access violation

Zaloguj się aby komentować