WIL/스터디

PintOS 메모리 할당 순서

아크리미츠 2024. 9. 10. 18:06

Pintos 운영체제가 부팅될 때, 메모리에 데이터를 로드하는 순서는 특정한 단계를 따릅니다. 이 과정은 하드웨어 초기화, 커널 로드, 초기화 루틴 실행 등을 포함합니다.

1. 부트로더 (Bootloader) 실행

  • 컴퓨터가 전원을 켜면, CPU는 메모리의 특정 위치(일반적으로 0x7c00)에서 실행을 시작합니다. 이 위치에 있는 것은 BIOS가 로드한 부트로더 코드입니다.
  • 부트로더는 하드웨어 초기화 및 운영체제를 로드할 준비를 합니다. Pintos에서는 이 부트로더가 운영체제의 커널 이미지를 메모리에 로드하는 역할을 합니다.

2. 커널 로드 (Kernel Load)

  • 부트로더는 하드 디스크 또는 플래시 메모리와 같은 저장 장치에서 Pintos 커널 이미지를 메모리로 로드합니다.
  • 이 커널 이미지는 일반적으로 메모리의 상위 영역에 로드되며, 부트로더는 이 커널의 시작 주소로 CPU의 제어권을 넘깁니다.

3. 초기화 루틴 실행 (Kernel Initialization)

  • 커널이 메모리에 로드된 후, Pintos 커널의 초기화 루틴을 실행합니다. 이 단계에서 주요 하드웨어와 시스템 자원들이 초기화됩니다.
    • 메모리 초기화: 사용 가능한 물리적 메모리를 감지하고, 페이지 프레임을 초기화합니다.
    • 인터럽트 초기화: 인터럽트 벡터 테이블을 설정하고, 인터럽트를 처리할 수 있도록 준비합니다.
    • 스케줄러 초기화: 멀티태스킹을 지원하기 위해 스케줄러를 초기화합니다.
    • 파일 시스템 초기화: 파일 시스템을 초기화하고, 루트 디렉터리를 설정합니다.

4. 멀티태스킹 및 유저 프로그램 로드

  • 커널이 초기화된 후, 시스템은 첫 번째 사용자 프로그램을 메모리에 로드하고 실행할 준비를 합니다.
  • 스케줄러가 활성화되며, 여러 프로세스들이 동시에 실행될 수 있도록 멀티태스킹 환경이 구축됩니다.
  • 유저 프로그램들은 페이지 단위로 메모리에 로드되며, 필요에 따라 동적 메모리 할당이 이루어집니다.

5. 메모리 매핑 및 페이지 테이블 설정

  • 커널은 유저 프로그램의 가상 주소 공간을 물리적 메모리에 매핑하기 위해 페이지 테이블을 설정합니다.
  • 페이지 테이블은 각 프로세스의 가상 메모리 주소를 물리적 메모리 주소로 변환하는데 사용됩니다.
  • 이 과정에서 필요에 따라 메모리 페이징 및 스왑이 적용될 수 있습니다.

6. 메모리 관리 활성화

  • 마지막으로, 커널은 메모리 관리 기능을 활성화하여 프로그램이 동적으로 메모리를 할당하고 해제할 수 있도록 합니다.
  • 이후 시스템이 정상적으로 작동하며, 새로운 프로그램을 로드하거나 실행하는 과정이 계속될 수 있습니다.

'WIL > 스터디' 카테고리의 다른 글

CPU와 GPU의 차이와 최근 동향  (2) 2024.10.23
Session, JWT, OAuth 개념  (1) 2024.09.22
PintOS의 메모리에 관한 공부  (0) 2024.09.10
OS 지식  (0) 2024.08.27
인터넷 지식  (1) 2024.08.27