본문 바로가기

CS공부

혼자 공부하는 컴퓨터 구조 + 운영체제 무료 강의 정리 0 ~ 2 강

잡설

적기에 앞서 내가 이 무료 강의를 듣기 시작한 이유에 대해 말해보고 싶음.

나는 CS 공부를 하고자 여러 깃헙 레포 등을 들려 보았으나 남이 정리한 내용을 그냥 찾아보는 것이

내가 직접적으로 깊게 공부하는 것과 많이 떨어져있다고 느꼈음.

이유는 여러가지가 있지만 크게 나의 모자람과 질문이 끝없이 이어지는 내 스타일이 크다고 생각했음.

이 과정에서 모르는 단어가 중구난방 등장하는 글들 보다 그냥 초급자를 위한 공부자료를 찾게 됨.

따라서 이 강의를 보면서 지피티, 구글링 등을 참고하여 내용 정리를 하는 방식을 선택하게 됨.

 


0강. OT 및 책 소개

- CPU, OS 등의 내용은 세부 사항이 나와있는 옵션에 따라 매우 다양함 => 이 강의는 일반적인 동작을 이론적으로 서술하는 데에 집중함 (필자는 전공 서적이 제시하는 가장 일반론적인 관점에서 서술하려 노력했다고 함)

- 개발자를 대상으로 함(회로 등의 어렵고 중요도가 낮은 내용을 제외)

 


1강. 컴퓨터 구조를 알아야 하는 이유

- 개발자는 코드 문법 뿐 아니라 컴퓨터 구조를 알아야 한다고 함

    - 이유 1. 문제 해결 능력 함양

    - 이유 2. 성능, 용량, 비용을 고려한 개발을 할 수 있기 때문

 

상세 설명 1. 문제 해결 능력 함양

- 잘 짜인 코드라도 배포 혹은 실행 환경에 따라, 잘 작동하거나 동작하지 않기도 함. => 코드 문제 X, 환경 문제 O

- 즉, 문법에 맞는 코드를 입력만 하는 개발자에서 진화 가능 ..

 

상세 설명 2. 성능, 용량, 비용 고려 개발 가능

- 개발자라면 내가 작성한 코드가 어느 정도의 서버가 필요한지를 알 수 있어야 함. 

- 컴퓨터 구조는 결국 성능, 용량, 비용에 관한 이야기이다. => 이는 프로그래밍 언어의 문법만으로는 해결하는 데에 한계가 있다.

 


2강. 컴퓨터 구조의 큰 그림

2 - 1. 들어가며

- 세부 내용에 파묻혀 큰그림을 잃지 않도록 먼저 정리하는 강의

- 컴퓨터의 구조는 크게 '컴퓨터가 이해하는 정보' 와 '컴퓨터의 4가지 핵심 부품' 으로 나뉜다.

- 컴퓨터가 이해하는 정보는 크게 두가지, '데이터' 와 '명령' 이 있다.

 

2 - 2. 컴퓨터가 이해하는 정보 - 데이터

- 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 데이터라 칭한다.

- 컴퓨터가 주고 받거나 내부에 저장한 정보를 총칭하는 경우도 있다.

- 0과 1로 숫자와 문자를 표현하는 방법 이후 학습

 

2 - 3. 컴퓨터가 이해하는 정보 - 명령어

- 필자는 컴퓨터란 한마디로 '명령어를 처리하는 기계' 라고 생각한다고 함. => 명령어라는 정보는 컴퓨터를 실질적으로 움직이는 정보이다.

- 명령어는 컴퓨터를 움직이게 만들어서 데이터를 변화하게 만듬. 

- 명령어의 생김새와 동작 방식에 관해서도 학습 예정

- ex) '1과 2를 더하라' 에서 1과 2는 데이터, '더하라' 는 명령어가 됨.

 

2 - 4. 컴퓨터의 4가지 핵심 부품

- 세상의 다양한 컴퓨터 => 작은 스마트 기기 부터 서버컴까지 => 크기, 종류를 막론하고 컴퓨터를 컴퓨터 답게 동작하도록 하는 핵심 부품은 사실상 거의 동일함

