[혼공학습단 9기] 혼공컴운: 1주차

오늘은·2023년 1월 4일
1

혼공학습단

목록 보기
3/14

1주차 - Chapter 01 ~ 03
기본미션: p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기
선택미션: p. 100의 스택과 큐의 개념을 정리하기

기본미션

선택미션


컴퓨터 구조

컴퓨터 구조를 이해한다? 문제 해결 능력 향상, 개발시 성능/용량/비용 관점도 고려하여 개발 가능

컴퓨터 구조

  • 컴퓨터가 이해하는 정보 (데이터, 명령어)
  • 컴퓨터의 핵심 부품 (CPU, 메모리, 보조기억장치, 입출력장치)

데이터 - 컴퓨터와 주고 받는 정적인 정보
명령어 - 데이터를 사용하여 컴퓨터를 작동시키는 정보

CPU: 메모리에 저장된 명령어 읽기, 해석, 실행의 과정을 수행
ALU(산술논리 연산자): 계산 부품. 컴퓨터에서 수행되는 계산을 담당
레지스터: 임시저장장치. 필요한 값을 임시저장
제어장치: 제어 신호를 발생하며, 명령어를 해석

제어신호
컴퓨터 부품을 관리. 작동하기 위한 일종의 전기신호 (메모리 읽기, 메모리 쓰기 신호가 있음)

메모리: 현재 실행되는 프로그램의 명령어, 데이터 저장소 (메모리에 저장되어야 실행 가능)
주소: 저장된 값에 빠르게 접근하기 위해 사용되는 개념

보조기억장치: 메모리보다 크기가 크며 전원이 꺼져도 값을 잃지 않는 장치 (HDD, SSD, USB, DVD, CD 등)

입출력장치: 컴퓨터 외부에 연결되어 데이터를 주고 받는 장치

메인보드: 컴퓨터의 핵심 부품을 연결하는 판. 슬롯과 연결 단자로 부품을 부착할 수 있다.
버스: 메인보드 내부의 통로 역할을 하며, 서로 정보를 주고 받을 수 있다.
핵심 부품을 연결하는 중요 버스를 시스템 버스라고 말함
주소 버스: 주소를 주고 받음
데이터 버스: 명령어와 데이터를 주고 받음
제어 버스: 제어 신호를 주고 받음


데이터

비트(bit): 0과 1로 나타내는 가장 정보 단위 2n2^n 가지 정보를 표현할 수 있다.
바이트(byte): 비트를 8개 모아 1바이트로 표현 가능 28=2562^8=256개의 정보 표현 가능
1킬로바이트(1kB) = 1바이트 1000개
1메가바이트(1MB) = 1kB 1000개
1기가바이트(1GB) = 1MB 1000개
1테라바이트(1TB) = 1GB 1000개

2의 10승은 1024인데 1000개인 이유
➡ 단위가 다름 kB, MB, GB... 가 아닌 KiB, MiB, GiB 이다

이진법: 0과 1로 숫자를 표현하는 방법.
십진법: 0에서 9까지 이용하여 숫자로 표현하는 방법.

이진법 표기시 100021000_{2} 혹은 ob1000ob1000 형식으로 표현

이진법 음수표기
0과 1을 뒤집은 뒤 1을 더한 값 ➡ 2의 보수
➡ 음수 양수 파악하는 방법: 플래그 사용

2의 보수 표현 한계점
0을 음수로 표현하거나 232^3 을 음수로 표현시 이전과 같은 값을 반환한다. n비트는 2n-2^n, 2n2^n를 동시에 표현할 수 없다.

십육진법: 0~F를 이용하여 값을 표현.
이진법으로 표현시 많은 자리수를 필요로 하기 때문에 사용하기도 한다. 00(16)00_{(16)} 혹은 0x00 형식으로 사용한다.

16진수 ➡ 2진수
한글자당 4비트를 차지하기 때문에 각 글자를 해석하여 붙이면 된다.

문자 집합: 컴퓨터 인식하고 표현할 수 있는 문자의 모음집. 문자 집합에 속하지 않을 경우 문자를 이해할 수 없다.
문자 인코딩: 문자를 0과 1로 변환하는 과정. 인코딩 후의 결과 값이 문자코드가 된다.
문자 디코딩: 0과 1로 이뤄진 문자 코드를 사람이 이해할 수 있도록 변환하는 과정

