본문 바로가기
TIL (Today I Learned)/컴퓨터 시스템(CS)

[CS] C언어 학습 사전 지식, 컴퓨터 시스템(CS)의 이해

by 둥굴프 2022. 11. 30.
이 문서는 홍정모님의 "따라하며 배우는 C언어" 강의를 참고하여 작성했습니다.

 

C언어를 배우기 위해서는 컴퓨터 시스템에 대한 사전지식이 필요하다.

현재(22.11.30) 홍정모님의 유튜브에는 따라하며 배우는 C언어의 0챕터와 1챕터가 무료로 올라와있다.

컴퓨터 시스템에 대한 사전지식이 없는 비전공자일 경우 해당 영상으로도 충분한 도움이 될 것으로 생각한다.

 

 

#1 컴퓨터의 구성

 

하드웨어 : 손으로 만질수 있는 모든 부분. (육체)

소프트웨어 : 순수한 정보. (정신)

 

 

1. 컴퓨터의 구성 요소들

 

메인보드 > 중앙 처리장치, 주 기억장치, 보조 기억장치, 전원 공급장치, 입출력 장치, 그래픽스 카드, 디스플레이

 

#2 부팅 절차

 

- 전원 공급 > 부트 프로그램 실행 > 하드웨어 검사 > 운영 체제 로드 > 운영 체제 실행

 

운영체제는 보조기억 장치에 저장되어있다.

CPU는 계산, 기억장치는 저장.

 

CPU가 어떻게 보조 기억장치에 있는 운영체제를 어떻게 실행시킬까?

CPU는 보조 기억장치에 접근할 수 없다.

CPU는 주 기억장치에 접근할 수 있다.

 

1. 보조 기억장치에 있는 운영체제를 주 기억장치에 복사한다.

2. CPU는 주 기억장치에 복사된 운영체제에 접근한다.

3. 운영체제를 실행한다.

 

 

#3 운영체제의 기능

 

UNIX, Lunux, Windows, Mac OS, IOS, Android . . .

 

옛날 프로그래머는 프로그램을 만들 때마다 하드웨어를 어떻게 사용하는지 조작하는 프로그램을 전부 따로따로 만들었다.

공통적으로 개발해야하는 부분을 묶어서 같이 사용하려는 움직임이 운영체제의 시작이다.

특히, 하드웨어를 어떻게 사용할지 운영체제를 만드는 사람들이 미리 만들어서 다른 프로그래머들에게 제공하는 것.

커널Kernel이라는 부분이 하드웨어를 담당한다.

커널은 하드웨어를 조절해준다 혹은 응용프로그램과 하드웨어를 중계해준다.

 

오늘날, 여러개의 프로그램을 동시에 사용한다.

그렇게 되면 cpu나 메모리같은 하드웨어의 자원들을 관리해주는 것도 운영체제다.

 

 

 

#4 현대적 컴퓨터의 구조

 

내장형 프로그램 방식의 컴퓨터Stored-program computer (폰 노이만 구조)

 

Von Neumann architecture

출처 : https://ko.wikipedia.org/wiki/%ED%8F%B0_%EB%85%B8%EC%9D%B4%EB%A7%8C_%EA%B5%AC%EC%A1%B0

 

폰 노이만 구조 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 폰 노이만 구조(영어: Von Neumann architecture)는 에드박의 보고서 최초 초안(First Draft of a Report on the EDVAC)에서 수학자이자 물리학자 존 폰 노이만과 다른 사람들이

ko.wikipedia.org

 

프로그램이 메모리에 들어간다 (내장형 프로그램 방식이다.)

 

 

폰 노이만 구조가 발전하여 현대의 컴퓨터 구조는 다음과 같은 형태가 됐다.

system bus

출처 : https://en.wikipedia.org/wiki/System_bus

 

System bus - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Single computer bus that connects the major components of a computer system A system bus is a single computer bus that connects the major components of a computer system, combining the

en.wikipedia.org

 

현대의 프로그래머는 입출력 장치에 신경을 덜 쓰게 됐다.

