혼공학습단

혼공학습단 10기 - 혼공컴운 (1주차)

노루동산 2023. 7. 9. 20:54

 

1주 차 목표

# 진도 기본 미션 선택 미션
1주차
(7/3 ~ 7/9)
Chapter 01 ~ 03 p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기 p. 100의 스택과 큐의 개념을 정리하기

 

 

첫 주라 개념이 쉬운 대신에 페이지 수가 상당했다.

다른 사람들처럼 전부 예쁘게 정리하려 하였으나...

 

 

1장

 

 

1장 정리 겨우 해놓고 깜냥이 안 되는 것을 느끼고

미션이나 꾸준히 하자는 생각이 들더라 ㅋㅋㅋ

 

마저 정리할 용기가 생긴다면 다시 시도해 보겠다.

 

 

 

기본 미션

 

p.51 확인 문제 3번

Q. 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.

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

 

A. 메모리

 

 

p.65 확인 문제 3번

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

[1] [1] [0] [1]

[  ] [  ] [  ] [  ]

[  ] [  ] [  ] [  ]

"1101⑵을 음수로 표현한 값은               입니다.

 

A. 0011

 

 

선택 미션

 

p. 100의 스택과 큐의 개념을 정리하기

스택 Stack

후입선출 / Last In First Out / LIFO

먼저 들어간 데이터가 제일 늦게 나온다. ex) 하노이 탑, DFS

 

데이터가 들어오는 순서

5 4 3 2 1

 

데이터가 나오는 순서

1 2 3 4 5

 

-> 스택에 새 데이터를 저장하는 명령어는 Push, 꺼내는 명령어는 Pop이다.

 

큐 Queue

선입선출 / First In First Out / FIFO

먼저 들어간 데이터가 제일 빨리 나온다. ex) BFS

 

데이터가 들어오는 순서

5 4 3 2 1

 

데이터가 나오는 순서

5 4 3 2 1

 

 

 

메모

더보기

02 - 1: 0과 1로 숫자를 표현하는 방법

1. KB, MB 등 단위는 이전 단위를 1000개 묶어 표현한 단위로, 1024개 묶어 표현한 단위는 KIB, MIB 등 따로 존재.

2. 워드(word): CPU가 한 번에 처리할 수 있는 데이터 크기.

3. 음수, 양수를 구분하기 위해 플래그(flag)라는 정보가 같이 저장됨. 그런데, 정수형 자료형에서 부호 구분을 위해 맨 앞에 0 또는 1이 오는 것으로 알고 있는데 이와는 다른 것인가?

 

02 - 2: 0과 1로 문자를 표현하는 방법

1. EUC-KR: KS X 1001, KS X 1003 문자 집합 기반인 완성형 한글 인코딩 방식. 표현 가능한 문자가 적고 다른 언어에 다른 인코딩 방식을 적용해야 한다는 번거로움 존재.

2. 유니코드: 모든 언어와 이모티콘 등 모든 문자를 포함하는 통일된 문자 집합. 인코딩 방식으로는 UTF-8, UTF-16, UTF-32 등이 있음. 코드 포인터를 인코딩 된 값으로 삼지 않고, 인코딩 방식에 따라 다른 변환 사용.

3. 완성형 인코딩보다 조합형 인코딩이 훨씬 효율적일 것 같은데 왜 모두 완성형 인코딩인 것인가?

 

03 - 1: 소스 코드와 명령어

1. 컴파일(compile) 언어 컴파일러(compiler) 전체 코드를 이상이 없는지 훑어보며 저급 언어로 컴파일함. 이렇게 저급 언어로 변환된 코드를 목적 코드(object code)라고 함. 인터프리터 언어는 인터프리터(interpreter)에 의해 한 줄씩 변환.

 

03 - 1 추가 강의: C언어의 컴파일 과정

1. 소스코드 -> 전처리기(preprocessor) -> 컴파일러(compiler) -> 어셈블러(assembler) -> 링커(linker) -> 실행 파일

  - 전처리(preprocessing): 컴파일하기 전에 처리할 과정. 매크로 변환, include 한 소스 코드 가져오는 등.

  - 컴파일(compile):  저급 언어(어셈블리어)로 변환.

  - 어셈블(assembling): 어셈블리어를 기계어로 변환. 이 과정에서 목적 코드가 됨.

  - 링킹(linking): 각기 다른 목적 코드를 하나의 실행파일로 연결.

 

03 - 2: 명령어의 구조

1. 명령어는 연산 코드(operation code) 오퍼랜드(operand)로 이루어짐.

2. 오퍼랜드는 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치를 의미하며, 주로 후자의 값이 더 많이 담기기 때문에 주소 필드라고 부르기도 함. 오퍼랜드는 0부터 n까지 여러 개 가질 수 있음.

3. 연산 코드 유형은 크게 네 가지로 나눌 수 있음.

  - 데이터 전송

  - 산술/논리 연산

  - 제어 흐름 변경

  - 입출력 제어

4. 주소 지정 방식(addressing mode): 유효 주소(effective addess, 연산에 사용할 데이터가 저장된 위치)를 찾는 방법

  - 즉시 주소 지정 방식(immediate addressing mode): 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시 (2번의 전자)

데이터의 크기가 제한되나 주소를 찾는 과정이 없기 때문에 빠름

  - 직접 주소 지정 방식(direct addressing mode): 오퍼랜드 필드에 유효 주소를 직접 명시. 즉시 주소 지정 방식보다는 나아졌으나, 여전히 연산 코드의 길이만큼 오퍼랜드 필드의 길이가 짧아져있음.

  - 간접 주소 지정 방식(indirect addressing mode): 오퍼랜드 필드에 유효 주소의 주소를 명시. 표현 가능한 범위는 넓어졌으나 메모리 접근 과정이 길어져 느림.

  - 레지스터 직접 주소 지정 방식(register addressing mode): 데이터를 레지스터에 저장(유효 주소) -> 레지스터를 오퍼랜드 필드에 명시. 레지스터는 CPU 내부에 있기 때문에 메모리에 접근하는 것보다 빠름.

  - 레지스터 간접 주소 지정 방식(register indirect addressing mode): 데이터를 메모리에 저장(유효 주소) -> 유효 주소의 주소를 레지스터에 저장 -> 레지스터를 오퍼랜드 필드에 명시. 

 

 

강의

https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl 

 

[컴퓨터 공학 기초 강의] 혼자 공부하는 컴퓨터 구조+운영체제

강민철 저자님과 함께하는 『혼자 공부하는 컴퓨터 구조+운영체제』 강의입니다. 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 만나보세요! 👨‍🏫 누구를 위한 강의인가요? -

www.youtube.com

 

혼공

https://hongong.hanbit.co.kr/

 

[한빛미디어] 혼자 공부하는 시리즈: C, Java, Python...

프로그래밍 입문서 시장 베스트셀러 시리즈! 1:1 과외하듯 배우는 프로그래밍 언어 자습서! '무엇을', '어떻게' 학습해야 할지조차 모르는 입문자의 막연한 마음을 살펴, 친절하고 핵심적인 내용

hongong.hanbit.co.kr

 

혼공컴운 도서 구매하기

https://www.hanbit.co.kr/store/books/look.php?p_code=B9177037040&utm_source=hongong 

 

혼자 공부하는 컴퓨터 구조+운영체제

어려운 컴퓨터 구조와 운영체제의 원리를 누구나 쉽게 이해할 수 있도록 용어와 개념은 한 번 더 풀어쓰고, 적절한 예시와 이해하기 쉬운 그림으로 재미있게 구성했다. 또한 일상 소재를 활용한

www.hanbit.co.kr