CS/컴퓨터 구조

[책] 컴퓨터 아키텍처 - 01. 컴퓨터와 시스템

hojak99 2019. 2. 6. 19:17

컴퓨터와 시스템

컴퓨터 시스템의 개념적 구성

컴퓨터는 일반적으로 하드웨어(hardware)소프트웨어(software) 로 구성됨.

하드웨어 : 시스템을 구성하는 물리적 부붐으로 이루어진 전자적, 기계적 장치 소프트웨어 : 하드웨어에 작업을 수행할 순서와 방법을 지시하는 명령어로 구성된 프로그램 및 프로그램 수행에 필요한 절차, 규칙, 관련 문서 등을 총칭

쉽게 말해서 하드웨어는 컴퓨터 부품을 생각하면 되고, 소프트웨어는 어떠한 명령어를 통해 하드웨어를 사용할 수 있게 만들 수 있게 하는 것이라고 생각하면 될 것 같다.

컴퓨터 시스템의 4대 기능

컴퓨터 시스템은 입력처리저장출력을 수행한다.

입력 : 입력장치를 통해 외부 세계에서 내부 세계로 정보를 받아들이는 기능. (ex. 키보드) 처리 : 입력된 정보를 중앙처리장치를 통해 연산을 수행한 후 정보를 가공 및 변화하는 기능 저장(보관) : 입력 및 처리된 정보를 어떠한 저장장치에 저장(보관) 하는 기능 출력 : 입력, 처리, 저장된 정보를 모니터와 같은 출력장치를 통해 외부 세계로 내보내는 기능

입력처리저장출력 이라는 단어의 뜻을 생각하면 될 것 같다.

비트, 바이트, 워드

컴퓨터는 onoff 와 같이 두 가지 상태의 신호 및 기호만을 이해할 수 있음. 이러한 신호를 2진수로 표현함

비트(bit) : 정보를 구성하는 최소 단위. 0, 1로만 이루어져 있다. 바이트(bite) : 연속적인 8개 비트의 조합을 바이트라고 함. 정보 표현의 기본 단위. (256 종류의 정보 밖에 표현 못함) 워드(word) : 중앙처리장치에서 한 번에 처리할 수 있는 비트의 집합. (바이트보다 더 큰 정보 처리 단위를 취급하기 위함)

비트와 달리 바이트와 워드는 의미를 가진 정보이다.


컴퓨터 하드웨어

하드웨어는 컴퓨터 기능을 수행하기 위해 전기적 신호 로 구성된 정보를 이동, 처리하는 물리적인 실체. 그 기능에 따라 중앙처리장치기억장치주변장치로 구분됨.

중앙처리장치(Central Processing Unit : CPU)

중앙처리장치(CPU) : 컴퓨터 시스템에 부착된 모든 장치의 동자을 제어, 명령을 실행하는 장치. 마이크로프로세서라고도 부름. 제어장치, 연산장치, 레지스터 CPU 내부 버스 등으로 구성됨.

제어장치 : 메인 메모리부터 명령어를 인출 및 해독해 연결된 장치에 제어 신호를 보냄. (명령어장치라고도 함) 연산장치 : 제어 신호에 따라 명령어가 의도하는 대로 데이터를 실행하기 위해 CPU 내부에서 처리하는 장치. (실행장치, 산술논리장치라고도 부름) 레지스터 : 데이터 처리하는 동안 사용할 값, 연산의 중간 결과를 일시적으로 기억하는 고속처리장치. (누산기, 명령어 레지스터 등이 존재) CPU 내부 버스 : 제어 및 연산장치, 레지스터 등과 같은 CPU 내부 구성요소를 연결하는 배선(wire)의 집합. 데이터 신호, 주소 신호, 제어 신호 전송

기억장치

기억장치 : 컴퓨터 시스템에 의해 처리될 프로그램, 데이터를 저장하기 위한 장치. 저비용, 고효율로 이용하기 위해 계층적 기억 장치 로 구성 돼 사용. 계층적 기억 장치 : CPU 내부의 기억 장치인 레즈지스터, 캐시 메모리, 메이 메모리, 보조기억장치로 구분. (고속일수록 고가, 저속일 수록 저가 및 대용량)

여기서 계속 메인 메모리 라는 말이 나오는데 메인 메모리는 그냥 메모리라고도 함. CPU 에서 수행할 프로그램과 필요한 데이터를 기억하기 위한 장치. DRAM 을 주로 사용. 보조기장치 는 프로그램과 데이터를 저장하는 장치.

기타 하드웨어