왜냐면 운영체제가 알아서 해주니까~!

 

Bus : 이진수를 싣고 다니는 버스 > 데이터를 싣고다닌다.

 

CPU , Memory, Input and Output : 시스템 버스를 통해 데이터를 주고 받는다.

 

 

#5 컴퓨터 메모리의 기본 구조

 

https://www.youtube.com/watch?v=cNN_tTXABUA&ab_channel=InOneLesson 

In One Lesson - How a CPU Works

해당 영상을 참고하면 CPU와 RAM이 어떻게 데이터를 주고 받는지 이해하는 데 도움이 된다.

 

Address bus : 메모리 주소를 주고 받는다.

(C언어에서 포인터가 중요한 이유 > C언어가 다른 언어보다 빠른 이유)

 

Controll bus : 데이터를 받을지, 전송할지 등을 정한다.

Data bus : 데이터를 전송하거나 전송 받는다.

 

 

#6 CPU의 기본 구조

 

기계여Machine code : CPU가 사용하는 언어. 2진수로 구성.

어렘블리 언어Assembly language : 니모닉Mnemonic(기계어로 되어있는 명령들을 인간이 이해 가능한 단어로 바꾼 것)

고수준 프로그래밍 언어High level programming language : C, C++ 등

 

CPU가 수행하는 명령어 집합 (ISA)

CPU 명령어 집합Instruction set

출처 : https://microchipdeveloper.com/16bit:instruction-set-architecture

 

Instruction Set Architecture Overview - Developer Help

Byte operations are indicated by appending a ".B" to the instruction mnemonic, i.e. ADD.B

microchipdeveloper.com

 

 

1. CPU의 구성 요소들

 

제어 장치Control Unit

컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어

 

산술 논리 장치Arithmetic Logic Unit(ALU)

제어장치의 명령에 따라 실제로 연산을 수행

 

여러가지 레지스터들Registers

CPU내부에서 처리할 명령이나 연산의 결과나 주소등을 일시적으로 기억하는 임시 저장소

 

- 주소 레지스터 : 읽거나 쓸 메모리 주소 저장 (cpu가 메모리에 임의접근 하기 위해 필요)

- 프로그램 카운터 : 다음 명령어의 메모리 주소 저장

- 데이터 레지스터 : 메모리에서 읽어온 데이터 저장

- 명령어 레지스터 : 메모리에서 읽어온 명령어 저장

- 어큐뮬레이터 : 연산에 사용되는 데이터 저장

 

이렇게 메모리를 주고 받는 행위를 이해하면 C언어에서 포인터를 이해하는 데 도움이 된다.

 

다음 영상은 홍정모님의 강의영상이다.

해당 영상에서는 CPU의 구성요소들이 작동하는 과정을 간략하게 볼 수 있다.

참고하여 학습하면 좋다.

https://www.youtube.com/watch?v=rTaNNQhwmt0&list=PLNfg4W25Tapyl6ahul_8VS_8Tx3_egcTI&index=10&ab_channel=%ED%99%8D%EC%A0%95%EB%AA%A8 

홍정모님의 "따라하며 배우는 C언어" 0.8챕터 영상

 

 

 

 

 

 

글을 마치며,

 

이번 포스팅에서 컴퓨터의 구성요소에 대한 단편적인 학습을 했다.

학습을 하며 C언어 학습을 위해 컴퓨터 시스템을 이해해야하는 이유를 알 수 있었다.

 

크래프톤 정글에서도 이를 인지하고 정글러에게 컴퓨터 시스템 학습을 시킨다.

학습의 방법은 컴퓨터 시스템 책의 특정 범위를 읽는 것이다.

하지만, 전공자의 영역에 들어서는 일이기 떄문에 어려움이 있었다.

 

그렇기 때문에 위 학습을 진행했다.

다음 포스트에서는 해당 서적을 읽고 요약하여 올리도록 한다.

 

 

 

 

긴 글 읽어주셔서 감사드립니다.

22.11.30