아스키코드 (ASCII): 영어 알파벳, 아라비아 숫자, 일부 특수문자(+제어문자)를 포함한 문자 집합 7비트(= 128개) 표현 가능
확장 아스키코드: 다양한 문자 표현을 위해 1비트를 추가하여 표현

EUC_KR: 한글 인코딩을 위해 개발 (완성형, 조합형으로 구분)
완성형: 완성된 글자마다 코드를 부여
조합형: 초성, 중성, 종성 각각에 비트를 할당 조합형을 합쳐 글자를 완성.
2350 여개의 글자를 표현할 수 있으나 문자 집합에 정의되지 않은 글자는 표현할 수 없음.
CP949: MS사에서 해결을 위해 등장한 EUC_KR의 확장버전. 한글 전체를 표현하기엔 부족한 양

유니코드: 한글을 포함한 대부분 국가의 문자, 특수문자, 이모티콘을 코드로 표현할 수 있다.
현대 문자 표현시 가장 많이 사용하는 표준방식

UTF-8: 뒷부분 숫자에 따라 인코딩하는 방식이 다르다. (UTF-8, UTF-16, UTF-32)
1~4바이트 까지의 결과를 보여줌


명령어

고급언어: 사람이 작성하고 이해하기 쉬운 언어
저급언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어
기계어: 0과 1로 이루어진 명령어.
어셈블리어: 기계어를 읽기 편하게 번역된 언어

고급 언어가 저급언어로 가게 되는 과정
컴파일 언어: 컴파일러에 의해 소스코드 전체가 컴파일(변환) 과정을 거친다. 전체를 확인하며 오류 검출, 실행 가능 여부, 불필요한 코드 검사 과정을 거친다.

  • 오류 발생시 컴파일에 실패
  • 성공시 저급 언어로 변환된다 (변환 코드는 목적 코드 라고 불림)

인터프리터 언어: 인터프리터에 의해 한줄씩 코드가 실행됨. 변환에 시간이 소요되지 않으며, 오류 발생시 발생이전까지 코드는 실행이 된다.

명령어: 연산 코드와 오퍼랜드로 구성된다.
연산 코드(연산자): 명령어가 수행할 연산
데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어 4가지 기본적인 유형이 있다.

오퍼 랜드(피연산자): 연산에 사용할 데이터 저장 위치. 메모리 주소나 레지스터 이름을 작성하며 0개, 1개, 2개 이상 모든 경우가 존재
0-주소 명령어 1-주소 명령어 등으로 표현

주소 지정 방식: 오퍼랜드 필드에 데이터가 저장된 위치를 찾는 방식. (=유효 주소 찾는 법)
유효 주소: 연산의 대상이 되는 데이터가 저장된 위치

즉시 주소 지정 방식: 연산에 사용될 데이터를 오퍼랜드 필드에 직접 명시하는 방식.

  • 가장 간단한 방식.
  • 데이터 크기가 작아짐
  • 메모리나 레지스터에서 찾는 과정 생략 (빠름)

직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접 명시하는 방식

  • 표현 가능 데이터 크기는 즉시 주소 지정보다 커졌으나 범위는 연산 코드 비트수만큼 줄어듬
  • 유효 주소에 제한이 생길 수 있음.

간접 주소 지정 방식: 유효 주소의 주소를 오퍼랜드에 명시

  • 직접 주소 지정 방식보다 표현 가능 유효 주소범위가 넓어짐
  • 메모리에 두번 접근이 필요함 (느림)
  • 연산에 사용할 데이터가 레지스터에 저장될 수 있음
    (➡ 레지스터 주소 지정 방식, 레지스터 간접 주소 지정 방식 사용 가능)

레지스터 주소 지정 방식: CPU 내부에 있는 레지스터에 접근

  • 직접 주소 지정방식보다 빠르게 데이터 접근 가능
  • 표현 가능 레지스터 크기에 제한 발생 우려

레지스터 간접 주소 지정 방식: 연산에 사용할 데이터 메모리에 저장. 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

  • 메모리에 접근하는 횟수 1회
    간접 주소 지정 방식보다 빠름

정리
즉시 주소 지정 방식: 연산에 사용할 데이터 원본
직접 주소 지정 방식: 유효 주소 (메모리 주소)
간접 주소 지정 방식: 유효 주소의 주소
레지스터 주소 지정 방식: 유효 주소 (레지스터 명)
레지스터 간접 주소 지정 방식: 유효 주소 저장 레지스터

profile
게으르지만 기록은 하고싶어!

0개의 댓글