컴퓨터 시스템의 작업을 수행할 때 다음 순서에 따라 동작하며, 제어 장치가 이 동작을 조종한다.
1. 입력장치로 데이터를 입력받아 메모리에 저장한다.
2. 메모리에 저장한 데이터를 프로그램 제어 따라 인출하여 연상장치에서 수행하게 한다.
3. 처리한 정보를 추력장쳉 표시하거나 보조기억장치에 지니게 한다.
입력장치로 컴퓨터에 유입되는 정보는 명령어와 데이터로 분류한다. 프로그램은 컴파일러 등을 사용하여 0과 1로 이진화된 기계 명령어로 바꾸어야 컴퓨터가 이해할 수 있다. 명령어는 실행할 산술 및 논리 연산의 동작을 명시하는 문장으로, 어떤 일을 수행하는 명령어 모음이 프로그램이다.
명령어의 구조
명령어는 프로세서에 따라 고정 길이나 가변 길이를 구성하며 프로세서가 실행할 연산인 연산 부호와 명령어가 처리할 정보, 정보를 저장한 레지스터나 메모리 주소인 피연산자로 구성된다. 연산 부호는 특별한 경우가 아니면 한 개이나 피연산자는 여러 개일 수 있다.
연산 부호: 프로세서가 실행할 동작인 연산을 지정한다. 예시를 들면, 산술 연산, 논리 연산, 시프트, 보수 등 연산을 의미한다. 연산 부호가 n비트이면 최대 2n제곱개 계산이 가능하다.
피연산자 : 연산할 데이터 정보를 저장한다. 일반적으로 데이터 자체보다는 데이터의 위치를 저장한다. 데이터는 레지스터나 메모리, 가상기억장치, 입출력장치 등에 존재할 수 있으며 가장 정석인 명령어 구조는 피연자가 2개로 하는 소스피연산자이고, 다른 하나는 목적지 피연산자이다.
피연산자 수에 따라 0-주소 명령어, 1-주소 명령어, 2-주소 명령어, 3-주소 명령어 등으로 구분한다. 명령어는 피연산자를 여러 개 포함할 수도 있으며 실행 전에 메인 메모리에 저장하며, 한 번에 하나씩 프로세서에 순서대로 보내어 해석 및 실행한다. 명령어에 피연산자의 위치를 명시하는 방법을 나타내는 모드 비트 I를 더하거나, 다음 명령어의 위치를 나타내는 주소를 추가할 수 있다. 데이터가 있는 레지스터나 메모리 주소 정보를 지정하면 간접 주소라 하고, 피연산자에 데이터가 있는 레지스터나 메모리 주소를 지정하면 직접 주소라고 한다.
간접 주소는 데이터의 주소를 확인할 때 한 번, 데이터를 읽을 때 한 번 총 두 번 메모리를 참조한다.
명령어의 실행
명령어는 다음 과정을 거쳐 실행한다.
1. 명령어 인출
2. 명령어 해석, 프로그램 카운터 변경
3. 피연산자 인출
4. 명령어 실행
5. 결과 저장
6. 다음 명령어로 이동
프로세서의 제어장치가 명령어를 실행한다. 간단히 명령어 실행 사이클(명령어 실행 주기)라고 불리는 이 주기는 프로세서가 메모리에서 명령어를 한 번에 하나씩 인출하고 해석하여 연산한다. 명령어를 인출하여 계산 완료한 시점까지를 인출-해석-실행 사이클 혹은 인출-실행-사이클이라고 한다. 간단히 명령어 실행 사이클(명령어 실행 주기)이라고도 한다.
인출 사이클
인출 사이클은 명령어 실행 사이클의 첫 번째 단계이다. 인출 사이클에 소요되는 시간을 명령어 인출 시간이라고 하며, 인출 사이클은 메모리에서 명령어를 읽어 명령어 레지스터에 지니게 하고, 다음 명령어를 수행하려고 프로그램 카운터를 증가시킨다.
실행 사이클
실행 사이클에서는 이 단계에 소비되는 시간을 실행 시간이라고 하며, 인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어를 수행한다.
간접 사이클
직접 주소 지정 수단을 사용하는 실행 사이클은 명령어를 바로 수행하지만, 간접 주소 지정 방법을 이용하는 실행 사이클은 명령어를 실행하기 전에 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한 번 더 읽어 온다.
인터럽트 사이클
인터럽트는 프로세서가 프로그램을 실행하는 동안 컴퓨터 시스템의 내부나 외부에서 일어나는 예상치 못한 사건을 뜻한다. 프로그램 카운터에는 인터럽트 처리 루틴의 시작 주소를 저장해 두었다가 인터럽트 처리를 완료하면 중지된 프로그램으로 돌아와서 계속 실행한다. 프로세서는 실행 사이클을 완료한 후 인터럽트 요청 사항이 있는지 검사한다. 인터럽트 요청 사항이 없으면 다음 명령어를 인출하고, 인터럽트 요청 사항이 있으면 현재 실행 중인 프로그램의 주소(프로그램 카운터) 값을 스택이나 메모리의 0번지와 같은 특정 장소에 지니게 한다.
인터럽트 명령어
인터럽트는 현재 실행 중인 프로그램을 중지하고 다른 프로그램의 수행을 요청하는 명령어이다. 프로그램이 실행 순차를 바꿔 가면서 처리하여 다중 프로그래밍에 이용한다. 또한 시스템의 처리 수행 효율을 향상시킨다.
또 인터럽트는 컴퓨터에 있는 입출력장치나 프로그램 등에서 프로세서로 전송하는 하드웨어 신호이다. 인터럽트는 예기치 못한 사용자 입력, 갑작스런 정전, 컴퓨터 시스템에서 긴급 요청, 잘못된 명령어 실행, 입출력 작업 완료와 같은 상황을 시스템이 올바르게 처리하는 데 필요하다. 단일 프로세서의 컴퓨터는 명령어를 한 번에 한 개만 실행할 수 있지만, 인터럽트를 사용하면 도중에 다른 프로그램이나 명령어를 실행할 수 있다. 인터럽트를 받은 프로그램은 수행을 중지하고 다른 프로그램을 실행할 수 있다.
인터럽트는 프로그램의 정상 실행을 일시 중지했다 다시 재개하는 과정이지만, 이용자가 별도로 인터럽트 조치를 수행할 필요가 없고 프로세서와 운영체제가 처리한다.
컴퓨터는 인터럽트를 외부 장치의 동작과 자신의 동작을 조율하는 수단으로 이용한다. 예시를 들면, 다중 사용자 시스템에 키보드를 여러 개 연결하면 각 키보드에서 입력되는 문자를 구별하여 처리해야 한다.
마무리
컴퓨터 시스템에서 명령어가 처리되는 과정은 입력에서부터 명령어 인출, 해석, 실행, 결과 저장으로 이어지는 복잡한 사이클로 이루어진다. 각 명령어는 프로세서의 제어 장치에 의해 처리되며, 인터럽트를 통해 중단 없이 다양한 작업을 동시에 처리할 수 있다. 이 과정은 시스템의 효율성과 처리 속도를 높이는 데 매우 중요한 역할을 한다. 명령어 처리 사이클과 인터럽트는 현대 컴퓨터의 다중 작업 처리를 가능하게 하는 핵심 요소이다.
'IT 및 프로그래밍' 카테고리의 다른 글
프로세스와 스레드 중 프로세스의 상태 변화에 대해 (0) | 2024.10.21 |
---|---|
프로세스와 스레드 중 프로세스의 개념에 대하여 (0) | 2024.10.21 |
운영체제의 서비스에 대해 (0) | 2024.10.20 |
운영체제의 발전 과정과 유형 중 발전 과정에 대하여 - 2 (0) | 2024.10.20 |
운영체제의 발전 과정과 유형 중 발전 과정에 대하여 - 1 (0) | 2024.10.20 |
운영체제 개념과 발전 목적 (0) | 2024.10.17 |
운영체제 컴퓨터 시스템과 하드웨어의 구성에 대하여 (0) | 2024.10.17 |
파이썬 변수와 연산자에 관하여 (0) | 2024.10.16 |