본문 바로가기
취업준비/전산 기초

하드웨어(Hardware)와 소프트웨어(Software)

by ag_zero 2022. 3. 12.
728x90

하드웨어 (Hardware)

  • 데이터를 처리하는 물리적인 기계 장치
  • 프로세서 (중앙처리장치), 버스, 메모리 등 다양한 주변장치로 구성됨

소프트웨어 (Software)

  • 특별한 작업 지시를 위해 명령어로 작성한 프로그램

운영체제

  • 컴퓨터 하드웨어와 사용자 사이에 위치하며 하드웨어와 소프트웨어 자원을 관리하는 프로그램

프로세서 (Processor)

  • 운영체제와 가장 밀접한 하드웨어로 각 부분의 동작 제어 및 연산 수행
  • 중앙처리장치 (CPU : Central Processing Unit)라 하며 레지스터, 산술 논리 연산장치, 제어장치 등으로 구성
  • 마이크로프로세서 (Microprocessor)
  • 주기억장치를 제외한 레지스터, 산술 논리 연산장치, 제어장치를 칩 하나로 구성

버스 (Bus)

  • 프로세서를 포함한 각 장치 간 또는 sub-system을 서로 연결하여 정보(Data)를 주고받을 수 있게 해주는 통로
  • 컴퓨터 내부 각 요소의 다양한 신호(eg. 데이터 입출력 신호, 프로세서 상태 신호, 인터럽트 요구와 허가 신호, Clock 신호 등)는 공동 통신 채널, 즉 버스를 통해 전달된다.
  • 버스의 위치에 따라 내부 버스외부 버스로 분류
    • 내부 버스
      • 프로세서 내부에서 레지스터, 연산장치, 메모리와의 인터페이스 등을 연결
      • 시스템 버스 인터페이스 회로를 통해 외부 버스와 연결
    • 외부 버스
      • 프로세서와 메모리, 프로세서와 입출력장치, 입출력장치와 입출력장치를 연결
      • 시스템 버스라 부르며 각 시스템 버스는 버스 제어기라 불리는 제어 회로를 가짐
      1. 메모리 버스 : 프로세서와 메모리 또는 캐시 메모리를 연결하여 데이터를 교환하며, 프로세스 입출력 버스 정도의 속도로 실행, Backside Bus와 Frontside Bus로 구분
        1. Backside Bus : 프로세서와 캐시 메모리간의 전용 채널로 프로세서와 동일한 속도로 데이터 전송
        2. Frontside Bus : 프로세서와 메모리 간의 데이터를 전송하며 속도가 느림
      2. 주변 버스 : 입출력 버스, 프로세서와 주변 장치를 연결하여 데이터 전송
  • 버스의 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 분류
    • 데이터 버스
      • 컴퓨터 시스템에서 데이터(자료), 명령어 등의 정보를 교환하는 전송로
      • 프로세서에서 메모리나 입출력 장치로 데이터 출력 또는 반대로 데이터를 입력 받을 때 사용하는 양방향 버스
      • 데이터 버스 신호선의 수가 해당 프로세서의 워드 길이와 같으므로 프로세서 성능을 결정
    • 주소 버스
      • 하나의 시스템 장치에서 다른 장치로 주소 정보를 전송하기 위해 사용
      • 신호(주소)선의 수에 따라 최대 사용 가능한 메모리 용량이나 입출력장치 수를 결정
    • 제어 버스
      • 프로세서가 저장장치와 입출력장치에 데이터를 전송할 때, 현재 수행중인 작업 종류나 상태를 다른 장치에 알릴 때 이용하는 단방향 버스

 


레지스터 (Register)

  • 프로세서에 위치한 고속 메모리로 프로세서가 바로 사용할 수 있는 데이터 저장
  • 특수한 값 하나를 저장하는 기억 공간으로 사용
  • 컴퓨터의 구조에 따라 크기 및 종류가 다양함
  • 용도에 따라 전용 레지스터범용 레지스터, 저장되는 정보의 종류에 따라 데이터 레지스터, 주소 레지스터, 상태 레지스터로 나뉨
  • 사용자가 저장한 정보의 변경 여부에 따라 사용자 가시 레지스터 (User-Visible Register)와 사용자 불가시 레지스터 (User-Invisible Register)로 분류됨

 

  • 사용자 가시 레지스터 (User-Visible Register)
    • 운영체제(시스템)와 사용자 프로그램을 통해 접근 가능한 데이터와 주소, 일부 조건 코드를 보관
    • 조건 코드 : eg. 관련된 연산 결과로 발생하며, 프로그램적으로 접근하는 제로(0), 자리넘침, 자리올림, 양수 (Positive) 비트 등 
      • 데이터 레지스터
        • 함수 연산에 필요한 데이터 저장
        • 수치, 문자 등을 저장하므로 산술이나 논리 연산에 이용되며, 연산 결과로 플래그 값을 저장
          •  
      • 주소 레지스터
        • 주소나 유호 주소를 계산하는데 필요한 주소의 일부분을 저장
        • 주소 레지스터에 저장된 값 (수치 데이터)을 이용해 산술 연산 가능

 

  • 사용자 불가시 레지스터 (User-Invisible Register)
    • 프로세스의 제어와 상태 관리
    • 프로그램 카운터, 명령어 레지스터, 프로그램 상태 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터 등이 속함
    • 프로그램 카운터 (PC : Program Counter)
      • 프로그램 수행을 제어하는 명령어 실행 순서를 보관. 즉, 다음에 실행할 명령어의 주소 저장
      • 계수기로 되어있어 실행할 명령어를 메모리에서 읽으면 Count가 증가한다.
    • 명령어 레지스터 (IR : Instruction Register)
      • 현재 수행하는 명령어를 저장, 명령어의 연산자 부분만 보관하여 다른 레지스터만큼 비트를 가질 필요는 없다.
      • 명령어 연산자는 메모리 내에서만 전달되므로, 메모리 버퍼 레지스터와 명령어 레지스터 사이에 직접 정보 전달 경로를 통해 명령어 연산자를 빠르게 전달 가능
    • 프로그램 상태 레지스터 (PSR : Program Status Register)
      • 상태 정보 (플래그, 프로그램 카운터에 저장된 주소 정보 등)를 저장
      • 프로그램이 수행되는 순간마다 프로그램의 수행 상태와 프로세서 상태를 나타낸다.
    • 메모리 주소 레지스터 (MAR : Memory Address Register)
      • 접근하려는 메모리의 주소 저장
      • 주소 레지스터, 프로그램 카운터 등으로부터 주소 정보를 전달받는다.
    • 메모리 버퍼 레지스터 (MBR : Memory Buffer Register)
      • 메모리에서 정보를 읽거나 정보를 저장할 때 사용
      • 연산장치를 통해 메모리 주소 레지스터, 인덱스 레지스터, 프로그램 카운트 등의 주소 레지스터와 데이터 레지스터에 정보를 전달하는데 사용한다.