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 |