[CS] What do you know about segmentation fault?

Segmentation is a basic function in Operating System

Photo by CHUTTERSNAP on Unsplash

Whenever I see segmentation fault, it drives me nuts. It happens whenever I try to access wrong memory. And they are quite difficult to debug. I never thought about what ‘segmentation’ means before I started to study computer science.

Before started to know segmentation, you need to know this is a way that manage computer memory. No system can efficiently rely on limited RAM alone. So the computer’s memory management unit (MMU) uses the storage disk, HDD or SSD, as virtual memory to supplement RAM.

가상기억장치 : 주기억장치에서 이용 가능한 영역보다 큰 프로그램이 있을 때 그걸 작은 단위로 쪼개어 실행시키기 위해 보조기억장치의 주소를 주기억장치의 주소로 변환하여 제공한다.

가장 중요한 점: 가상기억장치는 실행 중인 프로그램/프로세스에 의해 참조되는 가상주소를 변환하여 주기억장치에서 사용하는 실주소/물리적 주소로 연결시켜 준다는 점이다.

The process known as segmentation is a virtual process that creates address spaces of various sizes in a computer system, called segments. Each segment is a different virtual address space that directly corresponds to process objects.

세그멘테이션 기법은 프로그램 코드나 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주기억장치에 적재하여 접근한다.

When a process executes, segmentation assigns related data into segments for faster processing. The segmentation function maintains a segment table that includes physical addresses of the segment, size, and other data.

프로그램 코드나 데이터를 서로 다른 크기로 분할한 블록을 세그먼트라고 부른다.

Upon these series of processes, we can simply call segementation fault as ‘wrong memory access’.

이런 과정이 있기에 segmentation fault를 잘못된 주소 참조 라고 간단히 말할 수 있는 것이다.

Resources: https://www.enterprisestorageforum.com/storage-hardware/paging-and-segmentation.html