2022. 12. 28. 16:25, 카테고리 없음
컴퓨터 시스템의 기본 구성
- 하드웨어
- 물리적인 실체가 있는 장비, 부품
- 시스템 소프트웨어
- OS를 포함하는 부트로더, 장치드라이버, 쉘 같은 것들을 얘기함
- 응용 소프트웨어
- 애플리케이션
하드웨어
- 입력, 연산, 제어, 기억, 출력 기능을 구현한다.
- 변경이 어렵다는 의미가 될 수 있다.
컴퓨터 하드웨어의 주요 구성 요소
- 디스플레이 (모니터 / 출력장치)
- 메인보드
- 머더보드라고도 칭한다. (주요 칩들과 메모리 모듈, I/O장치 인터페이스를 위해서 슬롯이 장착된 기판을 의미한다.)
- CPU
- 가장 중요한 구성 요소이다.
- 주기억장치 모듈
- 램 (메인메모리 모듈 이라고도 부른다.)
- 확장보드
- 사운드카드, 랜카드, 등 기능추가를 위해서 장착하는 보드들을 확장보드라고 칭한다.
- 그래픽카드 또한 확장보드에 장착된다
- 전원 공급 장치
- 광 저장 장치
- ODD라고도 한다.
- 하드디스크, SSD 등
- 키보드, 마우스와 같은 입력장치
소프트웨어
- 특정 작업을 수행하기 위해서 하드웨어에 의해서 저장되고 실행되는 명령어
- 정보처리의 종류와 수행시간을 지정해주는 명령들의 집합이라고도 한다.
- 시스템 소프트웨어
- 컴퓨터를 유지/관리하는 데 사용되는 소프트웨어를 얘기한다. (운영체제, 런타임환경, 펌웨어 등등)
- 로우레벨 언어로 작성되는 경우가 많다.
- 응용 소프트웨어
- 사용하는 목적에 따라서 제작된 기능적인 프로그램을 칭한다.
- 고급언어로 작성되어있는 경우가 많다.
- 하드웨어에 의존적이다.
컴퓨터의 기본 구조
- 가장 중요한 3요소
- CPU / Memory / IO Devices이다
- CPU : 중앙처리 장치, 프로그램의 실행과 데이터 처리를 담당하는 핵심 요소이다. (프로세서라고도 불린다.)
- 입출력 장치로부터 정보를 받아오고 처리한 결과를 내보내는 역할을 한다.
- 메인보드 내에서도 가장 큰 칩이다.
- 산술 논리 연산장치 *ALU)와 컨트롤유닛/, 레지스터 (임시메모리)로 구성이 되어있다.
- 기억 장치 : 저장장치라고도 한다. CPU에서 처리한 결과를 보관하는 용도로 주로 사용된다.
- 1차 메모리, 2차 메모리로 나뉜다.
- 프로그램 코드라던가 데이터를 저장하는 역할을 한다.
- 1차 메모리는 휘발성인 경우가 많다. (램) 휘발성 → 전력공급이 중단되는 경우에 데이터가 유실되는 장치를 뜻한다. 빠른 IO를 특징으로 한다.
- 2차 메모리는 보조저장 장치를 얘기한다. 비휘발성이다. (영구 데이터 보존을 위해 사용되는 경우가 많다. 디스크나 테이프)
- 입출력 장치 : 사용자와 컴퓨터 간의 상호작용을 위한 장치이다.
- CPU : 중앙처리 장치, 프로그램의 실행과 데이터 처리를 담당하는 핵심 요소이다. (프로세서라고도 불린다.)
- 이 3가지가 시스템 버스로 통신하는 구조로 이루어져 있다.
- CPU / Memory / IO Devices이다
정보의 표현과 저장
- 정보의 종류
- 프로그램 코드
- 데이터
- 2진수 비트들의 조합으로 표현이 된다.
프로그램 코드
- 고급 언어 프로그램 (영문자와 숫자로 이루어져 있어서 사람들이 이해하기는 쉽지만 컴퓨터는 이해할 수 없다. 그래서 컴파일러가 존재한다.)
- 컴파일러 → 고급 언어들을 컴퓨터 하드웨어가 이해할 수 있는 언어로 번역하는 일을 담당한다.
- 언어 번역 프로그램
- 해석기 번역기 정도로 이해하면 쉽다.
- 원래 문서를 소스 코드, 출력된 문서를 타깃 코드라고 칭한다.
- 소스 코드를 타겟 코드로 옮기는 과정을 컴파일이라고 한다. (다른 말로 빌드라고도 얘기한다.)
- 일반적으로 인터프리터를 거치는 것보다 컴파일된 파일 실행이 훨씬 빠르다.
- 네이티브 컴파일러와 크로스 컴파일러로 구분이 된다.
- 구분이 되는 기준은 컴파일러가 실행되는 컴퓨터 또는 운영체제가 같은가 다른가에 따라서 나뉘게 된다.
- 같은 경우 → 네이티브 / 다른 경우 → 크로스 컴파일러
- 크로스컴파일러가 많이 쓰이고 있다.
- 고급언어로 작성된 프로그램을 실행하는 방법은 두 가지가 있다.
- 첫 번째는 컴파일을 하는 방법이다.
- 두 번째는 인터프리터를 사용하는 방법이다.
- 소스코드를 한줄한줄 읽어서 그 즉시 결과를 출력하는 방식이다. (베이식 같은 언어)
- 프로그램 크기가 아주 큰 경우에 인터프리터로 더 빨리 실행할 수도 있다.
- 컴파일 과정을 안 거치기 때문에 교육 목적에서 바로 결과를 확인할 수 있다.
- 컴파일러 → 고급 언어들을 컴퓨터 하드웨어가 이해할 수 있는 언어로 번역하는 일을 담당한다.
- 어셈블리 프로그램 로우레벨 랭귀지
- 언어 사항의 차이를 해결하기 위해서 존재하는 어셈블리어로 작성된 프로그램을 뜻한다.
- 기계어 로우레벨 랭귀지
고급언어에서 기계어 프로그램으로 번역되는 과정
- 고급 언어 프로그램이 컴퓨터에서 처리가 되려면 어셈블리 프로그램으로 번역이 되어야 한다.
- 그리고 해당 CPU를 위한 기계어 프로그램으로 번역이 되어야 한다.
- 고급 언어 프로그램 ⇒ Z = X + Y → 기억장치에 저장되어 있는 데이터 X와 Y를 더하고 결괏값을 기억장치의 Z 번지에 저장해라 라는 뜻
- 어셈블리 프로그램 ⇒ LOAD A, X → 기억장치의 X번지에 있는 내용을 읽어 레지스터 A에 로드해라
- ADD A, Y → 기억장치의 Y번지에 있는 내용을 읽어서 레지스터 A에 적재된 값과 더하고 결과를 레지스터 A에 적재해라
- STOR Z, A → 레지스터 A의 내용을 기억장치의 Z번지에 저장하라는 명령이다.
- 고급언어 프로그램 → 어셈블리 프로그램으로 번역이 되면서 3줄로 번역이 되었다.
- 어셈블리 프로그램 → 기계어 프로그램
- LOAD A, X ⇒ 00100101
- ADD A, Y ⇒ 10000110
- STOR Z, A ⇒ 01000111
명령어 형식
- 명령어의 비트 수와 용도 및 필드 구성 방법을 지정해주는 형식이다.
- 기계어 필드가 두 개로 구성된 것으로 가정을 한다면
- 00100101 → 연산코드 001 , 오퍼랜드 00101
- 연산코드 필드
- CPU가 수행할 연산을 지정한다.
- 레지스터 A에 저장해라 라는 명령어를 기계어로 표현한 것이다. ⇒ 001
- 비트가 3개라면 2^3 이기 때문에 8가지의 연산 방법을 가질 수 있다.
- 오퍼랜드 필드
- 명령어 실행에 필요한 데이터가 저장된 주소이다.
- 비트가 5개라면 2^5 , 기억장치의 주소를 32개 가질 수 있다는 뜻이다.
마무리
- 컴퓨터의 기본 구성에 대해서 공부해 보았습니다.
- 하드웨어, 시스템 소프트웨어, 응용 소프트웨어 이렇게 크게 3개로 분류할 수 있습니다.
- 하드웨어는 말 그대로 딱딱한 부품, 고치기 힘든 부품으로 CPU 메인보드 입출력장치 등등을 뜻합니다.
- 시스템 소프트웨어는 하드웨어에 의존적인 시스템을 구동시키기 위한 프로그램 등을 칭합니다.
- 명령들의 집합이라고도 합니다.
- 응용 소프트웨어는 보통 평소에 사용하는 프로그램 같은 것이라고 생각하면 될 것 같습니다.
- 하드웨어는 단순히 CPU가 가장 큰 역할을 하고 메모리가 부수적인 역할, 그리고 해당 데이터들의 입출력을 담당하는 입출력 장치로 나누면 될 것 같습니다.
- 시스템 버스로 통신하는 구조로 이루어져 있다고 합니다.
- 하드웨어 부품 하나하나가 각각의 장치와 서로 협력을 하여 동작하는 것 같습니다.
- 시스템버스가 그 협력관계를 유지시켜준다고 보면 될 것 같습니다.
- 어셈블리어와 기계어에 대해서 살짝 개념을 짚었으나, 아직 이해는 되지 않습니다.
- 어떻게 해서 연산코드 필드와 오퍼랜드 필드를 구별할 수 있는지, 생성할 수 있는지에 대해서 배우지 못해서 나중에 정리가 한번 더 필요할 것 같습니다.
Comments, Trackbacks