- 이 4가지 핵심 부품은 아래와 같음

 

1. CPU

2. 메모리: 보통 주기억 장치, 메모리 등의 용어를 혼용하여 호칭. 원래 RAM, ROM이라는 하드웨어가 있으나 여기서는 주로 RAM을 말함. (일반적으로도 메모리라고 하면 RAM을 말한다고 함)

3. 보조기억장치: USB, CD-ROM, HDD, SSD  등의 (대용량)의 저장 장치를 말함.

4. 입출력장치: 컴퓨터 외부에서 컴퓨터와 정보를 주고 받기 위한 장치 (마우스, 키보드, 마이크, 스피커 등)

 

- 위의 4가지 핵심 부품들이 모여 있는 보드를 메인 보드(마더 보드) 라고 함. => 이 위에 4가지 핵심 부품들이 모두 올라감. (서로를 연결해주기도 함)

- 이 때 이 부품들을 이어주는 회로가 메인 보드 위에 그려져 있는데 이를 버스라고 하며, 다양한 버스 중 가장 중요한 버스를 '시스템 버스' 라고 함. (위의 핵심 4가지 부품이 서로 정보를 주고 받기 위해서 통로로 사용함) 

 

2 - 5. 컴퓨터의 4가지 핵심 부품 - 메모리

- 메모리는 주로 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품임 => 현재 실행되는 프로그램을 '프로세스' 라고 함.

- 여기서 핵심은 현재 실행되는 프로그램이라는 부분. 즉 어떤 프로그램이 실행되기 위해서는 그 프로그램의 명령어와 데이터가 메모리위로 올라와야 함. 

- 나중 OS에서 페이징을 배우면 꼭 이말이 맞지만은 않다고 함. 

- 현재 실행되고 있지 않은 프로그램은 보조기억장치에 저장됨.

- 메모리에는 '주소' 개념이 존재 => 내가 원하는 데이터, 명령어가 어디에 저장되었는지를 구분하기 위함

 

요약

- 프로그램이 실행되기 위해서는 (기본적으로는) 메모리 위에 저장되어야함 => 명령어와 데이터가 프로그램을 이루므로 이들이 저장됨

- 메모리 저장된 값의 위치는 '주소'를 통해 알 수 있음.

 

2 - 6. 컴퓨터의 4가지 핵심 부품 - CPU

- CPU는 메모리에 저장된 명령어를 읽고 해석하여 실행하는 부품 => '컴퓨터의 두뇌' 인 만큼 정교하고 복잡한 설계가 들어있음.

- 그러나 대부분의 전공서적에서 소개하는 CPU의 부품은 크게 아래의 3가지임.

 

1. ALU(산술 논리 연산 장치)

- 계산기의 역할을 함. => 산술과 논리 연산을 해주는 장치임. 즉, 계산을 위한 회로들의 모임이 ALU임.

 

2. 제어 장치(Control Unit)

- 전기로 이루어진 제어 신호를 내보내며 명령어를 해석하는 장치

- 여기서 제어 신호란 '컴퓨터의 부품들을 관리, 제어하기 위한 전기 신호' 로, 여러 종류의 신호들이 있음. 

- 이 중 대표적인 예시가 '메모리 읽기/쓰기' 신호임 => 각각이 CPU가 메모리에 명령어나 데이터를 읽거나 쓰고 싶을 때 CPU에서 메모리를 향해 내보냄.

 

3. 레지스터(Register)

- CPU 내부의 작은 저장 장치, CPU 내에 보통 여러개 존재함.

 

예제

- CPU의 제어 장치에서 메모리의 명령어를 읽어 들이기 위해 메모리 읽기 신호를 메모리에 보냄

- 메모리에서 읽어들인 명령어가 레지스터에 저장되고, 제어 장치가 이를 읽어 연산을 위해 필요한 데이터가 있다면 이를 가져와 레지스터에 저장함.

- 제어장치가 ALU에게 연산수행 명령을 내림 => ALU는 수행 결과를 또다른 레지스터에 쓰게 됨.

