[운영체제] 컴퓨터 하드웨어의 구성

hi·2022년 9월 6일
0

운영체제

목록 보기
4/9

컴퓨터 시스템은 하드웨어와 소프트웨어로 구성된다.

  • 하드웨어: 데이터를 처리하는 물리적인 기계장치
  • 소프트웨어: CPU에게 어떤 작업을 지시하는 명령어로 작성된 프로그램

그리고 운영체제 (OS, Operating System)은 컴퓨터 하드웨어를 관리하는 소프트웨어이다.

컴퓨터 하드웨어는 크게 프로세서, 메모리(기억장치), IO 장치로 구성되고, 이들은 시스템 버스로 연결된다.


1. 프로세서

프로세서는 컴퓨터 하드웨어에 부착한 모든 장치의 동작을 제어하고 명령을 실행하며 중앙처리장치 (CPU, Central Processing Unit) 이라고도 함. (같은 말인데 프로세서는 CPU에 비해 하드웨어보다 소프트웨어 관점이 좀 더 부각된 용어임)

프로세서는 연산장치 (ALU), 제어장치 (CU), 레지스터로 구성되고 이들은 내부 버스를 통해 연결된다.

- 레지스터

레지스터는 CPU 내부에 위치한 휘발성 메모리로 Read/Write 속도가 매우 빠르다. 레지스터는 용도에 따라 전용 레지스터, 범용 레지스터로 구분할 수 있고 사용자가 정보를 변경할 수 있는지에 따라 사용자 가시 레지스터와 사용자 불가시 레지스터로 구분할 수 있다. 또한 저장하는 정보의 종류에 따라 데이터 레지스터, 주소 레지스터, 상태 레지스터 등 으로 세분화할 수 있다.


  • 사용자 가시 레지스터
    사용자 가시 레지스터는 사용자가 운영체제와 사용자 프로그램을 이용하여 정보를 변경할 수 있는 레지스터이며, 접근이 가능한 데이터와 주소, 일부 조건 코드를 보관한다.
사용자 가시 레지스터의 종류설명
데이터 레지스터 (DR)함수 연산에 필요한 데이터를 저장한다. 값, 문자 등을 저장하므로 산술/논리 연산에 사용하며 연산 결과로 플래그 값을 저장한다
주소 레지스터 (AR)주소나 유효 주소를 계산하는 데 필요한 주소의 일부분을 저장한다. 주소 레지스터에 저장한 값 (값 데이터)을 사용하여 산술 연산을 할 수 있다. 주소 레지스터는 기준 주소 레지스터, 인덱스 레지스터, 스택 포인터 레지스터로 구성된다.

주소 레지스터 (AR)의 종류설명
기준 주소 레지스터프로그램을 실행할 때 사용하는 기준 주소 값을 저장한다. 기준 주소는 하나의 프로그램이나 일부처럼 서로 관련 있는 정보를 저장하며, 연속된 저장 공간을 지정하는 데 참조할 수 있는 주소이다. 따라서 기준 주소 레지스터는 페이지나 세그먼트처럼 블록화된 정보에 접근하는데 사용한다
인덱스 레지스터유효 주소를 계산하는 데 사용하는 주소 정보를 저장한다
스택 포인터 레지스터메모리에 프로세서 스택을 구현하는 데 사용한다. 많은 프로세서와 주소 레지스터를 데이터 스택 포인터와 큐 포인터로 사용한다. 보통 반환 주소, 프로세서 상태 정보, 서브루틴의 임시 변수를 저장한다.


  • 사용자 불가시 레지스터
    사용자 불가시 레지스터는 사용자가 정보를 변경할 수 없는 레지스터로 프로세스의 상태와 제어를 관리한다.

    사용자 불가시 레지스터의 종류설명
    프로그램 카운터 (PC, Program Counter)다음에 실행할 명령어의 주소를 보관하는 레지스터이다. 계수기로 되어 있어 실행할 명령어를 메모리에서 읽으면 명령어의 길이만큼 증가하여 다음 명령어를 가리키며, 분기 명령어는 목적 주소로 갱신할 수 있다.
    명령어 레지스터 (IR, Instruction Register)현재 실행하는 명령어를 보관하는 레지스터이다.
    누산기 (ACC, ACCumulator)데이터를 일시적으로 저장하는 레지스터이다.
    메모리 주소 레지스터 (MAR, Memory Address Register)프로세서가 참조하려는 데이터의 주소를 명시하여 메모리에 접근하는 버퍼 레지스터이다.
    메모리 버퍼 레지스터 (MBR, Memory Buffer Register)프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터이다. 메모리 데이터 레지스터 (MDR, Memory Data Register)라고도 한다.

