반응형
컴퓨터의 정보단위
- 비트(bit) : 0 또는 1로 표현되는 가장 작은 정보 단위
- 바이트(byte) : 8개의 bit를 묶은 정보 단위 -> 2^8(=256)개의 정보 표현 가능
- 킬로바이트(kB) : 1byte x 1000개 = 1000byte
- 메가바이트(MB) : 1kB x 1000개 = 1000kB
- 기가바이트(GB) : 1MB x 1000개 = 1000MB
- 테라바이트(TB) : 1GB x 1000개 = 1000GB
- 워드(word) : CPU가 한 번에 처리할 수 있는 데이터 크기
-> half word, full word, double word
-> 인텔 x86 CPU는 32비트 word, 인텔 x64 CPU는 64비트 word
이진법
- 1을 넘어가는 시점에서 자리 올림을 하여 0과 1만으로 수를 표현하는 방법
- 음수는 2의 보수(two's complement)로 표현
-> 어떤 수를 그보다 큰 2^n에서 뺸 값
-> 모든 0과 1을 뒤집고, 거기에 1을 더한 값 - 양수, 음수 구분을 위해 플래그(flag) 사용
- 한계 : 0이나 2^n 형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없음
십육진법
- 수가 15를 넘어가는 시점에 자리 올림을 하는 숫자 표현 방법
- 이진법만을 이용해 수를 표기 시 숫자의 길어기 너무 길어진다는 단점을 보완하기 위해 사용 -> 또한 서로 변환이 용이
- 0~9, A~F의 16문자 사용
- 16진수 -> 2진수 : 16진수의 각 글자를 4비트의 2진수로 간주해 변환 후 붙임
- 2진수 -> 16진수 : 4개씩 끊고, 끊어 준 4개의 숫자를 하나의 16진수로 변환 후 붙임
용어정리 part1
- 문자 집합(character set) : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
- 문자 인코딩(character encoding) : 문자를 0과 1로 변환하는 과정
- 문자 디코딩(character decoding) : 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정
아스키코드(ASCII)
- 초창기 문자 집합 중 하나
- 영어 알파벳과 아라비아 숫자, 일부 특수문자 포함
- 각 문자는 1비트의 패리티비트(parity bit)와 7비트로 표현해 표현 가능한 정보의 가짓수는 2^7개로, 총 128개 문자 표현 가능
- 패리티비트는 오류 검출을 위해 사용되는 비트로 실질적 문자 표현에 사용되지 않음
- 128개 이외 다른 문자 표현 불가
- 한국을 포함한 비영어권 국가들은 자신만의 고유한 문자 집합과 인코딩 방식 개발 -> 한국은 EUC-KR
EUC-KR
- 완성형 인코딩 : 초성, 중성, 종성 조합의 완성된 하나의 글자에 고유한 코드를 부여
- 조합형 인코딩 : 초성, 중성, 종성 각각을 위한 비트열 할당
- EUC-KR은 완성형 인코딩 방식으로 각 단어에 2바이트 크기 코드 부여(=16비트=4자리 16진수 표현)
유니코드
- EUC-KR보다 훨씬 다양한 한글 및 대부분 나라의 문자, 특수문자, 화살표나 이모티콘 코드 표현 가능
- 다양한 인코딩 방법 존재 -> utf-8, utf-16, utf-32
- utf-8이 가장 대중적 -> 유니코드 문자에 부여된 값의 범위에 따라 1~4바이트 중 표현
용어정리 part2
- 고급언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어 -> c, c++, java, python
- 저급언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어 -> 기계어, 어셈블리어
- 기계어 : 0과 1의 명령어 비트로 이루어진 언어
- 어셈블리어 : 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급언어
- 컴파일 : 소스 코드 전체가 컴파일러에 의해 저급언어로 변환 -> 컴파일 중 오류가 발생하면 소스 코드 전체 실행 불가
- 인터프리트 : 소스 코드를 한줄씩 차례로 저급언어로 변환 -> 인터프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행
* 일반적으로 인터프리터 언어는 컴파일 언어보다 느림 - 목적파일 : 소스코드를 컴파일한 목적코드로 이루어진 파일
- 실행파일 : 목적 파일에 링킹 작업을 수행한 파일 -> 라이브러리 참조 등
연산코드(operation)와 오퍼랜드(operand)
- 명령어 = 연산코드 + 오퍼랜드
- 연산코드(연산자) : 명령어가 수행할 연산
-> 데이터 전송 : MOVE, STORE, LOAD, PUSH, POP
-> 산술/논리 연산 : ADD/SUBTRACT/MULTIPLY/DIVIDE, INCREMENT/DECREMENT, AND/OR/NOT, COMPARE
-> 제어 흐름 변경 : JUMP, CONDITION JUMP, HALT, CALL, RETURN
-> 입출력 제어 : READ, WRITE, START IO, TEST IO - 오퍼랜드(피연산자) : 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치
-> 데이터를 직접 명시하기보다 연산에 사용할 데이터가 저장된 위치, 즉 메모리 주소나 레지스터 이름을 주로 표기
-> 오퍼랜드 개수에 따라 0-주소 명령어, 1-주소 명령어, 2-주소 명령어, 3-주소 명령어
주소 지정 방식
- 유효 주소(effective address) : 연산 코드에 사용할 데이터가 저장된 위치, 즉 연산의 대상이 되는 데이터가 저장된 위치
- 주소 지정 방식 : 연산에 사용할 데이터 위치를 찾는 방법
- 즉시 주소 지정 방식(immediate addressing mode) : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시 -> 표현 가능한 데이터의 크기가 작지만, 가장 속다가 빠름
- 직접 주소 지정 방식(direct addressing mode) : 유효 주소를 오퍼랜드 필드에 직접 명시 -> 오퍼레이션 필드가 연산 코드 길이만큼 짧아져 표현 가능한 유효 주소에 제한
- 간접 주소 지정 방식(indirect addressing mode) : 유효 주소의 주소를 오퍼랜드 필드에 명시 -> 표현 가능한 유효 주소의 범위가 넓어졌지만 두 번의 메모리 접근으로 속다가 느림
- 레지스터 주소 지정 방식(register addressing mode) : 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드에 직접 명시 -> 직접 주소 지정 방식과 유사하나 레지스터이기 때문에 속도가 더 빠름
- 레지스터 간접 주소 지정 방식(register indirect addressing mode) : 연산에 사용할 데이터를 메모리에 저장하고, 그 주소(유효 주소)를 저장한 레지스터를 오퍼랜드 필드에 명시 -> 간접 주소 지정 방식과 유사하나 메모리 접근 횟수가 한 번 줄어 속도가 더 빠름
스택과 큐
- 스택 : 한쪽 끝이 막혀 있어 막혀있지 않은 쪽으로 데이터를 차례로 저장하고, 저장한 자료를 빼낼 때는 마지막으로 저장한 데이터부터 뺌 -> '나중에 저장한 데이터를 가장 먼저 빼내는 데이터 관리 방식(후입선출, LIFO)'
- 큐 : 한쪽으로는 데이터를 저장하고, 다른 한쪽으로는 먼저 저장한 순서대로 데이터를 빼냄 -> '가장 먼저 저장된 데이터부터 빼내는 데이터 관리 방식(선입선출), FIFO'
반응형
'STUDY > 컴퓨터구조&운영체제' 카테고리의 다른 글
Week04(메모리와 캐시메모리&보조기억장치) (0) | 2023.06.12 |
---|---|
Week03(CPU의 작동원리&CPU의 성능향상기법) (0) | 2023.04.13 |
Week01(컴퓨터의 핵심부품) (0) | 2023.03.22 |