Computer Science

    [CS : 컴퓨터 구조] 명령어 사이클과 인터럽트

    T1) 명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 한다. 인출 사이클 : 실행할 내용을 가장 먼저 CPU로 갖고와야한다 실행 사이클 : 갖고 온 내용을 바탕으로 실행한다. 간접 사이클 : 간접 주소 지정 방식 같이 메모리 접근이 더 필요한 경우 발생하는 사이클이다. ※ 어떤 명령어는 인출과 실행 사이클 만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다. T2 ) 인터럽트 인터럽트(interrupt) ; 방해하다, 중단시키다. CPU가 정해진 흐름대로 프로그램을 처리하고 있는 과정 중 흐름을 끊어버리는 것이 인터럽트이다. CPU가 꼭 주목해야할 때 혹은 CPU가 얼른 처리해야할 다른 작업이 생겼을 때 발생한다. T2_sub..

    [CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터

    T1 ) 레지스터란? CPU 내부의 작은 임시 저장 장치이다. 프로그램 속 명령어와 데이터는 실행 전·후로 레지스터에 저장된다. CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다. T2) 레지스터의 종류 ( CPU마다 종류가 다름 ) 프로그램 카운터(Instruction Pointerl; 명령어 포인터) 메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 ) 명령어 레지스터 해석할 명령어( 방금 메모리에서 읽어들인 명령어 ) → 제어장치가 해석함 메모리 주소 레지스터 메모리의 주소( CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 ) 메모리 버퍼 레지스터 메모리와 주고 받을 값( 데이터와 명령어 ) → CPU가 데이터 버스로 정보를 주고 받을 때 ..

    [CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치

    T1) ALU T1_Sub1) ALU는 무엇을 받아들이는가? 계산을 수행하는 장치이기 때문에 계산을 하기 위한 피연산자와 수행할 연산이 필요하다. 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들인다. 연산 수행 후 결과값을 레지스터에 담는다. (메모리 접근 속도보다는 레지스터 접근속도가 빠르기때문) 결과값( 주소, 숫자, 문자 등등 다양하다. )은 ALU가 내보내는 정보 중 하나이다. 플래그 : 연산 결과에 대한 부가 정보(음수, 양수, 0인지 아닌지 등등) 연산 결과가( 결과를 담을 레지스터에 비해 ) 너무 크다 ! 라는 정보도 담긴다.(overflow) T2) 제어장치 T2_Sub1) 제어장치가 받아들이는 정보 1) 클럭 클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있..

    [CS : 컴퓨터 구조] C 언어의 컴파일 과정

    1) 전처리기(preprocessor) ( test.c → test.i ) 전처리(preprocess)과정을 실행 전처리 과정 (preprocessing) 본격적으로 컴파일하기 전에 처리할 작업들 외부에 선언된 다양한 소스코드, 라이브러리 포함(e.g. #include) 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define) 컴파일할 영역 명시(e.g. #if, #ifdef, ···) 2) 컴파일러(compiler) ( test.i → test.s ) 컴파일(compile)과정을 실행 컴파일 과정(compiling) 전처리가 완료 되어도 여전히 소스코드이다. 전처리 완료된 소스코드를 저급 언어(어셈블리 언어)로 변환 3) 어셈블러(asembler) ( test.s → test.o ) 어셈블..

    [CS : 컴퓨터 구조] 03-2 명령어의 구조

    T) 명령어의 구조 T1) 명령어란? ' 무엇을 대상으로 무엇을 수행하라'라는 것 ex) "철수야 미역국 좀 끓여라" 더해라 100과 120을 뺴라 메모리 32번지 안의 값과 메모리 33번지 안의 값을 저장해라 10을 메모리 128번지에 수행할 연산 연산에 사용될 데이터 혹은 주소필드( 연산에 사용될 데이터가 저장된 위치 ) T2) 명령어의 구성 저장해라 10을 메모리 128번지에 A) 연산코드 B) 오퍼랜드 B) 오퍼랜드 오퍼랜드에는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(주소필드)가 들어있다. 경우에 따라 없는 경우 여러개가 들어있는 경우가 있을 수 있다. A) 연산코드 (연산코드의 종류와 생김새는 CPU마다 다르다) 종류 : ① 데이터전송 ② 산술 / 논리 연산 ③ 제어 흐름..

    [CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어

    고급언어 : 개발자가 이해하기 쉽게 만든 언어 저급언어 : 컴퓨터가 이해하고 실행하는 언어 저급언어 기계어 · 0과 1로 이루어진 명령어로 구성된 저급언어 · 16진수로 표현된 기계어 어셈블리어 · 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급언어 ※ 개발자가 작성한 코드를 컴퓨터가 바로 읽거나 쓰기를 할 수 없는 것은 고급언어이기 때문이다. 그렇기때문에 저급언어로 변환해주어야한다. (고급언어) 컴파일 언어와 인터프리트 언어 A) 컴파일 언어 컴파일 언어로 작성된 소스코드는 컴파일러에 의해 저급언어로 변환되고(변환하는 과정을 컴파일이라고한다.) 컴파일 결과로 저급언어인 목적코드가 생성된다. 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않는다. B) 인터프리터 언어 인터프리..

    [CS : 컴퓨터 구조] 데이터 : 02-2 0과 1로 문자를 표현하는 방법

    A) 문자 집합과 B) 인코딩 문자 집합(character set) : 컴퓨터가 이해 할 수 있는 문자의 모음 인코딩(encoding) : 코드화하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 디코딩(decoding) : 코드를 해석하는 과정, 0과 1로 표현된 문자 코드로 문자로 변환하는 과정 A) 문자집합 : 아스키 코드 초창기 문자 집합 중 하나로써 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어문자 7비트로 하나의 문자 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리트 비트(parity bit) → (표현할 수 있는 문자의 개수는 2의7승 = 128개) c.f.) 코드 포인트(code point) == 문자에 부여된 값, A == 65, a == 97 간단한 인코딩이라..

    [CS : 컴퓨터 구조] 데이터 : 02-1 0과 1로 숫자를 표현하는 방법

    02-1 0과 1로 숫자를 표현하는 방법 1) 정보단위 비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위 ex) 전구 : 켜짐 · 꺼짐 n비트로 2ⁿ가지의 저옵 표현 가능 프로그램은 수많은 비트로 이루어져 있다. 다만 표현 시 비트보다 더 큰 다위를 사용한다.(ex 바이트, 메가바이트, 기가바이트, 테라바이트 ···) 더보기 1바이트(1byte) : 8비트(8bit) 1킬로바이트(1KB) : 1,000 바이트(1,000 byte) 1메가 바이트(1MB) : 1,000 킬로바이트(1,000 KB) 1기가 바이트(1GB) : 1,000 메가바이트(1,000 MB) 1테라 바이트(1TB) : 1,000 기가바이트(1,000 GB) c.f) 이전 단위를 1024개씩 묶는 건 KiB, MiB, GiB ·..