CPU와 장치 컨트롤러가 정보를 주고 받는 방법은 크게 3가지가 있다. 1. 프로그램 입출력 프로그램 속 명령어를 통해 입출력 장치를 제어하는 방법 CPU가 장치 컨트롤러의 레지스터 값을 읽고 쓰면서 입출력이 이루어진다. 프로그램을 실행하다 입출력 명령어를 만나면 CPU는 입출력 장치와 연결된 장치 컨트롤러와 상호작용하여 입출력 작업을 수행한다. 메모리 정보를 하드 디스크에 저장(백업)하기 1) CPU가 하드 디스크 장치 컨트롤러(의 제어 레지스터)에 쓰기 명령을 보낸다. 2) 장치 컨트롤러는 하드 디스크의 상태를 확인하여 상태 레지스터에 준비된 상태임을 표시한다. 3) CPU가 주기적으로 상태 레지스터를 확인하다가 장치가 준비된 상태가 되면, 저장할 데이터를 데이터 레지스터에 쓴다. 입출력 장치의 종류..
입출력 장치 컴퓨터와 연결되어 컴퓨터 외부에서 내부와 데이터를 주고 받을 수 있는 장치 모니터, 스피커, 키보드, 마우스, 헤드셋, 프린터 등 입출력장치의 종류는 다양하고 장치마다 속도, 데이터 전송 형식 또한 다르다. 이렇게 다양한 입출력장치들과 정보를 주고 받는 형식을 규격화 하기가 어렵다. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. * 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 1. 장치 컨트롤러 위와 같은 이유들로 인해 입출력장치는 장치 컨트롤러를 통해 컴퓨터 내부와 연결되어 정보를 주고 받는다. 우리는 이를 입출력 제어기(I/O controller, I/O module)이라고도 한다. 1) 장치 컨트롤러의 역할 CPU와 입출력장..
1. CPU란 CPU(central processing unit) : 중앙 처리 장치 메모리에 저장된 명령어를 읽어 해석하고 실행하는 장치 2. CPU의 구성요소 ALU(Arithmetic Logic Unit) : 계산(연산)을 수행하는 장치 제어장치 : 제어 신호를 발생시키고, 명령어를 해석하는 장치 레지스터 : 임시 저장 장치 3. CPU의 작동 원리 1) ALU ALU의 Input 레지스터로부터 피연산자를 받는다. 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받는다. ➡️ 받은 피연산자와 제어 신호를 가지고 산술, 논리 연산 등 다양한 연산 작업을 수행한다. ALU의 Output 연산을 수행한 결과(문자, 숫자, 혹은 메모리 주소)를 레지스터에 임시로 저장한다. 플래그 레지스터에 플래그를 보낸..
1. 고급언어 개발자가 이해하기 쉽게 만든 언어 고급언어가 저급언어로 변환되는 방식에 따라 아래와 같이 2가지로 나뉜다. 1) 컴파일 언어 개발자가 작성한 소스 코드를 컴파일러를 통해 컴파일하여 저급언어(목적 코드)로 변환하는 언어 컴파일 : 컴파일 언어로 작성된 소스 코드를 컴파일러에 의해 저급 언어로 변환되는 과정 목적 코드 : 컴파일의 결과로 생성된 저급 언어 2) 인터프리터 언어 인터프리터에 의해 한 줄 씩 실행되는 언어 소스 전체가 저급 언어로 변환될 때까지 기다리지 않아도 된다. 컴파일 에러가 발생하면 소스 코드 전체가 실행되지 않는 컴파일 언어와는 달리, 인터프리터 언어는 오류 발생 전까지의 코드는 실행 된다. 2. 저급언어 컴퓨터가 이해하고 실행하는 언어 1) 기계어 이진수(0과 1)로 이..
문자 집합(character set) 컴퓨터가 이해할 수 있는 문자의 모음 1)아스키코드(2^7 = 128개) 알파벳, 아라비아 숫자, 일부 특수문자, 제어문자를 표현하고 있는 문자 집합 7비트로 하나의 문자를 표현한다.(실제로는 8비트, 1비트는 오류 검출을 위한 parity bit) 인코딩이 매우 간단하지만, 한글을 포함한 다른 언어를 표현할 수 없다. a) 인코딩(encoding) 컴퓨터가 이해할 수 있는 언어(이진수)로 코드화 하는 과정 HI ➡️ 0x48, 0x49 b) 디코딩(decoding) 컴퓨터의 언어를 사람이 이해할 수 있는 언어로 코드를 해석하는 과정 0x48, 0x49 ➡️ HI 2) 한글 인코딩 한글은 초정, 중성, 종성의 조합으로 만들어지는 글자이므로 완성형 인코딩과 조합형 인코..
컴퓨터는 0과 1로 숫자를 표현하고 이해한다. ➡️ 우리는 이를 이진법이라고 한다. 1. 이진법(binary)이란 0과 1로 수를 표현하는 방법을 말한다.(숫자가 1을 넘어가면 자리를 올린다.) 우리가 일상 생활에서 사용하는 진법은? 10진법(decimal, 숫자가 9를 넘어갈 때 자리를 올리는 방법) 코드로 표기할 때 : 0b1011라고 표기한다. 이진수 : 1, 10, 11, 100, 101, 110, 111, 1000 십진수 : 1, 2, 3, 4, 5, 6, 7, 8 2. 그렇다면 이진수의 음수는 어떻게 표현할까?? ➡️ 2의 보수 2의 보수란, 모든 0과 1을 뒤집고 1을 더한 값 1) 이진수 1011의 음수 구하기 모든 0과 1을 뒤집은 후, 1을 더한다. 1011을 예로 들었을 때, 0과 1..