컴퓨터 시스템의 동작
- 입력장치로 정보를 입력받아 메모리에 저장한다.
- 메모리에 저장한 정보를 프로그램 제어에 따라 인출하여 연산장치에서 처리한다.
- 처리한 정보를 출력장치에 표시하거나 보조기억장치에 저장한다.
📍 1. 명령어의 구조
프로세서가 실행할 연산인 연산 부호와, 명령어가 처리할 데이터, 데이터를 저장한 레지스터나 메모리 주소인 피연산자로 구성된다.
- 연산 부호 : 프로세서가 실행할 동작인 연산을 지정한다.
- 피연산자 : 연할 데이터 정보를 저장한다.
피연산자의 위치를 명시하는 방법을 나타내는 모드 비트를 추가하거나, 명령어의 위치를 나타내는 주소를 추가할 수 있다. 주소를 추가하는 방법에는 직접 주소와 간접 주소가 있다.
모드가 0이면 직접 주소, 1이면 간접 주소이다. 직접 주소의 경우 피연산자가 알려주는 주소에서 바로 데이터를 찾는다. 하지만 간접 주소는 피연산자의 데이터를 읽고, 해당 데이터가 가리키는 주소도 읽어야 하므로 두 번의 참조가 발생한다.
📍 2. 명령어의 실행
- 명령어 인출
- 명령어 해석, 프로그램 카운터 변경
- 피연산자 인출
- 명령어 실행
- 결과 저장
- 다음 명령어로 이동
프로세서의 제어장치가 명령을 실행한다. 프로세서는 메모리에서 명령어를 한 번에 하나씩 인출하고 해석하여 연산한다. 이 사이클을 인출-실행 사이클이라고 한다.
2-1. 인출 사이클
명령어 실행 사이클의 첫 번째 단계이다. 인출 사이클은 메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어를 실행하려고 할 때 프로그램 카운터를 증가시킨다.
1 | PC → MAR | PC에 저장된 주소를 프로세서 내부 버스를 이용하여 MAR에 전달한다. |
2 | MAR → MBR | MAR에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출한 후, 이 명령어를 MBR에 저장한다. |
PC + 1 → PC | 다음 명령어를 인출하기 위해 PC를 증가시킨다. | |
3 | MBR → IR | MBR에 저장된 내용을 IR에 전달한다. |
2-2. 실행 사이클
인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어를 실행한다.
2-3. 간접 사이클
직접 주소 지정 방법을 사용하는 실행 사이클은 명령어를 즉시 수행하지만, 간접 주소 지정은 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 유효 주소를 한 번 더 읽어온다.
1 | IR → MAR | IR에 저장된 명령어의 피연산자를 MAR에 전달한다. |
2 | MAR → MBR | MAR에 저장된 주소에 해당하는 메모리 위치에서 데이터를 인출한 후, 이 데이터를 MBR에 저장한다. |
3 | MBR → IR | MBR에 저장된 내용을 IR에 전달한다. |
2-4. 인터럽트 사이클
프로세서는 실행 사이클을 완료한 후 인터럽트 요구가 있는지 검사한다. 인터럽트 요구가 없으면 다음 명령어를 인출하고, 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 주소 값을 스택의 특정 장소에 저장한다. 그리고 PC에는 인터럽트 처리 루틴의 시작 주소를 저장해 두었다가, 인터럽트 처리를 완료하면 중단된 프로그램으로 복귀하여 계속 수행한다.
1 | PC → MBR | PC의 내용을 MBR에 저장한다. |
2 | IntRoutine_Address → PC | 인터럽트 루틴 주소를 PC에 저장한다. |
Save_Address → MAR | PC에 저장된 인터럽트 루틴 주소를 MAR에 저장한다. | |
3 | MBR → MAR | MBR의 주소에 있는 내용을 지시된 메모리 셀로 이동한다. |
📍 3. 인터럽트 명령어
현재 실행 중인 프로그램을 중단하고, 다른 프로그램의 실행을 요구하는 명령어이다. 시스템 처리 효율을 향상시키며, 프로그램이 실행 순서를 바꿔가면서 처리하기 때문에 다중 프로그래밍에 사용한다.
인터럽트를 받은 프로그램은 실행을 중단하고 다른 프로그램을 실행한다. 예상치 못한 사용자 입력, 갑작스러운 정전, 잘못된 명령어 수행 등과 같은 상황을 시스템이 적절히 처리하기 위해 인터럽트는 꼭 필요하다.
- 단일 회선 : 인터럽트 요청이 가능한 모든 장치를 공통의 단일 회선으로 프로세서에 연결하는 방법
- 다중 회선 : 모든 장치를 서로 다른 고유의 회선으로 프로세서와 연결하는 방법
해당 글은 <운영체제: 그림으로 배우는 구조와 원리>를 읽고 정리한 내용입니다.
'CS > 운영체제' 카테고리의 다른 글
[OS] 스레드의 상태 변화와 구현 (0) | 2023.11.20 |
---|---|
[OS] 프로세스의 상태 변화와 관리 (0) | 2023.11.20 |
[OS] 운영체제의 서비스와 구조 (0) | 2023.11.05 |
[OS] 운영체제의 유형 (0) | 2023.11.05 |
[OS] 운영체제의 개념과 기능 (0) | 2023.11.05 |