- 학습 목표
- 컴퓨터는 어떤 기능을 수행하는지 설명할 수 있다.
- 컴퓨터 구조에서 다루는 범위를 설명할 수 있다.
- 주요 내용
- 컴퓨터의 기능 : 프로그램 실행
- 컴퓨터 구조 : 계층적으로 분류, 각 계층의 역할
컴퓨터의 기능
- 컴퓨터 (Computer)
- 계산하는 기계
- 프로그램을 실행하는 기계 (= 명령어를 실행하는 기계)
- 프로그램
- Sequence of instructions
- 명령어들이 의미 있는 순서로 나열된 것
명령어
- 프로그래머가 컴퓨터에게 실행을 지시할 수 있는 최소의 작업 단위
(프로그래머 입장에서)- 일반적으로 프로그래머는 C, 파이썬 등의 고급언어로 코드를 짜지만,
컴파일러라는 도구가 명령어들로 바꿔줌
- 일반적으로 프로그래머는 C, 파이썬 등의 고급언어로 코드를 짜지만,
- 컴퓨터가 프로그래머의 지시를 받아 실행할 수 있는 최소의 작업 단위
(컴퓨터 입장에서)
- 컴퓨터에서 이뤄지는 작업들을 계층 구조로 나타낸 것
- 반도체 기술
- 물리적인 형태, 자연계의 신호와 소자, 전기, 전압, 전류 등의 개념으로 동작
- 전기적으로 동작하는 스위칭 소자 (트렌지스터) 제공
- 스위칭 소자로 컴퓨터의 기본 소자인 논리 게이트 (Logic Gate) 구현
- 물리적인 형태, 자연계의 신호와 소자, 전기, 전압, 전류 등의 개념으로 동작
- 논리회로
- 이산 수학을 기반으로 한다.
- 논리 개념이 들어감으로서 반도체의 물리계층 개념에서 벗어날 수 있음. (장점)
- 이진수 체계 및 논리회로
- 물리적 특성을 논리적 개념으로 분리
- 부울 대수 : 2진수 체계로 컴퓨터의 동작 표현
- 논리회로 : 논리 게이트 (AND, OR, NOT 등), 조합논리회로, 순차논리회로 등
- 전자회로와 논리회로
- 컴퓨터 조직
- 논리회로를 기반으로 만든 컴퓨터 부품 (하드웨어의 조직)
- 중앙처리장치, 기억장치, 입출력장치, 시스템 버스
- 기본적으로 중앙처리장치, 기억장치, 입출력장치 3가지로 구성되며, 이를 서로 연결해 주는 시스템 버스(신호선)로 구성된다.
- 중앙처리장치, 기억장치는 조합논리회로와 순차논리회로로 만들어 진다.
- 프로그래머 모델
- 컴퓨터 조직 중 프로그래머가 알아야 될 부분, 알아야 될 가상적인 형태를 의미함.
- 운전자가 운전하기 위해서 자동차에 대해 세부적으로 몰라도 기본적인 동작만 알면 운전이 가능하는 거랑 똑같다. (엑셀을 밟으면 앞으로 가고 등등)
- 프로그래머가 프로그램을 작성할 수 있도록 프로그래머에게 제공되는 부분
- 프로세서 구조, 기억장치 구조, 명령어 집합이 해당
- 중앙처리장치, 기억장치, 입출력장치의 세세한 구조를 몰라도 "프로세서 안에 레지스터가 몇 개나 있는지, 연산 기능과 명령어는 어느 것들이 있는지,
기억장치는 어떠한 것들을 가지고 있는지" 이정도의 지식만 있으면 프로그램을 짤 수 있음.
# 어떻게 만들어 졌는지는 알 필요가 없다. 그것들을 활용할 수 만 있으면 된다.
- 명령어 집합 (instruction set)
- 컴퓨터가 해석할 수 있는 명령어들의 모임
- 하드웨어와 소프트웨어를 연결하는 인터페이스
- 명령어 (instruction)
- 컴퓨터가 실행할 수 있는 각장 기본적인 작업 단위
- 기계어 (Machine instruction) 또는 기계 코드 (Machine Code)
- 2진수로 표현된 명령어
- 어셈블리어 (assembly language)
- 0과 1로만 표현되어 있어 사람이 알아보기 어렵다. (어셈블리어가 나온 이유)
- 사람이 쉽게 이해할 수 있도록 문자 기호로 표현한 명령어 (상대적으로 쉽다)
- 기계어와 1:1 매칭된다는 장점이 있음, 저급언어
- 하드웨어에 따라 어셈블리어가 달라진다. (= 이식성이 낮다.)
- 소프트웨어 계층
- 어셈블리 프로그램
- 어셈블리 언어로 작성한 프로그램
- 기계 의존적 (컴퓨터 cpu에 따라 어셈블리어가 달라짐)
- 고급언어 프로그램
- C, Java와 같은 고급 프로그래밍 언어로 작성된 프로그램
- 컴파일러(Compiler)가 어셈블리 언어(=기계어)로 번역
( CPU의 종류 따라 컴파일러가 따로 있다) - 즉, C와 같은 고급언어 자체는 기계 독립적이다.
( cpu의 영향을 받지 않음 = 이식성이 높음)
- 어셈블리 프로그램
문제
- 컴퓨터 구조가 다루는 범위가 아닌 것은?
- 기억장치 구조
- 프로그래머 모델
- 명령어 집합
- 프로세스 스케줄링
- 프로세스 스케줄링이란 운영체제가 어떤 프로그램을 먼저 실행시킬 것인지 결정하는 것 (운영체제 즉, OS가 담당하는 개념)
- 프로세스 스케줄링이란 운영체제가 어떤 프로그램을 먼저 실행시킬 것인지 결정하는 것 (운영체제 즉, OS가 담당하는 개념)
- 컴퓨터의 하드웨어와 소프트웨어를 연결하는 요소는?
- 명령어 집합
- 프로그램
- 논리 소자
- 반도체 소자
- 소프트웨어 프로그래머는 명령어를 사용해서 컴퓨터에게 일을 시킴.
프로그램도 어떻게 보면 답이 될 수 있지만, 명령어 집합이 훨씬 더 근접함
- 소프트웨어 프로그래머는 명령어를 사용해서 컴퓨터에게 일을 시킴.
- 프로그래머 관점에서 본 컴퓨터 하드웨어를 표현하는 용어는?
- 어셈블리
- 명령어 집함
- 시스템 버스
- 프로그래머 모델
- 자동차를 운전할 때, 운전자 모델이랑 유사하다고 볼 수 있음
요약
- 컴퓨터
- 프로그램을 실행하는 기계
- 프로그램은 일련의 명령어들로 구성
- 컴퓨터의 계층적 구조
- 프로그래머 모델 : 소프트웨어와 하드웨어 구분
- 반도체 기술 : 물리 개념과 논리 개념 분리
- 논리회로라는 개념 덕분에 반도체의 성질을 몰라도 컴퓨터를 이용할 수 있음
- 컴퓨터 조직 : "실제 컴퓨터가 어떻게 구성되어 작동하느냐"의 부분
- 프로그래머 모델 : 컴퓨터 조직 중 프로그래머들이 쓸 수 있는 부분들을 모아둔 것
(중앙처리장치, 기억장치, 명령어 집합 등)
- 다음 시간
- 컴퓨터의 발달 과정 소개