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

[혼공컴운] 1주차 - CH 01~03 | 올해 시작은 혼공단과 함께

멘멘 2025. 1. 12. 23:37

 

새해를 맞이하여 전공 공부도 할겸!! 혼공단 13기에 지원하게 되었다 :D

늘 의지박약이라 작심삼일도 아닌 작심하루로 끝난 지난 날들..ㅠㅠ

어차피 나중에 배워야하는데 미리 알아두면 전공 공부가 훨씬 수월하지 않을까?

하는 마음에 억지로라도 지속하기 위해서 혼공단을 하기로 했다.

 

혼공컴운

내가 고른 책은 혼자 공부하는 컴퓨터구조 + 운영체제다.

사실 1년동안 온갖 언어를 접해서 언어는 하고 싶지 않았던 맘도 있고...

맨날 언젠가는 해야지...하고 말았던 분야가 컴구/운체/네트워크 쪽 분야여서 꼭 제대로 공부하고 싶었다.

(뭔가 코드처럼 머리 싸매는(?) 것보다 뒤에서 알게 모르게 돌아가는 분야를 배워보고 싶었다)

 

13기 커리큘럼

13기 커리큘럼은 다음과 같다.

앞으로 꾸준히 배운 내용을 정리해서 올릴 예정!!

 


CH 01 컴퓨터 구조 시작하기

컴퓨터 구조를 알아야하는 이유?

- 문제 상황을 제대로 알고 해결 가능

- 성능, 용량, 비용적 측면에서 효율 증가

 

컴퓨터 구조

컴퓨터가 이해하는 정보

데이터

: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보. (0,1로 이루어짐)

 

명령어

: 컴퓨터를 작동시키는 정보. 데이터를 이용하여 명령을 수행함.

 

컴퓨터의 핵심 부품

CPU (중앙처리장치)

: 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 부품.

- 산술논리연산장치 (ALU) : 계산

- 레지스터 : 임시저장장치

- 제어장치 : 제어신호(전기신호)를 내보내고 명령어를 해석하는 장치. (값 읽기 - 메모리 읽기 / 값 저장 - 메모리 쓰기)

 

메모리 (주기억장치)  * RAM과 ROM이 있으나 보통 RAM

: 현재 실행되는 명령어, 데이터를 저장하는 부품. 

- 메모리에 저장되어 있지 않으면 프로그램 실행 불가

- 주소(address) : 저장된 값에 빠르고 효울적으로 접근할 수있음.

 

보조기억장치

: 전원이 꺼져도 저장된 내용을 잃지 않는 저장 장치.

(ex) 하드 디스크, usb 등

 

입출력장치

: 컴퓨터 외부에 연결되어 내부와 정보를 교환하는 장치

(ex) 마이크, 스피커, 마우스, 키보드, 프린터

 

* 주변장치 : 보조기억장치 + 입출력 장치


메인보드 (마더보드)

: 컴퓨터의 핵심 부품들이 연결되는 판

버스 : 정보를 주고 받을 수 있는 통로

 

시스템버스

: 네가지 핵심 부품이 정보를 주고받는 통로

1. 주소 버스 (주소)

2. 데이터 버스 (명령어, 데이터)

3. 제어 버스 (제어신호)


CH 02 데이터

비트(bit)

: 0,1을 나타내는 가장 작은 정보 단위. n자리 수 - 2^n가지 정보 표현.

1 바이트 (byte) 8 비트
1 킬로바이트 (KB) 1000 바이트
1 메가바이트 (MB) 1000 킬로바이트
1 기가바이트 (GB) 1000 메가바이트
1 테라바이트 (TB) 1000 기가바이트

 

이진법

: 0,1만으로 모든 숫자를 표현하는 방법.

* 이진수의 경우 숫자 뒤에 아래첨자 (2) 또는 앞에 0b를 붙여서 표현

음수 표현 - 2의 보수 ( 0,1을 뒤집고 1을 더한 값)

 

십육진법

: 15가 넘어갈 때 자릿수 올림. 10~15가 A~F로 표현.

* 십육진수의 경우 숫자 뒤에 아래첨자 (16) 또는 앞에 0x를 붙여서 표현

이진법과의 변환이 용이


문자 집합

: 컴퓨터가 이해하고 표현할 수 있는 문자 모음

문자 인코딩 : 문자 -> 0,1로 변환

문자 디코딩 : 0,1 -> 문자로 변환

 

아스키 (ASCII) 코드

: 영어, 숫자, 특수 문자를 포함한 초창기 문자 집합. 각 7비트이며 128개 문자 표현. + 확장 아스키

 