- 명령어 수행이 끝나면 다시 제어장치가 다음 명령어를 읽어들임. 

 

요약

- CPU는 메모리에 저장된 값을 읽고, 해석하고, 실행하는 장치

- 실제로는 훨씬 많은 부품이 들어가는 정교한 장치지만, 대부분의 전공 서적에서 소개하는 핵심 부품으로는 아래의 세가지가 존재

 

1. ALU: 산술 및 논리 연산 장치

2. 레지스터: 임시 저장 장치

3. 제어 장치: 제어 신호를 발생하며 명령어를 해석하는 장치

 

- CPU는 컴퓨터 구조를 학습하는 데에 있어 가장 중요한 부분 중 하나 => 이후 내용이 추가될 예정.

 

2 - 7. 컴퓨터의 4가지 핵심 부품 - 보조 기억 장치

- 보조 기억 장치는 주기억 장치의 다음과 같은 단점을 존재 이유로 함.

 

1. 주기억장치는 보조기억 장치에 비해 값이 비쌈

2. 전원이 꺼지면 저장된 값이 날아감 => 이러한 기억 장치를 '휘발성 기억 장치' 라고 함. 

 

- 즉, 보조 기억 장치는 상대적으로 값이 싸며 전원이 꺼져도 저장된 정보를 유지할 수 있는 특징이 있음. 

- 위의 특징에 따라 주기억 장치는 현재 실행할 프로그램을 저장하기 위해 사용되며 보조 기억 장치는 보관하고 싶은 정보들을 저장하기 위해 사용됨

 

2 - 8. 컴퓨터의 4가지 핵심 부품 - 입출력 장치

- 모니터, 마우스, 키보드 등. 컴퓨터 외부와 연결되어서 정보를 주고받도록 해주는 부품을 말함

- 외장하드, USB를 볼때 보조 기억 장치는 입출력장치인가? => 이 둘은 딱 잘라서 구분되는 개념은 아님.

- 이들을 주변 장치(peripheral device) 라고 지칭하기도 함.

- 그러나 보조 기억 장치는 메모리를 보조한다는 좀 더 특별한 역할을 가지고는 있음.

 

2 - 9. 컴퓨터의 핵심 부품을 이어주는 메인보드

- 메인 보드는 위의 4가지 핵심 부품을 연결해주기 위해 사용되는 판으로 여기에 부품끼리 연결해주는 통로를 '버스' 라고 함

- 이 버스는 굉장히 종류가 다양하며 이 중 가장 중요한 버스(위의 4가지 핵심 부품이 서로 정보를 주고 받을 수 있도록 해주는)를 시스템 버스라고 함.

- 메인보드에는 슬롯, 연결 단자들이 많이 달려 있음. => 여기에 꼽은 부품끼리는 버스를 통해 데이터 등을 주고 받음. 

 

2 - 10. 시스템 버스에 대하여

- 시스템 버스는 크게 아래의 3가지 내부 구성을 가짐 => 시스템 버스가 큰 길을 말한다면 각각의 차선처럼 아래의 구성요소들이 존재

 

1. 주소 버스: 주소를 주고 받는 통로

2. 데이터 버스: 데이터를 주고 받는 통로

3. 제어 버스: 제어 신호를 주고 받는 통로

 

- 위와 같이 신호의 종류에 따라 다른 버스를 타고 이동함. 

- 예를 들어 메모리의 특정 주소에 특정 값을 쓰고 싶다면, 아래와 같이 이동함

 

1. 저장할 데이터의 값이 데이터 버스를 타고 메모리로 감.

2. 값을 저장할 메모리 주소가 주소 버스를 타고 메모리로 감.

3. 제어 신호(메모리 쓰기 신호)가 제어 버스를 타고 메모리로 감.

 

- 메모리는 위의 신호 3개를 조합하여 특정 주소에 특정 값을 쓰라는 명령을 해석하고, 실행함.

 

 

 

 

 

 

'CS공부' 카테고리의 다른 글

Python의 Generator, Iterator  (1) 2025.04.04
파이썬의 병렬 처리  (0) 2025.03.15