프로세서의 수가 많을수록 처리 속도는 빠르며, 탐재한 프로세서의 수가 한 개면 Single-Core, 2개면 Dual-Core, ... 6개면 헥사, 8개면 옥타코어 라고 표현한다.


2. 메모리

속도가 빠르고 용량이 큰 메모리는 비싸기 때문에 메모리는 계층 구조를 구성하여 비용, 속도, 용량, 접근시간 등을 상호 보완한다.


2.1 레지스터

레지스터는 프로세서 내부에 있으며, 프로세스가 사용할 데이터를 보관하는 가장 빠른 메모리이다. 레지스터에는 PC, IR, ACC, MAR, MBR, DR,,, 등이 있다.

2.2 메인 메모리

  • 메인 메모리란
    메인 메모리는 프로세서 외부에 있으며, 프로세서에서 즉각적으로 수행할 프로그램과 데이터를 저장하거나 프로세서에서 처리한 결과를 메인 메모리에 저장한다. IO 장치 또한 메인 메모리에서 데이터를 받고나 저장한다. 주기억장치 또는 1차 기억장치라고도 한다.

  • 메인 메모리의 구성
    메인 메모리는 다수의 Cell 로 구성되며, 각 Cell 은 비트로 구성된다. 셀이 K 비트이면 셀에 2^k 값을 저장할 수 있다. 메인 메모리에 데이터를 저장할 때는 셀 한 개나 여러 개에 나누어서 데이터를 저장하는데 셀은 주소로 참조되며 n 비트라면 주소 범위는 0~2^n-1 이다.

  • 논리적 주소와 물리적 주소
    이처럼 컴퓨터에 주어진 주소를 물리적 주소라고 한다. 그러나 프로그래머는 물리적 주소 대신 수식이나 변수를 사용한다. 따라서 컴파일러가 프로그램을 기계 명령어로 변환할 때 변수와 명령어에 주소를 할당하는데, 이 주소를 논리적 주소 (가상 주소, 프로그램 주소) 라고 한다. 컴파일로 논리적 주소를 물리적 주소로 변환하는데 이 과정을 매핑, 또는 메모리 맵이라고한다.

  • 메모리의 속도
    메모리 속도는 메모리 접근시간과 메모리 사이클 시간으로 표현한다. 메모리 접근 시간은 명령이 발생한 후 목표 주소를 검색하여 데이터 쓰기(읽기)를 시작할 때까지 걸린 시간이다. (ex: 읽기 제어 신호를 가한 후 데이터를 메모리 버퍼 레지스터에 저장할 때까지 걸린 시간). 메모리 사이클 시간은 두 번의 연속적인 메모리 동작 사이에 필요한 최소 지연 시간이다. (ex: 읽기 제어 신호를 가한 후 다음 읽기 제어 신호를 가할 수 있을 때까지 필요한 시간). 보통 사이클 시간이 접근시간보다 길다.

  • 이외의 역할
    메인 메모리는 프로세서와 보조기억장치 사이에 있으며, 여기서 발생하는 디스크 입출력 병목 현상을 해결하는 역할도 한다. 반대로 프로세서와 메인 메모리 간에 속도 차이가 나면서 메인 메모리의 부담을 줄이려고 프로세서 내부나 외부에 캐시를 구현하기도 한다.

2.3 캐시

  • 캐시란
    캐시는 프로세서 내부나 외부에 있으며, 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리의 속도 차이를 보완하는 고속 버퍼이다. 캐시는 메인 메모리에서 데이터를 블록 단위로 가져와 프로세서에 워드 단위로 전달하여 속도를 높인다. 또한 데이터가 이동하는 통로 (대역폭)를 확대하여 프로세서와 메모리의 속도 차이를 줄인다.

  • 캐시의 동작
    캐시는 주소 영역을 한 번 읽어 들일 수 있는 크기로 나눈 후 각 블록에 번호를 부여하여 이 번호를 태그로 저장한다.

