티스토리 뷰

Linux

segmentation fault 와 page fault의 차이점

두덕리온라인 2024. 2. 19. 07:54
728x90
반응형
Segmentation fault와 Page fault는 컴퓨터 운영 체제에서 발생하는 두 가지 다른 종류의 오류입니다. 각각의 차이점을 이해하기 위해서는, 먼저 각 용어의 의미를 알아야 합니다.
 

Segmentation Fault

  • 정의: Segmentation fault는 프로그램이 잘못된 메모리 영역에 접근하려고 할 때 발생하는 오류입니다. 이는 주로 프로그램이 할당되지 않은 메모리를 읽거나 쓰려고 할 때, 또는 접근 권한이 없는 메모리 영역에 접근하려고 할 때 발생합니다.
  • 원인: 주로 포인터 오류, 배열의 경계를 벗어난 접근, 참조된 메모리의 해제 후 접근 등 프로그래머의 실수로 인해 발생합니다.
  • 결과: 프로그램이 비정상적으로 종료됩니다.

Page Fault

  • 정의: Page fault는 프로세스가 현재 메모리에 없는 페이지(데이터 또는 코드의 단위)에 접근하려고 할 때 발생하는 오류입니다. 이는 운영 체제의 가상 메모리 관리 시스템의 일부로, 필요한 페이지가 물리적 메모리에 없고 디스크 상의 스왑 공간에 있을 때 발생합니다.
  • 원인: 프로세스 실행 중 필요한 데이터나 코드가 물리적 메모리에 없고 디스크의 스왑 영역에 있을 때, 운영 체제는 해당 페이지를 물리적 메모리로 가져오기 위해 페이지 폴트를 발생시킵니다.
  • 결과: 운영 체제는 해당 페이지를 디스크에서 물리적 메모리로 로드합니다. 이 과정은 프로그램 실행을 일시적으로 중단시킬 수 있지만, 프로그램 자체는 비정상 종료되지 않습니다.

차이점

  • 원인과 처리: Segmentation fault는 주로 프로그램의 오류로 인해 발생하며, 프로그램을 비정상 종료시킵니다. 반면, Page fault는 정상적인 운영 체제의 작동 과정 중 하나로, 필요한 데이터를 메모리로 로드하는 과정에서 발생하며 프로그램의 정상적인 실행을 위해 필요한 절차입니다.
  • 발생 시점: Segmentation fault는 프로그램이 잘못된 메모리 접근을 시도할 때 발생하며, Page fault는 프로그램이 현재 메모리에 없는 페이지에 접근하려고 할 때 발생합니다.
  • 처리 방법: Segmentation fault는 대부분 프로그램의 버그를 수정함으로써 해결할 수 있습니다. Page fault는 운영 체제가 자동으로 처리하며, 개발자가 직접 수정할 필요가 없습니다.
 
요약하면, Segmentation fault는 프로그램의 버그로 인해 발생하는 비정상적인 메모리 접근 오류이고, Page fault는 운영 체제의 정상적인 메모리 관리 과정의 일부입니다.
반응형

'Linux' 카테고리의 다른 글

리눅스 프로세스 컨텍스트 스위칭  (0) 2024.02.20
linux에서 task와 process의 차이  (0) 2024.02.19
fork()와 exec()의 차이  (0) 2024.02.19
Linux virtual memory  (0) 2024.02.19
Android secure boot  (0) 2024.02.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday