본문 바로가기

개인공부/혼공학습단 13기 - 컴운

혼공학습단 13기- 1주차

 

Chapter 1 컴퓨터 구조 시작하기

- 컴퓨터 구조를 알면, 미지의 대상이 아닌 분석 대상으로 인식 변화로 문제에 대한 해결을 다양하게 찾을 수 있음

- 또한 개발한 프로그램의 성능을 고려하여 서버 구성 비용을 최소화 할 수 있음

- 컴퓨터 구조는 간략하게 2가지로 나눌 수 있음

1) 컴퓨터가 이해하는 정보
- 0과 1로만 구성된 정보만을 이해하며, 컴퓨터는 0과 1로 구성된 데이터와 명령어를 이해한다.

2) 컴퓨터를 구성하는 4가지 핵심 부품

- CPU(중앙처리장치), 메모리(주기억장치-RAM, ROM), 보조기억장치, 입출력 장치로 구성됨

- 메모리는 현재실행되는 프로그램의 명령어와 데이터를 저장하는 부품 -> 프로그램이 실행되려면 반드시 메모리에 저장
- 또한, 주소라는 개념으로 저장된 값에 빠르고 효율적으로 접근함

- CPU는 산술논리연산장치(ALU)와 레지스터, 제어장치로 구성되어, 메모리에 저장된 명령어를 읽고 해석하고 실행함

- ALU는 컴퓨터 내부에서 수행되는 대부분의 계산을 수행
- 레지스터는 CPU 내부의 작은 임시저장 장치로 프로그램을 실행하기 위한 값을 임시 저장함

- 제어장치는 제어신호를 내보내고 명령어를 해석하는 장치 : 메모리 읽기/쓰기에도 관여
- 보조기억장치는 메모리와 다르게 전원이 종료되어도 데이터가 없어지지 않는 장치 -> SSD, HDD, CD-ROM

- 입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부의 정보를 교환하는 장치

이러한 장치들은 메인보드에 연결되어 내부 연결통로인 시스템 버스를 통해 각 핵심 요소들을 연결하고, 정보를 교환함

 

Chapter 2 데이터

숫자

- 컴퓨터가 이해하는 가장 작은 정보 단위는 비트(bit)이며, 1비트는 0 또는 1로 표현할 수 있음

- n개의 비트는 2의 n승 가지의 정보를 표현 할 수 있음

- 1바이트(byte)는 8비트임

- 0과 1로 나타내기 때문에 이진법을 통해 숫자를 표현

- 이진수의 음수 표현은 2의 보수를 구하여, 이 값을 음수로 간주함

- 사전적 의미는 어떤 수를 그보다 큰 2의 n승 에서 뺀 값 이며, 쉽게 모든 0과 1을 뒤집고 거기에 1을 더한 값임

- 컴퓨터에서는 이진수만 확인하여 음수/양수 인지 판단이 안되기 때문에, 플래그를 사용하여 구분함

- 십육진법은 이진수로, 또는 이진수에서 십육진법으로 변환하기 쉬움

 

문자

- 문자 집합은 문자 인코딩을 통해 문자코드로 변환되며, 문자코드를 디코딩을 통해 문자로 변환함

- 아스키 코드는 초창기 문자 집합 중 하나로, 영어 알파벳과 숫자, 일부 특수 문자가 포함되며, 각 7비트로 표현됨

- 영어와 달리, 한글은 초성, 중성, 종성의 조합으로 이루어져있어 별도의 코드가 필요

- 모든 조합으로 구성된 글자마다 고유한 코드를 부여한 것은 완성형 인코딩 방식임

- 초성, 중성, 종성 각각에 대해 별도의 비트열을 가지는 것은 조합형 인코딩임

- EUC-KR, CP949, 유니코드로 한글 표현 가능

 

Chapter 3 명령어 (생소함)

소스코드와 명령어

- 사람을 위한 언어는 고급 언어, 컴퓨터를 위한 언어는 저급 언어 라고 지칭함

- 소스코드를 실행하려면 고급 언어에서 저급 언어로  변환이 필요로 하며, 저급 언어는 명령어로 이루어짐

- 저급 언어는 기계어와 어셈블리어로 나눌 수 있음

- 기계어는 0과 1의 명령어 비트로 이루어진 언어임

- 기계어를 읽기 편한 형태로 번역한 것을 어셈블리어라고 하며, 어셈블리어 한줄 한줄이 명령어임

- 하드웨어와 밀접하게  맞닿아 개발하는 임베디드 개발자, 게임 개발자, 정보 보안 등 개발자는 어셈블리어를 많이 사용함

- 고급 언어에서 저급 언어로의 변환은 컴파일 방식과 인터프리트 방식이 있으며, 각 방식별 컴파일 언어와 인터프리터 언어라고 함

- 컴파일 언어는 컴파일러에 의해 소스코드 전체가 저급언어로 변환되어 실행되는 고급언어임

- 저급언어로 변환되는 과정을 컴파일이라고 하며, 컴파일을 수행해주는 도구를 컴파일러라고 함

- 인터프리터 언어는 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 언어임 

- 한 줄씩 차례대로 실행되어 저급 언어로 변환하며, 이때 변환해주는 실행 도구를 인터프리터라고 함

 

명령어 구조 (생소함)

- 명령어는 연산 코드와 오퍼랜드로 구성됨

- 명령어가 수행할 연산을 연산코드, 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치를 오퍼랜드라고 함

- 연산 코드는 연산자, 오퍼랜드는 피연산자라고 부름

- 오퍼랜드 필드에는 숫자와 문자 등을 나타내는 데이터 또는 메모리나 레지스터 주소가 올 수 있음

- 연산에 사용할 데이터를 직접 명시하는 것보다는 연산에 사용할 데이터가 저장된 위치→ 메모리 주소나 레지스터 이름이 저장

- 오퍼랜드는 명령어 안에 하나도 없을 수도 있고(0-주소명령어), 여러개가 있을 수도 있음(n-주소 명령어)

- 연산코드는 데이터전송, 산술논리/연산, 제어 흐름 변경, 입출력 제어로, 4가지 코드 유형을 가짐

- 오퍼랜드 필드 안에 정보를 표현한다면 2의 N승 개밖에 (비트 수) 만 표현할 수 밖에 없음

- 이러한 이유로 해당 정보가 들어있는 메모리나 레지스터 주소를 담으면 더 많은 정보를 표현할 수 있음

- 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법을 주소 지정 방식이라고 함

   1) 즉시 주소 지정 방식은 연산에 상요할 데이터를 오퍼랜드 필드에 직접 명시하는 방식

       표현 가능한 데이터가 작지만, 데이터를 찾는 과정이 없기 때문에 빠름

   2) 직접 주소 지정 방식은 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

       유효 주소를 표현할 수 있는 범위가 연산 코드의 비트 수만큼 줄어들어 표현할 수 있는 유효 주소에 제한이 생김

   3) 간접 주소 지정 방식 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식

       직접 주소 지정 방식보다 더 많은 데이터를 표현할 수 있지만, 두번의 메모리 접근이 필요하여 느림

   4) 레지스터 주소 지정 방식은 직접 주소 지정 방식과 비슷하게 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법

       레지스터 간접 주소 지정방식은 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에
       명시하는 방법임

 

 


# 진도 기본 숙제(필수) 추가 숙제(선택)
1주차
(1/6 ~ 1/12)
Chapter 01 ~ 03 p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기 p. 100의 스택과 큐의 개념을 정리하기

 

1) 프로그램이 실행되려면 반드시 [   ] 에 저장되어 있어야 합니다.

- 메모리

 

2) 1101(2) 의 음수를 2의 보수 표현법으로 구해 보세요.

- 0011

1101 ->  0010 (0,1 반전) -> 0011 (1을 더함)

 

 

3) 스택, 큐 개념 정리하기

 

스택 - 한쪽이 막혀있는 통 안에 블록 쌓기

저장 방법(Push) : 데이터를 한쪽 끝이 막혀있는 공간에 쌓아 저장함

불러오기 방법(Pop) : 데이터를 다시 꺼낼때는 가장 최근에 저장한 데이터 순으로 빼냄

* 후입선출(LIFO, Last In First Out)

 

큐 - 양쪽이 뚫려있는 통안에 블록 넣기

저장 방법 : 데이터를 양쪽 끝이 뚫려 있는 공간에 한 방향으로 쌓아 저장함

불러오기 방법 : 데이터를 다시 꺼낼때는 가장 먼저 저장한 데이터 순으로 빼냄

*선입선출(First In First Out)

 

'개인공부 > 혼공학습단 13기 - 컴운' 카테고리의 다른 글

혼공학습단 13기- 5주차  (0) 2025.02.19
혼공학습단 13기- 4주차  (1) 2025.02.11
혼공학습단 13기- 3주차  (0) 2025.02.04
혼공학습단 13기- 2주차  (0) 2025.02.04
혼공학습단 13기 시작  (0) 2025.01.13