컴퓨터 구성 요소: 상위 수준 개요
프로그램 실행
컴퓨터에서 프로그램을 실행하는 과정은 여러 단계로 나뉘며, 주요 단계는 Fetch 단계와 Execution 단계입니다. 이 단계를 자세히 설명하겠습니다.
Fetch 단계
Fetch 단계는 실행할 다음 명령어를 메모리에서 가져오는 역할을 합니다. 단계별로 세부 과정을 설명하면 다음과 같습니다:
- PC를 MAR로 이동: 프로그램 카운터(PC)에 저장된 주소(예: 300)를 메모리 주소 레지스터(MAR)로 이동합니다.
- PC 증가: PC의 값을 1 증가시켜 다음 명령어 주소를 가리키게 합니다.
- 메모리 읽기: MAR에 지정된 메모리 위치에서 데이터를 읽어 메모리 버퍼 레지스터(MBR)로 전송합니다.
- MBR을 IR로 이동: MBR에 있는 명령어를 명령어 레지스터(IR)로 이동합니다.
Fetch 단계가 끝나면 PC는 다음 사이클을 준비하기 위해 증가된 상태로 있습니다.
Execution 단계
Execution 단계는 가져온 명령어에 따라 다르게 진행됩니다. 아래는 다양한 명령어의 예시와 그 실행 단계를 설명한 것입니다:
- 로드 명령어 (0001): 메모리에서 데이터를 가져와 누산기(AC)에 로드합니다.
- IR을 MAR로 이동: IR에 있는 명령어의 주소 부분을 MAR로 이동합니다.
- 메모리 읽기: 지정된 메모리 위치에서 데이터를 읽어 MBR로 전송합니다.
- MBR을 AC로 이동: MBR에 있는 데이터를 AC로 이동합니다.
- 저장 명령어 (0010): AC에 있는 데이터를 메모리에 저장합니다.
- IR을 MAR로 이동: IR에 있는 명령어의 주소 부분을 MAR로 이동합니다.
- AC를 MBR로 이동: AC에 있는 데이터를 MBR로 이동합니다.
- 메모리 쓰기: MBR에 있는 데이터를 지정된 메모리 위치에 씁니다.
- 더하기 명령어 (0101): 메모리에서 데이터를 가져와 AC에 더합니다.
- IR을 MAR로 이동: IR에 있는 명령어의 주소 부분을 MAR로 이동합니다.
- 메모리 읽기: 지정된 메모리 위치에서 데이터를 읽어 MBR로 전송합니다.
- MBR + AC를 AC로 이동: MBR에 있는 데이터를 AC에 더한 후 결과를 AC에 저장합니다.
인터럽트
인터럽트는 CPU가 예상치 못한 이벤트나 멀티태스킹을 처리할 수 있게 하는 중요한 기능입니다. 주요 인터럽트 유형은 네 가지가 있습니다:
- 프로그램 인터럽트: 제로 나누기 또는 불법 명령어와 같은 오류로 인해 발생합니다.
- 타이머 인터럽트: CPU가 각 프로세스에 시간을 할당하도록 합니다.
- I/O 인터럽트: I/O 장치가 작업 완료를 신호할 때 발생합니다.
- 하드웨어 오류 인터럽트: 하드웨어 고장을 나타냅니다.
인터럽트 처리 과정
- 인터럽트 인식: CPU는 현재 명령어를 완료하고 인터럽트를 인식합니다.
- 상태 저장: CPU는 현재 상태(PC, PSW)를 제어 스택에 저장합니다.
- 인터럽트 핸들러 실행: 인터럽트 핸들러, 즉 OS의 일부가 인터럽트를 처리합니다.
- 상태 복원: 처리 후 CPU는 저장된 상태를 복원하고 실행을 재개합니다.
인터럽트와 함께 하는 프로그램 흐름
인터럽트가 있는 시스템에서는 빈번한 컨텍스트 전환이 발생합니다:
- 사용자 프로그램 실행: 사용자 프로그램이 인터럽트가 발생할 때까지 실행됩니다.
- 인터럽트 서비스 루틴 (ISR): CPU는 ISR로 전환하여 인터럽트를 처리합니다.
- 사용자 프로그램 재개: ISR 후 CPU는 사용자 프로그램을 중단된 위치에서 재개합니다.
타이밍 다이어그램: 짧은 I/O 대기
다음은 간단한 타이밍 다이어그램입니다:
- 인터럽트 없이: CPU가 I/O 완료를 기다리며 시간을 낭비합니다.
- 인터럽트와 함께: CPU가 다른 작업을 하면서 I/O 대기 시간을 활용하여 효율성을 높입니다.
인터럽트 핸들러 시작
인터럽트 핸들러는 OS의 일부로, 인터럽트를 처리하는 역할을 합니다. 다음과 같은 과정을 거칩니다:
- 필요한 데이터 저장: 모든 필요한 CPU 상태와 프로세스 정보를 저장합니다.
- 인터럽트 이유 파악: 인터럽트 유형을 식별합니다.
- 적절한 조치 실행: 적절한 조치를 취하거나 응답합니다.
- 상태 복원: 인터럽트 처리 후 이전 상태를 복원하여 정상 실행을 재개합니다.
결론
Fetch 및 Execution 단계와 인터럽트 처리 방법을 이해하는 것은 현대 프로세서가 작업을 효율적으로 관리하고 원활한 운영을 유지하는 방식을 이해하는 데 필수적입니다. 이 지식은 소프트웨어 성능을 최적화하고 시스템의 신뢰성을 보장하는 데 중요한 역할을 합니다.
'운영체제' 카테고리의 다른 글
운영체제 Chapter3 3-2 Process (0) | 2024.06.25 |
---|---|
운영체제 Chapter2 2-2 (0) | 2024.06.23 |
운영체제 Chapter2 2-1 (0) | 2024.06.23 |
운영체제 chapter1 - 2-2 (0) | 2024.06.22 |
운영체제 Chapter 1 - 1주차 (0) | 2024.06.22 |