참고. 가상 메모리, 페이징 기법, Segmentation Fault

2025. 1. 17. 22:09·SW개발/면접을 위한 CS 전공지식 노트
반응형

C언어의 꽃, 포인터

"포인터가 없으면 불편한 지경에 이르렀다면, 당신은 C를 할 줄 안다고 할 수 있다."라는 말은 C 언어의 핵심인 포인터(pointer)의 중요성을 강조한 것이다. 포인터는 C 언어에서 강력한 도구로, 메모리 관리와 직접적인 데이터 접근을 가능하게 한다. 하지만 그로 인해 발생하는 매우 치명적인 문제가 있는데....!?


컴퓨터와 VMS 이해

C 언어와 포인터를 제대로 이해하려면 컴퓨터 구조와 가상 메모리 시스템(VMS, Virtual Memory System)에 대한 기본적인 이해가 필요하다.

VMS란 무엇인가?

VMS는 컴퓨터 시스템에서 논리적으로 완벽한 선형 메모리를 제공한다. 이를 통해 응용 프로그램은 4GB 크기의 선형 메모리 공간(32비트 기준)을 사용하는 것처럼 보인다. 이는 42억 개의 char 데이터를 다룰 수 있는 크기이다.

VMS의 주요 특징:

  1. 논리 주소와 물리 주소 분리:
    가상 주소를 실제 물리 메모리에 매핑한다.
  2. 구성 요소:
    • Stack: 함수 호출 시 사용되는 메모리이다.
    • Heap: 동적 메모리 할당 영역이다.
    • Code 영역: 실행 코드가 저장된다.
    • Data 영역: 전역 변수와 정적 변수가 저장된다.
  3. 페이징 기법(Paging):
    가상 메모리를 작은 고정 크기인 페이지(page)로 나눈다.
    페이지 테이블(Page Table)을 통해 가상 주소를 물리 주소로 변환한다.

페이징 기법


가상 주소와 물리 주소 변환

1. 가상 주소 구조

가상 주소는 두 부분으로 나뉜다:

  • P(Page): 페이지 번호이다.
  • D(Offset): 페이지 내 오프셋이다.

2. 페이지 변환 과정

  1. 가상 주소(P, D)를 페이지 테이블을 사용해 물리 주소로 변환한다.
  2. 페이지 테이블에서 P를 검색해 페이지를 프레임(Frame)으로 매핑한다.
  3. 최종적으로 변환된 주소는 물리 주소(F, D)가 된다.

페이징 기법의 정형화된 주소 변환


코테를 풀다가, 혹은 개발하다가 에러가 난 이유

1. Segmentation Fault:

잘못된 포인터 연산이나 배열 접근 시 발생한다.(즉, 내가 선언했던 변수의 범위를 벗어났다.)
유효하지 않은 가상 메모리 주소에 접근할 경우 발생한다. (페이지 테이블을 찾아갔더니, invaild한 주소를 알려줬다.)

2. Page Fault:

프로그램이 필요한 페이지가 메모리에 로드되지 않은 경우 발생한다.
페이지를 디스크에서 메모리로 불러오며 처리된다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글

4.2 ERD와 정규화 과정  (1) 2025.01.21
4.1 데이터베이스의 기본  (0) 2025.01.21
3.4 CPU 스케줄링 알고리즘  (1) 2025.01.15
3.3 프로세스와 스레드  (0) 2025.01.15
3.2 메모리  (0) 2025.01.15
'SW개발/면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
  • 4.2 ERD와 정규화 과정
  • 4.1 데이터베이스의 기본
  • 3.4 CPU 스케줄링 알고리즘
  • 3.3 프로세스와 스레드
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • AI (16)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (7)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공백포함입력받기
    LAN
    전공 지식
    반도체 물성
    요약본
    홉바이홉
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    os구조
    멀티프로세스
    word 수식
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    MySQL
    면접을 위한 cs전공지식 노트
    c io
    파일입출력 #DataFrame불러오기
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    보고서 수식
    정리본
    반도체 소자 공학
    c언어 입출력
    면접을 위한 CS 전공지식 노트
    입출력관리
    메시지큐
    ios7계층
    CS지식
    운영체제
    홉바이홉통신
    반도체 공학
    ESG
    페이징 기법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
참고. 가상 메모리, 페이징 기법, Segmentation Fault
상단으로

티스토리툴바