2. 컴퓨터 시스템의 동작 명령어 구성 연산 종류와 기능에 따라 오퍼랜드 부분을 다양하게 활용 가능. 직접 주소(Direct Address) : 오퍼랜드 번지 부분이 오퍼랜드의 내용이 담긴 메모리 번지를 가리킴. - 기억 장소를 주소부에 직접 지정할 수 있게 되어 있는 것. - Opcode, 유효주소 간접 주소(Indirect Address) : 오퍼랜드 번지 부분이 오퍼랜드의 내용이 있는 장소의 번지를 저장한 곳을 가리킴. - 원하는 실제 피연산자가 들어있는 주소를 가지고 있는 것. - 100번지에 있는 값이 300이고, 300번지에 실제 피연산자가 들어 있다면, 100이 간접 주소 가 됨 . [그림1-17] 직접 주소와 간접 주소를 이용한 명령 예
2. 컴퓨터 시스템의 동작 명령어 실행 다음과 같은 과정으로 실행된다. (그림1-18) 명령어 실행 사이클(명령어 실행 주기) 메모리에서 명령어 레지스터로 이동하여 저장된 다음 명령 어를 인출한다. 인출한 명령어를 해석, 다음 명령어를 지정하기 위해 프로 그램 카운터를 변경한다. 명령어가 메모리에 있는 워드를 한 개 사용하려면, 사용 장 소를 결정하여 오퍼랜드를 인출하고 필요 시 프로세서 레 지스터로 보낸다. 명령어를 실행한다. 명령어 실행 결과를 저장한다. 다음 명령어를 실행하기 위해 ① 단계로 간다. 명령어 실행 사이클(명령어 실행 주기) [그림1-18] 명령어 실행 과정 명령어를 인출하여 연산 완료 시점 까지. 인출 사이클, 간접 사이클, 실행 사 이클, 인터럽트 사이클로 구성. [그림1-19] 명령어 실행 사이클
2. 컴퓨터 시스템의 동작 명령어 실행 인출사이클 실행사이클 (Fetch) (Execute) 간접사이클 (Indirect) 직접주소지정 간접사이클 (Indirect) 간접주소지정 입출력 인터럽트
2. 컴퓨터 시스템의 동작 인출 사이클 메인메모리의 지정장소(Address)로부터 명령을 읽어서 CPU로 가지고 오는 단계. - 명령어 실행 사이클의 첫 번째 단계로, 메인 메모리에서 명령어를 읽어 명령어 레지스터에 저장하기까지의 단계 . 소비되는 시간은 명령어 인출 시간이라 하며, 시간에 따른 프로세스 레지스터의 동작은 아래와 같 다. [표1-2] 인출 사이클에서 동작 과정 [그림1-20] 명령어 인출 사이클
2. 컴퓨터 시스템의 동작 간접 사이클 인출 사이클과 실행 사이클 사이에 위치하며, 명령어에 포함된 주소를 이용하여 실제 명령어 실행 에 필요한 데이터를 인출한다. - 메인메모리에서 읽은 명령어의 주소가 간접주소라면, 메인메모리에 다시 접근하여 유효주소를 읽어와야 함. 인출한 명령어의 주소 필드 내용을 이용해 메모리에서 데이터의 실제 주소를 인출하여 명령어 레 지스터의 주소 필드에 저장하며, 간접 주소 지정방식에서 사용된다. [그림1-21] 간접 사이클 과정 [표1-3] 간접 사이클에서 레지스터 동작 과정
2. 컴퓨터 시스템의 동작 실행 사이클 인터럽트 사이클 명령어 레지스터의 명령어를 해석하고 필요한 신호를 발생시켜 실제로 명령어를 처리한다. 이 단계에서 소비되는 시간을 실행 시간이라 한다. 인터럽트 사이클 프로세스가 정상적인 순차 제어에서 벗어나면 아래와 같은 인터럽트 사이클이 발생한다. - 프로그램 : 명령어를 실행한 결과로 발생하는 조건에 의해 생성. - 타이머(Timer) : 프로세서의 타이머에 의해 발생. - 입출력(I/O) : 입출력 제어가 발생시킴. - 하드웨어 오류 : 정전이나 메모리 패리티 오류로 인해 발생. [그림1-22] 인터럽트 사이클 과정 [표1-4] 인터럽트 사이클 발생 시 레지스터 동작 과정
2. 컴퓨터 시스템의 동작 인터럽트 컴퓨터에 설정된 장치에서 프로세서로 보내는 하드웨어 신호로, 현재 실행 중인 프로그 램의 수행을 미루고 다른 프로그램의 수행을 요구하는 명령. 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단 하고 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것. 시스템이 예측하지 못한 사용자 입력, 갑작스런 정전, 컴퓨터 시스템으로부터의 긴급 요청, 잘못 된 명령어 수행, 입출력 작업 완료 같은 긴급 상황을 적절히 처리하기 위해 필요. 외부 장치의 동작과 자신의 동작을 조정할 수 있는 수단으로 인터럽트를 사용. 입출력 장치가 새로운 입출력 연산 수행 시, 프로세서는 먼저 폴링(Polling)을 통해 각 장치의 상 태 비트를 검사. 인터럽트의 개념이 없으면 장치의 상태를 계속 점검하는 과정(Wait Loop)이 필요해 프로세서가 다른 연산을 수행할 수 없으므로 오버헤드가 증가하여 수행 시간이 낭비. : 입출력 상태가 준비 상태가 될 때까지 프로세서가 다른 작업을 수행 즉, 입출력장치가 준비 상태가 되었을 때 프 로세서에 인터럽트 신호를 전송. 인터럽트 요청 회선(IRQ, Interrupt Request Line) : 버스 제어선 중 하나로 인터럽트 신호를 전달 하는 목적으로 사용. 인터럽트는 크게 인터럽트 요청과 인터럽트 서비스 루틴으로 구성된다. 인터럽트를 수행하기 위해 컴퓨터는 인터럽트 제어선을 제공하여 인터럽트 발생과 더불어 적절 한 처리를 수행. 인터럽트 요청 신호에 의해 수행되는 루틴을 인터럽트 처리 프로그램, 즉 인터럽트 서비스 루틴 (Interrupt Service Routine)이라 함. 인터럽트 발생 원인에 따라 적절한 처리 루틴을 수행.
2. 컴퓨터 시스템의 동작 인터럽트 요청 회선 연결 방법은 단일 회선과 다중 회선이 있다. 인터럽트 처리 과정 단일 회선 : 인터럽트 요청이 가능한 모든 장치를 공통으로 프로세서에 연결. - 회선 하나에 다수의 장치 인터페이스가 연결되어 있으므로 어느 장치에서 인터럽트 요청을 하였는지 판별하는 기능이 필요하다. 다중 회선 : 모든 장치가 서로 다른 고유 회선으로 프로세서와 연결. - 인터럽트 요청 시 어느 장치에서 요청하였는지 바로 판별 가능하다. [그림1-23] 인터럽트 요청 회선 연결 방법 인터럽트 처리 과정 인터럽트 요청 신호 발생 시 실행 중인 프로그램을 메모리에 저장하고 인터럽트 서비스 프로그램 으로 분기한다. 인터럽트 루틴의 수행 완료 후 인터럽트를 발생시킨 프로그램에 제어를 돌려준다.
2. 컴퓨터 시스템의 동작 인터럽트 처리 과정 (그림 1-24) 인터럽트 신호 도달하기 전 (a)처럼 프로그램 A가 실행되고 있으며, 프로그램 카운터는 현재 명령 어를 가리킨다. (b)에서 프로세서에 인터럽트 신호가 도달하여 현재 명령어를 종료하고, 모든 레지스터 내용을 스 택 영역(또는 PCB, Process Control Block)으로 보낸다. 프로그램 카운터(PC)에는 프로그램 B가 저장된다. - 인터럽트 처리 프로그램의 시작 위치를 저장하고 프로그램 B로 제어를 넘겨 프로그램 B를 실행한다. (C)에서 인터럽트 루틴 종료 후 스택 영역에 있던 내용을 레지스터에 다시 저장한 뒤 프로그램 카 운터를 비롯하여 중단했던 프로그램A에서 다시 시작한다. [그림1-24] 인터럽트 처리 과정 프로그램 실행 프로그램 중단 인터럽트 처리 인터럽트 처리 수행 프로그램 재수행 인터럽트 요청신호(IRQ) 프로그램 상태보관 복귀주소 보관 인터럽트 처리루틴 결정 프로그램 상태 복귀
2. 컴퓨터 시스템의 동작 인터럽트는 서브 루틴 호출과 매우 유사하지만 차이점이 있다. 서브 루틴은 자신을 호출한 프로그램이 요구한 기능을 수행하지만, 인터럽트 서비스 루틴은 인터 럽트 발생 시 수행 중인 프로그램과 관련이 없을 수도 있다. 기존의 수행 중이던 프로그램은 인터럽트의 영향을 받지 않고 수행을 재개하기 위해 아래의 내용 을 저장해야 한다. - 인터럽트 서비스 루틴 수행 전에 프로세서는 중단된 프로그램으로 복귀한 후 수행에 영향을 미치는 정보(프로 그램 카운터의 내용 포함)를 저장해야 한다. - 인터럽트가 발생할 때의 상태 코드(상태 워드)를 저장해야 한다. - 프로세서는 인터럽트 서비스 루틴에서 복귀했을 때 임시 기억 장소에 저장한 상태 워드를 다시 적재해야 한다.
SUMMARY 컴퓨터 시스템 구성 프로세서 버스 레지스터 컴퓨터는 하나 이상의 프로세서와 메모리, 다양한 입출력 장치로 구성되며 이런 구성 요 소는 컴퓨터의 주 기능인 프로그램의 실행을 위해 버스로 상호 연결되어 있다. 프로세서 프로세서(CPU, 중앙처리장치)는 컴퓨터 하드웨어 구성요소 중 운영체제와 가장 밀접한 부분으로 컴퓨터 각 부분의 동작을 제어하고 연산을 수행한다. 일반적으로 제어와 데이터의 처리를 담당하며 레지스터로 구성된다. 버스 프로세서를 비롯해 각 장치간 또는 서브 시스템을 서로 연결하여 정보(데이터)를 주고받 을 수 있게 해주는 통로이다. 위치에 따라 내부 버스와 외부 버스로 구분하며 기능에 따라 데이터 버스, 주소 버스, 제 어 버스로 분류한다. 레지스터 용도에 따라 전담 레지스터와 범용 레지스터로 나누고 저장되는 정보의 종류에 따라 데 이터 레지스터, 주소 레지스터, 상태 레지스터로 구분한다. 저장된 정보의 변경 여부에 따라 사용자 가시 레지스터와 사용자 불가시 레지스터로 구 분한다.
SUMMARY 메모리 메모리 계층 구조 가상 메모리 캐시 프로그램이 수행되는 동안 프로그램과 데이터는 메모리에 적재되며, 명령어의 수행 속 도 즉, 컴퓨터의 성능은 메모리와 밀접하다. 사용자와 제조사는 일반적으로 크고 빠르며 비용이 저렴한 메모리를 요구하지만 빠른 장치는 가격이 비싸면서 저장 용량이 작은 단점이 있다. 메모리 계층 구조 여러 레벨의 메모리가 연결되어 비용, 속도, 용량, 접근 시간 등을 상호 보완한 계층적 메모리 구조이다. 가상 메모리 메인 메모리의 유효 크기를 증가시키기 위해 사용하는 기법으로 사용자의 논리적 주소 공간과 컴퓨터의 실제 메모리(물리적 주소 공간)를 분리한다. 메인 메모리 용량보다 큰 저장 용량의 주소를 지정하여 프로그램을 부분 적재하여 실행 할 수 있다. 캐시 처리 속도가 빠른 프로세서와 상대적으로 처리 속도가 느린 메인 메모리 사이에서 데이 터나 정보를 저장하는 고속 버퍼다. 자주 참조되는 프로그램과 데이터를 속도가 빠른 캐시 메모리에 저장하여 평균 접근 시 간을 줄이고 시스템 성능을 향상시킨다.
SUMMARY 명령어 사용자가 원하는 연산과 오퍼랜드, 처리 순서를 프로세서에 지시하는 명령문으로 메모 리에 보관되며 한 번에 한 개씩 프로세서로 전송되면서 해석되고 실행된다. 명령어 실행은 명령어 인출과 명령어 실행 주기의 반복 처리로 이루어진다. 명령어 실행 사이클은 인출 사이클, 간접 사이클, 실행 사이클, 인터럽트 사이클로 구성 된다. 인터럽트 현재 실행 중인 프로그램의 수행을 연기하고 다른 프로그램의 수행을 요구하는 명령이다. 시스템의 처리 효율을 향상시키기 위해 사용되며 프로그램이 실행 순서를 바꿔가면서 처리되기 때문에 다중 프로그래밍에 사용된다.