컴퓨터 시스템은 CPU, 기억장치, 주변장치 외에 이런 구성 요소를 서로 연결하기 위한 버스 와 각 구성 요소를 탑재하는 메인보드 등이 있음. 이 구성 요소들은 버스를 통해 각종 신호를 전달 및 교환 함.

시스템 버스는 아래와 같이 구분할 수 있다.

  • 데이터 버스 : CPU, 메인 메모리, 주변장치 사이에 데이터르 전송하는 배선의 집합. 배선의 수는 한 번에 전송할 수 있는 비트 수를 결정.
  • 주소 버스 : CPU 가 시스템 구성 요소를 식별하기 위한 주소 정보를 전송하는 배선의 집합. 배선의 수는 CPU 와 접속할 수 있는 최대 메모리의 용량을 결정.
  • 제어 버스 : CPU 가 시스템 구성 요소의 동작을 제어하는데 사용되는 배선의 집합.

메인보드 : CPU, 메모리, BIOS 등과 같은 시스템의 중요 기능장치 대부분 부착 가능. (기능장치 사이의 호환성이나 확장의 범위 결정함)


컴퓨터 소프트웨어

소프트웨어 : 명령어의 집합으로 구성됨. 데이터의 이동 방향과 데이터 처리의 종류를 지정, 이벤트 발생 시간을 지정하는 명령의 집합 자체. 소프트웨어의 품질은 컴퓨터 하드웨어의 사용 효율과 사용 환경을 결정.

소프트웨어는 크게 시스템 소프트웨어응용 소프트웨어 로 구분한다.

소프트웨어

  • 시스템 소프트웨어 : 하드웨어를 제어, 관리
  • 응용 소프트웨어 : 사용자가 하려는 작업을 수행

즉, 다음과 같이 동작을 한다.

사용자 <-> 응용 프로그램 <-> 시스템 소프트웨어 <-> 하드웨어

시스템 소프트웨어

시스템 소프트웨어 : 하드웨어의 기능을 실행하기 위한 필수적인 명령어 해석, 하드에 데이터 저장, 주변장치와 통신을 하거나 응용 소프트웨어의 실행을 지원하는 소프트웨어 그 예로 운영체제장치 드라이버컴파일러인터프리터번역기링커로더등이 있음.

운영체제(operating system) : 컴퓨터 자원을 관리, 응용 프로그램의 실행 환경을 제공 장치 드라이버(device driver) : 컴퓨터에 온라인으로 연결된 주변 기기를 제어하는 운영체제 모듈 컴파일러(compiler)와 인터프리터(interpreter) : 고급언어로 작성된 원시 프로그램(source program)을 컴퓨터가 이해하는 저급언어로 변환하는 일종의 번역기 링커(linker) : 분할하여 작성된 프로그램에 의해 생성된 목적 프로그램(object program) 또는 라이브러리 루틴을 결합해 실행 가능한 하나의 프로그램으로 연결 로더(loader) : 저장장치에 보관된 프로그램을 읽어 메인 메모리에 적재한 후 실행 가능 상태로 만듦

즉, 다음과 같은 과정으로 동작한다.

고급 언어 프로그램 -> 번역기(컴파일러, 어셈블러) -> 목적 프로그램(기계어 모듈) -> 링커 -> 실행 프로그램 -> 로더 -> 메모리

응용 소프트웨어

응용 프로그램 : 컴퓨터 시스템을 특정 분야에 사용하기 위해 제작된 소프트웨어. 애플리케이션, 앱, 어플이라고도 함.


운영체제와 부팅

하드웨어를 동작시키는데 가장 중요한 시스템 소프트웨어는 운영체제 이다.

운영체제

운영체제 : 하드웨어 자원을 효율적으로 관리, 응용 프로그램의 공통된 서비스를 제공하는 소프트웨어의 모음

  • 컴퓨터 시스템의 하드웨어 자원 관리
  • 사용자와 하드웨어 사이의 인터페이스 역할
  • 하드웨어의 고장 탐색, 오류 처리, 보안 유지

부팅 (booting)

부팅 : 운영체제과 컴퓨터 하드웨어를 관리, 응용 소프트웨어를 싱핼 수 있도록 컴퓨터에 시동을 거는 것. 보조기억 장치에 저장된 운영체제를 메인 메모리에 불러돌이는 과정. (부트스트랩(bootstrap), IPL(inital program load 라고도 함))

운영체제는 항상 컴퓨터 전원을 켤 때 반드시 실행이 되고 있어야 한다.

그래서 이를 위해 부트로더(bootloader)ROM 을 사용한다.