프로세서는 메인 메모리에 접근하기 전 캐시에 해당 주소의 자료가 있는지 확인한다. 이를 위해 접근하려는 주소 24 비트 중 태그에 해당하는 처음 22비트를 캐시의 모든 라인과 비교하여 일치하는 라인을 찾는다. 일치하는 라인이 있으면, 주소의 나머지 2비트 (00)을 이용해 데이터 라인의 4개 (00, 01, 10, 11) 바이트 중 해당하는 바이트를 가져온다.

  • 캐시의 성능
    캐시의 성능은 작은 용량의 캐시에 프로세스가 이후 참조할 정보가 얼마나 들어 있느냐로 좌우되며 프로세서가 참조하려는 정보가 있을 때를 캐시 적중 (Cache hit)이라 하고, 반대로 없을 때를 캐시 실패 (Cache miss) 라고 한다. 이때 블록의 크기는 캐시의 성능으로 좌우되는데, 실제 프로그램을 실행할 때 참조한 메모리에 대한 공간적 지역성, 시간적 지역성이 있다.

  • 공간적 지역성과 시간적 지역성이란
    공간적 지역성은 대부분의 프로그램이 참조한 주소와 인접한 주소의 내용을 다시 참조하는 특성이고, 시간적 지역성은 한 번 참조한 주소를 다시 참조하는 특성이다. 지역성은 다음 이유로 발생한다.

    • 프로그램이 명령어를 순차적으로 실행하는 경향이 있어 명령어가 특정 메모리에 인접해있다.

    • 순환 (단일 순환, 중첩 순환 등) 때문에 프로그램을 반복하더라도 메모리는 일부 영역만 참조한다.

    • 대부분의 컴파일러를 메모리에 인접한 블록에 배열로 저장한다. 따라서 프로그램이 배열 원소에 순차적으로 자주 접근하므로 지역적인 배열 접근 경향이 있다.

      지역성은 블록이 크면 캐시 히트율이 올라갈 수 있음을 의미하지만, 이에 따른 전송 부담과 캐시 데이터 교체 작업이 자주 일어나므로 블록 크기를 무작정 늘릴 수는 없다.


2.4 보조기억장치

보조기억장치는 IO 장치로 프로그램과 데이터를 저장하는 하드웨어로 2차 기억장치, 외부기억장치라고도 한다.
자기디스크, 광디스크, 자기테이브, SSD 등이 있다

3. 시스템 버스

시스템 버스는 하드웨어를 물리적으로 연결하여 서로 데이터를 주고받을 수 있게 하는 통로이다. 컴퓨터 내부의 다양한 신호 (데이터 입출력 신호, 프로세서 상태 신호, 인터럽트 요구와 허가 신호, 클록 신호 등)는 시스템 버스를 통해 전달된다.
시스템 버스는 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 구분한다.

종류설명
데이터 버스프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송한다. 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라고 한다.
주소 버스프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송한다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정한다.
제어 버스프로세서가 시스템의 구성 요소를 제어하는 데 사용한다. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정한다.

4. 주변장치

주변장치는 프로세서와 메인 메모리를 제외한 나머지 하드웨어 구성 요소이다. 크게 입력장치, 출력장치, 저장장치로 구분한다.

  • 입력장치: 컴퓨터에서 처리할 데이터를 외부에서 입력하는 장치이다. (ex: 키보드, 마우스, 지문 스캐너 등)
  • 출력장치: 컴퓨터에서 처리한 데이터를 외부로 보내는 장치이다. (ex: 모니터, 프린터, 스피커 등)
  • 저장장치: 메인 메모리와 달리 영구적으로 데이터를 저장하는 장치이다. (지속적 저장장치) 데이터를 입력하여 저장하며, 저장한 데이터를 출력하는 공간이므로 입출력 장치에 포함하기도 한다. (ex: SSD, HDD, CD)

0개의 댓글