완성형 인코딩 : 완성된 하나의 글자에 코드 부여 ( ex. 강)

조합형 인코딩 : 초성 하나하나에 비트열을 할당 ( ex. ㄱ+ㅏ+ㅇ)

 

EUC-KR : 한글의 대표적 완성형 인코딩 방식 -> 모든 한글을 표현할 수 없음

CP949 : EUC-KR 보다 확장되었지만 여전히 전체 표현 불가

 

유니코드

: 대부분의 글자나 문자, 특수문자, 이모티콘까지도 표현할 수 있는 문자 집합.

* 여타 문자 표현 방식과 다르게 다양한 방법으로 인코딩.

- UTF-8 : 가장 대중적인 인코딩 방식으로 문자에 부여된 값에 따라 바이트 수 결정


CH 03 명령어

저급 언어

: 컴퓨터가 실행할 수 있는 언어

 - 기계어 : 0,1의 비트로 이루어진 언어

 - 어셈블리어 : 기계어를 읽기 쉽게 바꾼 언어

 

고급 언어

: 사람이 알아보기 쉬운 프로그래밍 언어

컴파일 언어

: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행 ( ex. C )

- 컴파일 : 코드 -> 저급 언어 변환

- 컴파일러 : 컴파일을 수행

- 목적 코드 : 컴파일러를 통해 저급언어로 변환된 코드

* 링킹 : 목적 코드 -> 실행파일이 되기 위해 파일들을 연결 시켜주는 작업

인터프리터 언어

: 인터프리터에 의해 소스 코드가 한 줄씩 실행 (ex. python)

- 인터프리터 : 코드 한줄 -> 저급 언어 변환 실행

* 컴파일 언어보다 느림


 

명령어 구조

연산코드 필드 오퍼랜드 필드 (주소 필드)
연산 코드 오퍼랜드

 

연산 코드 (연산자)

: 명령어가 수행할 연산

기본적인 연산코드 유형

1. 데이터 전송

: MOVE, STORE, LOAD(FETCH), PUSH, POP

2. 산술/논리 연산

: ADD / SUBTRACT / MULTIPLY / DIVIDE , INCREMENT / DECREMENT, AND / OR / NOT, COMPARE

3. 제어 흐름 변경

: JUMP, CONDITIONAL JUMP, HALT, CALL, RETURN

4. 입출력 제어

: READ(INPUT), WRITE(OUTPUT) , START IO, TEST IO

 

오퍼랜드 (피연산자)

: 연산에 사용할 데이터 or 저장 위치

 - 오퍼랜드는 없을 수도, 여러 개일수도 있음 ( 0-주소 명령어 , .... , 3-주소 명령어)

 

주소 지정 방식

: 연산에 사용할 데이터 위치를 찾는 방법. (유효 주소를 찾는 방법)

유효 주소 : 연산의 대상이 되는 데이터가 저장된 위치

 

즉시 주소 지정 방식

: 오퍼랜드 필드에 데이터를 직접 명시

 

직접 주소 지정 방식

: 오퍼랜드 필드에 유효 주소를 직접 명시

 

간편 주소 지정 방식

: 오퍼랜드 필드에 유효 주소의 주소를 명시

 

레지스터 주소 지정 방식

: 오퍼랜드 필드에  데이터를 저장한 레지스터를 직접 명시

 

레지스터 간접 주소 지정 방식

: 데이터를 메모리에 저장, 그 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시.

 


기본 숙제

더보기

p. 51

3번. 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.

 

p. 65

3번. 1102(2)의 음수를 2의 보수 표현법으로 표현해보세요.

1101 --0과 1 뒤집기--> 0010 --1 더하기--> 0011 
답 : 0011

 

추가 숙제

더보기

스택 (Stack)

: 후입 선출(LIFO)의 데이터 관리 방식.

* PUSH - 저장, POP - 꺼내기

1 - 2 - 3 - 4 - 5  => 5 - 4 - 3 - 2 - 1

 

큐 (Queue)

: 선입 선출(FIFO)의 데이터 관리 방식

1 - 2 - 3 - 4 - 5 => 1 - 2 - 3 - 4 - 5


소감

전공 수업에서 얼핏 넘겨들었던 용어들이 나와서 이번에 개념을 좀 더 확실히 잡을 수 있던 것 같다.

대부분 낯이 익은 내용이지만 중간중간 처음보는 개념도 많아서 공부가 되었다.

이정도 페이스를 계속 유지할 수 있기를..!!🔥