[운체] 오늘의 삽질 - 0813

방법이있지·2025년 8월 13일
post-thumbnail

사용자 모드 vs 커널 모드

  • 사용자 모드에서는 커널 영역의 코드 및 데이터에 접근할 수 없다. 반면 커널 모드에서는 사용자 및 커널 영역의 코드 및 데이터 모두에 접근할 수 있다.
  • CPU, 메모리, 입출력 장치 등 하드웨어 자원을 직접 다루는 코드는 커널 영역에 위치한다. 사용자 프로그램은 시스템 콜을 통해 커널 모드로 전환하여 하드웨어 자원에 간접적으로 접근할 수 있다.
  • 사용자 프로그램이 커널 영역에 직접 접근하려고 하는 경우, 운영체제는 유효하지 않은 접근으로 판단해 프로세스를 종료시키는 방식으로 커널 영역을 보호한다. 사용자 스택이 위에서 아래 방향으로 성장하는 것 역시 커널 영역으로의 침범을 방지하기 위한 조치이다.

Lazy Loading

  • Lazy Loading은 메모리 할당 요청 시 즉시 데이터를 물리 메모리에 적재하지 않고, 이후 실제로 해당 데이터에 접근할 때 뒤늦게 메모리에 적재하는 방식이다.
  • 실제로 접근해야 하는 데이터만 물리 메모리에 적재하는 방식이므로, 메모리를 효율적으로 사용할 수 있다. 실제 물리 메모리 용량을 초과하는 가상 메모리를 효율적으로 사용하는 데 필수적인 기술이다.
  • 단 물리 메모리가 가득 찬 경우, 적재 시 기존의 물리 프레임을 대체해야 한다. 이때 대체할 프레임을 결정하는 교체 알고리즘이 효율적이지 않은 경우, 시스템 성능의 저하로 이어질 수 있다.

Supplemental Page Table

  • 가상 메모리 환경에서 lazy loading 및 paging이 원활하게 도작하려면, supplemental page table을 사용해야 한다.
  • supplemental page table에는 각 가상 주소에 대응되는 데이터의 저장 위치( 파일 주소, 스왑 슬롯)가 기록되어 있다.
  • 페이지에 처음으로 접근하거나 swap out된 페이지를 다시 메모리에 적재하려면, SPT를 통해 해당 데이터의 저장 위치를 확인하여 해당 위치를 확인해야 한다.
profile
뭔가 만드는 걸 좋아하는 개발자 지망생입니다. 프로야구단 LG 트윈스를 응원하고 있습니다.

0개의 댓글