컴퓨터구조와 운영체제 18

8. CPU의 내부 구성 - 레지스터

레지스터 레지스터 CPU 내부에 있는 작은 임시 저장 장치 개발하고 실행하는 프로그램 속의 명령어와 데이터는 실행 전후로 그 관련된 값들이 레지스터 저장된다. 반드시 알아야 할 레지스터 레지스터의 종류는 CPU마다 다르다. CPU마다 레지스터의 개수도 다르고 똑같은 용도인 레지스터도 CPU마다 이름이 다른 경우도 있다. 그럼에도 대부분의 CPU가 공통적으로 사용하는 레지스터들. 프로그램 카운터: 현재 CPU가 실행할 다음 명령어의 주소를 저장한다. 명령어가 실행될 때마다, 프로그램 카운터는 다음 명령어의 위치로 업데이트된다. 즉, 갖고 오고자 하는 주소를 CPU로 갖고 왔다면 프로그램 카운터는 1증가. 명령어 레지스터: CPU가 현재 실행 중인 명령어를 저장한다. 명령어가 프로그램 카운터로부터 가져와질 ..

7. ALU와 제어장치

ALU와 제어장치 CPU 내부에는 여러 가지 부품들이 있지만 크게 ALU, 제어장치 그리고 여러 개의 레지스터로 이루어져 있다. ALU는 그중에서도 계산하는 장치고, 제어 장치는 제어신호를 발생시키고 명령어를 해석하는 장치다. 앞으로 ALU가 내보내고 받아들이는 정보는 무엇인지 제어 장치가 내보내고 받아들이는 정보는 무엇인지에 대해서 알아볼 것. ALU ALU는 CPU 내부에 있는 계산을 위한 계산기 같은 회로 레지스터로부터 피연산자를, 제어 장치로부터 제어 신호를 받아들인다. → 계산에 필요한 정보들 ALU는 이렇게 받아들인 피연산자와 제어 신호를 바탕으로 연산을 수행한다. 연산의 결과값은 숫자가 될 수도 있고, 문자가 될 수도 있고, 주소가 될 수도 있다. 0과 1로 표현된 컴퓨터가 이해할 수 있는 ..

6. 명령어의 구조와 주소 지정 방식

명령어의 구조와 주소 지정 방식 명령어의 구조 ‘무엇을 대상으로, 무엇을 수행하라’ 컴퓨터 명령어는 일반적으로 두 가지 주요 구성 요소로 이루어져 있다: 연산 코드(opcode)와 오퍼랜드(operand). 연산 코드는 ‘무엇을 수행하라’를 담고 있고 오퍼랜드는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 오퍼랜드라고 한다. 특히 연산에 사용될 데이터가 저장된 위치를 훨씬 더 자주 저장한다. 이런 점에서 오퍼랜드가 담기는 그 공간 즉 오퍼랜드 필드를 주소 필드라고 부르기도 한다. 연산 코드 (Opcode): 연산 코드는 수행할 연산의 종류를 지정한다. 즉, CPU에게 무슨 일을 해야 할지를 알려주는 부분이다. 예를 들어, 덧셈, 뺄셈, 데이터 이동, 비교 또는 분기 등의 기본적인 연산..

5. 소스 코드와 명령어

소스 코드와 명령어 소스 코드와 명령어 프로그램을 개발하기 위해 작성하는 소스 코드가 어떻게 컴퓨터를 동작시키는 명령어로 변환되는지에 관한 이야기. 개발자가 작성한 소스코드를 컴퓨터는 대부분의 경우 바로 이해를 할 수 없다. Java나 python 같은 프로그래밍 언어들은 고급 언어라고 하는데. 고급 언어들은 개발자가 읽고 쓰기 편하게 만들어진 언어다. 그리고 이러한 고급 언어로 작성된 소스 코드가 컴퓨터 내부에서 실행될 때는 저급 언어로 변환되어 실행된다. 고급 언어: 개발자가 읽고 쓰기 편하게 만들어진 언어 저급 언어: 컴퓨터가 이해하고 실행하는 언어 저급 언어(기계어와 어셈블리어) 저급 언어는 성능 최적화와 하드웨어 제어가 필요한 시스템 프로그래밍, 임베디드 시스템, 드라이버 개발 등에 주로 사용된..