부트로더 : 보조기억장치에 저장된 운영체제를 메인 메모리에 단계적으로 적재. ROM : 메인 메모리에 사영되는 RAM 처럼 CPU 가 프로그램을 수행할 수 있는 기억 공간.

여기서 ROM 은 RAM 과 달리 기본적으로 저장된 내용을 수정할 수 없으며, 비휘발성 메모리이다.

운영체제는 보조기억장치의 고정된 위치에 존재해 부트로더는 이 위치를 알고 있기에 RAM 에 적재할 수 있음.

즉, 다음과 같은 과정을 통해 운영체제가 실행이 된다.

ROM[부트로더] : 컴퓨터 전원 킬 시 ROM 에 저장된 부트로더 실행
-> HDD(운영체제) : 부트로더가 하드디스크에 있는 운영체제 커널을 찾아 RAM 에 적재
-> RAM(운영체제) : 부트로더는 제어권을 운영체제에 전달

데스크탑 컴퓨터에서 사용하는 두 단계 부팅과정을 다음과 같이 진행한다.

1. 컴퓨터 전원 켤 시 ROM 에 저장된 BIOS 가 실행
2. BIOS 는 각종 하드웨어의 상태 검사 후 이상 있으면 오류 통지 후 동작을 멈춤
3. BIOS 는 부팅 매체인 하드디스크에 저장된 부트로더를 메인 메모리로 옮김.
4. 부트로더는 BIOS 를 종료 후 운영체제를 메인 메모리에 적재 후 운영체제에 제어권을 넘김
5. 운영체제는 응용 소프트웨어의 실행 환경 조성

이 후에 사용자가 애플리케이션을 실행하면 운영체제는 로더를 통해 하드에 있는 애플리케이션을 메모리에 적재 후 실행함.


컴파일러와 인터프리터

하드웨어는 기계어만을 인식하기 때문에 고급 언어로 작성된 원시 프로그램을 목적 프로그램으로 변환하는 소프트웨어가 필요하다.

컴파일러

컴파일러 : 고급언어로 작성된 원시 프로그램을 저급언어로 구성된 목적 프로그램으로 변환하는 소프트웨어.

여기서 중요한 점은 컴파일러 는 원시 프로그램을 전체적으로 분석하지만 변환 과정을 한 번만 거치면 항상 실행 파일을 수행할 수 있으며 프로그램을 최적화 할 수 있음.

그리고 컴파일러는 정적 바인딩 방식을 사용하므로 데이터 형식이 고정된 프로그램에서 사용될 수 있다. 윈도우에서 사용하는 컴파일러는 리눅스 컴파일러와 다르다.

인터프리터

인터프리터 : 고급언어에서 하나의 명령어를 분석해 저급 언어 명령어로 변환 후 실행시키는 과정을 반복함.

인터프리터는 컴파일러와 다르게 원시 프로그램을 명령어 단위로 변환한다. 그래서 프로그램 전체에 대해 분석하지 않아 변환 시간이 짧음. 하지만 프로그래을 실행할 때마다 변환 과정이 필요하다.

그리고 인터프리터는 동적 바인딩을 사용하기 때문에 데이터 형식이나 구조가 동적으로 결정되는 프로그램에서 사용할 수 있다.


컴퓨터의 구조, 구성 실현

컴퓨터 시스템의 설계나 사양은 세 단계의 설계 수준인 구조, 구성, 실현으로 구분할 수 있음.

컴퓨터 구조

컴퓨터는 하드웨어, 소프트웨어, 그리고 하드웨어와 소프트웨어 사이의 완충 역할을 수행하는 명령어 집합 구조(ISA) 로 구성되어 있음.

컴퓨터 구조 : 하드웨어와 소프트웨어의 인터페이스에 대한 설명을 의미하는 명령어 집합 구조. (컴퓨터 아키텍처, CPU 아키텍처라고도 함)

그리고 컴퓨터 구조는 프로그래머에게 보이는 시스템 속성이다.

  • 명령어 집합
  • 비트의 수
  • 레지스터의 개수나 형식
  • 메로리 주소 지정 방식

컴퓨터 구성

컴퓨터 구성 : 아키텍처 사양에 대한 형체를 제공하는 논리적인 골격. CPU 와 각종 구성 요소, 관련 회로의 인터페이스에 대한 세부 사항 등 프로그래머에게 투명한 하드웨어 내역. (컴퓨터 구현이라고도 함)

어떻게 와 관련이 있다

컴퓨터 실현

컴퓨터 실현 : 컴퓨터 구현의 구체적인 버전. 어떤 부품이 사용되며 그 부품들이 어떻게 서로 연결되고 배치되는지 결정.


반응형