1. 컴퓨터 하드웨어의 구성
하드웨어
프로세서 - 메모리(기억장치) - 주변장치
시스템 버스로 연결한다.
(1) 프로세서
프로세서(중앙처리장치, CPU): 컴퓨터 하드웨어에 부착한 모든 장치의 동작을 제어하고 명령을 실행
연산장치 - 제어장치 - 레지스터
내부 버스로 연결한다.
레지스터
사용자 가시 레지스터
사용자가 운영체제와 사용자 프로그램을 이용해 정보를 변경 할 수 있는 레지스터
종류 | 설명 | |
데이터 레지스터 | 함수 연산에 필요한 데이터를 저장한다. 값, 문자 등을 저장하므로 산술 연산이나 논리 연산에 사용하며, 연산 결과로 플래그 값을 저장한다. | |
주소 레지스터 | 주소나 유효 주소를 계산하는 데 필요한 주소의 일부분을 저장한다. 주소 레지스터에 저장한 값(값 데이터)을 사용하여 산술 연산을 할 수 있다. | |
기준 주소 레지스터 | 프로그램을 실행할 때 사용하는 기준 주소 값을 저장한다. 기준 주소는 하나의 프로그램이나 일부처럼 서로 관련 있는 정보를 저장하며, 연속된 저장 공간을 지정하는 데 참조할 수 있는 주소이다. 다라서 기준 주소 레지스터는 페이지나 세그먼트처럼 블록화된 정보에 접근하는 데 사용한다. | |
인덱스 레지스터 | 유효 주소를 계산하는 데 사용하는 주소 정보를 저장한다. | |
스택 포인터 레지스터 | 메모리에 프로세서 스택을 구현하는 데 사용한다. 많은 프로세서와 주소 레지스터를 데이터 스택 포인터와 큐 포인터로 사용한다. 보통 반환 주소, ㅡㅍ로세서 상태 정보, 서브루틴의 임시 변수를 저장한다. |
사용자 불가시 레지스터
사용자가 정보를 변경할 수 없는 레지스터
종류 | 설명 |
프로그램 카운터(PC) | 다음에 실행할 명령어 주소를 보관하는 레지스터이다. 계수기로 되어 있어 실행할 명령어를 메모리에서 읽으면 명령어의 길이만큼 증가하여 다음 명령어를 가리키며, 분기 명령어는 목적 주소로 갱신할 수 있다. |
명령어 레지스터(IR) | 현재 실행하는 명령어를 보관하는 레지스터이다. |
누산기(ACC) | 데이터를 일시적으로 저장하는 레지스터이다. |
메모리 주소 레지스터 (MAR) |
프로세서가 참조하려는 데이터의 주소를 명시하여 메모리에 접근하는 버퍼 레지스터이다. |
메모리 버퍼 레지스터 (MBR) |
프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터이다. 메모리 데이터 레지스터라고도 한다. |
(2) 메모리
메모리는 컴퓨터 성능과 밀접한 관계가 있으며 메모리 계층 구조를 통해 비용, 속도, 용량, 접근시간 등을 상호 보완한다.
메모리 계층 구조는 비싼 메모리의 가격 문제 때문에 제안한 방법으로 불필요한 프로그램과 데이터는 보조기억장치에 저장했다가 실행, 참조할 때만 메인 메모리로 옮기는 원리를 적용한 방법이다.
- 레지스터: 프로세서 내부에 있으며, 프로세서가 사용할 데이터를 보관하는 가장 빠른 메모리이다.
- 메인 메모리(주기억장치, 1차 기억장치): 프로세서 외부에 있으며, 프로세서에서 수행할 프로그램과 데이터를 저장하거나 프로세서에서 처리한 결과를 메인 메모리에 저장한다. 메인 메모리는 다수의 셀로 구성되어 있으며, 셀이 K비트라면 셀에 2^K 값을 저장할 수 있다. 메인 메모리는 프로세서와 보조기억장치 사이에 존재하며 발생하는 디스크 입출력 병목 현상을 해결하는 역할을 한다.
- 캐시: 프로세서 내부나 외부에 있으며, 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리의 속도 차이를 보완하는 고속 버퍼이다. 메인 메모리에서 데이터를 블록 단위로 가져와 프로세서에 전달하여 속도를 높인다.
- 보조기억장치(2차 기억장치, 외부기억장치): 주변 장치 중 프로그램과 데이터를 저장하는 하드웨어
(3) 시스템 버스
시스템 버스는 하드웨어를 물리적으로 연결하여 서로 데이터를 주고받을 수 있게 하는 통로
종류 | 설명 |
데이터 버스 | 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송한다. 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라고 한다. |
주소 버스 | 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송한다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정한다. |
제어 버스 | 프로세서가 시스템의 구성 요소를 제어하는 데 사용한다. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정한다. |
(4) 주변장치
- 입력장치: 컴퓨터에서 처리할 데이터를 외부에서 입력하는 장치
- 출력장치: 입력장치와 반대로 컴퓨터에서 처리한 데이터를 외부로 보내는 장치
- 저장장치: 메인 메모리와 달리 거의 영구적으로 데이터를 저장하는 장치. 데이터를 입력하여 저장하며, 저장한 데이터를 출력하는 공간이므로 입출력장치에 포함하기도 한다.
2. 컴퓨터 시스템의 동작
컴퓨터 시스템으로 작업을 처리하는 순서
- 입력장치로 정보를 입력받아 메모리에 저장한다.
- 메모리에 저장한 정보를 프로그램 제어에 다라 인출하여 연산장치에서 처리한다.
- 처리한 정보를 출력장치에서 표시하거나 보조기억장치에 저장한다.
(1) 명령어의 구조
명령어는 프로세서가 실행할 연산인 연산 부호, 명령어가 처리할 데이터, 데이터를 저장한 레지스터, 메모리 주소인 피연산자로 구성된다.
- 연산 부호(오피코드, OP): 프로세서가 실행할 동작인 연산을 지정한다. 산술연산, 논리연산, 시프트, 보수 등 연산을 정의하며 연산 부호가 n비트이면 최대 2^n개의 연산이 가능하다.
- 피연산자(오퍼랜드): 연산할 데이터 정보를 저장한다. 데이터는 레지스터나 메모리, 가상 기억장치, 입출력장치 등에 위치할 수 있다.
명령어는 실행 전에 메인 메오리에 저장하며, 한 번에 하나씩 프로세서에 순차적으로 전송하여 해석, 실행한다.
(2) 명령어의 실행
- 명령어 인출
- 명령어 해석, 프로그램 카운터 변경
- 피연산자 인출
- 명령어 실행
- 결과 저장
- 다음 명령어로 이동 -> 다음 명령어의 1단계부터 다시 시작
명령어 인출~연산 완료 시점까지 인출-해석-실행 사이클 또는 인출-실행 사이클이라고 한다.
명령어 실행 사이클은 명령어의 인출과 실행을 반복하는데 가장 일반적인 명령어 사이클이다.
- 인출 사이클: 명령어 실행 사이클의 첫번째 단계, 메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어를 실행하려고 프로그램 카운터를 증가시킨다. 인출 사이클에 소요되는 시간을 명령어 인출 시간이라고 한다.
- 실행 사이클: 인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어를 실행한다. 이 때 소비되는 시간을 실행 시간이라고 한다.
- 간접 사이클: 간접 주소 지정 방법을 사용하는 실행 사이클은 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한 번 더 읽어 온다.
- 인터럽트 사이클: 인터럽트는 프로세서가 프로그램을 수행하는 동안 컴퓨터 시스템의 내부나 외부에서 발생하는 예기치 못한 사건을 의미한다. 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 주소(프로그램 카운터) 값을 스택이나 메모리의 0번지와 같은 특정 장소에 저장한다. 그리고 프로그램 카운터에는 인터럽트 처리 루틴의 시작 주소를 저장해 두었다가 인터럽트 처리를 완료하면 중단된 프로그램으로 복귀하여 계속 수행한다.
(3) 인터럽트 명령어
인터럽트 명령어: 현재 실행 중인 프로그램을 중단하고 다른 프로그램의 실행을 요구
예상치 못한 사용자 입력, 갑작스런 정전, 컴퓨터 시스템에서 긴급 요청, 잘못된 명령어 수행, 입출력 작업완료
인터럽트는 프로세서와 운영체제가 처리한다.
외부장치의 동작과 자신의 동작을 조정하는 수단
- 인터럽트 요청
- 인터럽트 서비스 루틴
인터럽트 요청 회선
- 단일 회선: 인터럽트 요청이 가능한 모든 장치를 공통의 단일 회선으로 프로세서에 연결하는 방법이다. 회선 하나에 장치를 여러 개 연결하여 인터럽트를 요청한 장치를 판별하는 기능이 필요하다
- 다중 회선: 모든 장치를 서로 다른 고유의 회선으로 프로세서와 연결하는 방법이다. 그러므로 인터럽트를 요청한 장치를 바로 판별할 수 있다.
'운영체제' 카테고리의 다른 글
운영체제 2장 (0) | 2022.04.29 |
---|---|
운영체제 1장 연습문제 (0) | 2022.03.14 |