4. 0과 1로 문자를 표현하는 방법

0과 1로 문자를 표현하는 방법 문자 집합과 인코딩 문자 집합(character set): 컴퓨터가 이해할 수 있는 문자의 모음. 문자 집합에 속해 있지 않은 문자는 컴퓨터가 이해할 수 없다. 인코딩(encoding): 코드화하는 과정. 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정. 사람의 언어를 컴퓨터 언어로. 디코딩(decoding): 코드를 해석하는 과정. 0과 1로 표현된 문자 코드로 문자를 변환하는 과정.컴퓨터 언어를 사람의 언어로. 아스키 코드 가장 대표적이고 대중적인 문자 집합 그리고 인코딩 방법 중 하나로 초창기 문자 집합 중 하나이다. 알파벳과 아라비아 숫자, 일부 특수문자와 제어문자 7비트로 하나의 아스키 문자를 표현할 수 있다. 실제로는 아스키 코드 문자 하나를 표현하는데 8..

3. 0과 1로 숫자를 표현하는 방법

0과 1로 숫자를 표현하는 방법 컴퓨터는 기본적으로 0과 1밖에는 이해하지 못한다. 그렇다면 1보다 큰 수를 어떻게 이해할 수가 있을까에 대한 이야기. 컴퓨터가 이해하는 정보 단위 컴퓨터가 이해하는 가장 작은 정보 단위를 비트라고 한다. 즉, 0과 1을 표현할 수 있는 가장 작은 정보 단위가 비트이다. n비트로 2의 n제곱 가지의 정보 표현이 가능하다. (1비트는 두 가지, 2비트는 네 가지, 3비트는 여덟 가지 …) 컴퓨터는 기본적으로 0과 1 밖에는 이해하지 못하기 때문에 모든 수많은 비트로 이루어져 있다. 웹 브라우저, 게임 포토샵 등 프로그램도 결국 수많은 비트 수많은 0과 1로 이루어져 있다. 다만 평소 파일의 크기를 이야기할 때 ‘비트’라는 단위를 흔히 사용하지는 않고 비트보다 더 큰 단위를 ..

2. 컴퓨터 구조의 큰 그림(2)

2강. 컴퓨터 구조의 큰 그림 메모리 메모리는 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품이다. 바꿔 말하면 어떤 프로그램이 실행되기 위해서는 그 프로그램을 이루는 명령어와 데이터가 메모리 안에 있어야 한다. (나중에 운영체제에서 페이징이라고 하는 것을 배우면 굳이 실행되는 실행되는 프로그램의 모든 데이터와 명령어가 다 저장될 필요는 없겠다라는 걸 알게 될 것이지만 일단) 그렇다면 현재 실행되고 있지 않은 프로그램은? 메모리가 아니라 보조기억 장치에 저장되어 있다. 메모리에서 중요한 개념 주소. 위 그림의 한 칸 한 칸이 주소. 메모리에 저장할 수 있는 데이터와 명령어의 종류는 아주 많다. 그 많은 명령어와 데이터 중 원하는 명령어와 데이터가 지금 메모리 내에 어디에 저장되어 있는..

1. 컴퓨터 구조의 큰 그림(1)

2강. 컴퓨터 구조의 큰 그림 컴퓨터 구조 컴퓨터 구조는 크게 두 가지 컴퓨터가 이해하는 정보: 데이터와 명령어 컴퓨터의 네 가지 핵심 부품 컴퓨터가 이해하는 정보 컴퓨터가 이해하는 정보에는 크게 두 가지가 있다. 하나는 데이터 또 하나는 명령. 데이터: 데이터란 숫자 문자 이미지 동영상 같은 정적인 정보. 일상적으로 이 데이터라고 하는 용어를 사용할 때는 컴퓨터와 주고받는 정보 혹은 컴퓨터 내부에 저장된 정보를 가리켜서 그냥 편하게 데이터라고 지칭. 컴퓨터는 기본적으로 0과 1만 알기 때문에 어떻게 0과 1로 컴퓨터가 숫자를 이해하고 표현하는지 그리고 어떻게 문자를 이해하고 표현하는지 공부할 예정. 명령어: 컴퓨터는 명령어를 처리하는 기계. 그만큼 명령어라고 하는 정보는 컴퓨터를 실질적으로 움직이는 정..