운영체제 CH1.컴퓨터 시스템의 소개
02. 컴퓨터 시스템의 동작
컴퓨터 시스템으로 작업을 처리할 때의 순서
1) 입력 장치를 통해 데이터를 입력받아 메모리에 저장
2) 입력된 데이터를 프로그램 제어장치를 통해 인출하여 연산장치에서 처리
3) 처리한 정보를 출력장치에서 표시하거나, 보조 기억장치에 저장
1. 명령어 구조
명령어는 프로세서에서 실행할 연산인 연산부호와, 명령어가 처리할 데이터, 데이터를 저장하는 레지스터나 메모리 주소인 피연산자로 구성된다.
- 연산부호(OPcode): 프로세서가 실행할 동작인 연산을 지정한다. 산술/논리/시프트/보수 연산을 정의
- 피연산자: 연산할 데이터 정보를 저장한다.
명령어의 위치를 나타내는 주소를 추가할 수 있다. 피연산자에 데이터가 있는 레지스터나 메모리 주소를 지정하면 직접 주소, 피연산자에 데이터가 있는 레지스터나 메모리 주소 정보를 지정하면 간접 주소이다.
2. 명령어 실행
명령어 실행 과정은 명령어 인출 --> 명령어 해독&프로그램 카운터를 변경 --> 피연산자 인출 --> 명령어 실행 --> 실행 결과 저장 --> 다음 명령어 이동프로세서의 제어장치가 명령어를 실행한다. 프로세서는 메모리에 있는데 명령어를 하나씩 인출하여 해석하고 연산을 수행한다. 명령어를 인출하고부터 연산을 완료한 시점까지를 명령어 실행 사이클이라고 한다.
1) 인출 사이클 : 명령어 실행 사이클의 첫번째 단계인출 사이클은 메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어 수행을 위하여 프로그램 카운터 값을 증가시킨다. 인출 사이클 단계에서 소요되는 시간을 명령어 인출 시간이라고 한다.
2) 실행 사이클
인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생 시켜 명령어를 실행한다. 이 단계에서 소비되는 시간을 실행 시간이라고 한다.
3) 간접 사이클직접
주소 지정 방법을 사용하는 실행 사이클은 즉각적으로 명령어를 수행하지만, 간접 주소 지정 방법을 사용하는 실행 사이클은 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한번 더 불러온다.
4) 인터럽트 사이클
인터럽트는 프로그램을 수행하는 동안 컴퓨터 시스템의 내부나 외부에서 발생하는 예기치 못한 사건을 의미한다. 프로세서는 실행사이클을 완료한 후에 인터럽트 여부를 검사한다. 인터럽트 요구가 없다면 다음 명령어를 인출하고, 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 프로그램 카운터 값을 스택이나 메모리의 0번지 같은 특정 장소에 저장한다. 그리고 프로그램 카운터에 인터럽트 처리 루틴의 시작 주소를 저장한다. 인터럽트 처리가 완료되면 다시 중단된 프로그램으로 복귀하여 계속 수행한다.
3. 인터럽트 명령어
인터럽트는 현재 수행하고 있는 프로그램을 중단하고 다른 프로그램 실행을 요구하는 명령어 이다. 시스템 처리 효율을 향상하고, 프로그램이 실행 순서를 바꿔가며 처리하여 다중 프로그래밍에 이용된다. 단일 프로세서 컴퓨터는 한 번에 하나의 명령어만 수행할 수 있었지만 인터럽트를 이용하면 중간에 다른 프로그램과 명령어를 수행할 수 있다. 인터럽트는 프로그램을 중간에 중단했다가 다시 재개하는 과정이지만 사용자가 별도로 처리할 필요는 없고 운영체제와 프로세서가 처리하게 된다.인터럽트는 외부장치의 동작과 자신의 동작을 조정하는 수단으로 사용한다. 인터럽트 목적으로 사용하는 제어버스는 인터럽트 요청 회선(IRQ)이다.
- 인터럽트 요청 회선
키보드에서 입력이 발생했을 때만 프로세서에 통보하여 처리하므로 프로세서가 일일이 이벤트 발생 여부를 감시하지 않아도 된다. 프로세서가 외부장치의 상태를 점검할 필요가 없어서 그 시간 동안 다른 연산을 수행하여 프로세서의 효율을 높일 수 있다.
인터럽트 요청에 따라 수행하는 루틴을 인터럽트 서비스 루틴이라고 한다.
인터럽트 요청 회선은 다중회선과 단일회선으로 연결할 수 있다.
-다중회선 : 인터럽트를 요청할 수 있는 모든 장치를 각각 고유의 회선으로 프로세서와 연결하여 인터럽트가 발생한 장치를 바로 찾을 수 있다.
-단일 회선 : 인터럽트를 요청하는 모든 장치를 하나의 단일 회선으로 프로세서에 연결하여 인터럽트가 발생한 장치를 찾기 위한 기능이 필요하게 된다.