본문 바로가기

CS 모음

[CS기초] 컴퓨터 구성, 메모리 계층 구조, 운영체제(커널과 쉘)

안녕하세요 인포돈 입니다.


컴퓨터 구조

컴퓨터 공학에 앞서서 우리는 컴퓨터가 어떻게 구성되어 있는지 전체의 틀을 이해해보아야 한다! 컴퓨터는 크게 8가지의 구성으로 되어있다.

 

🖥️ 전원 공급 장치 🖥️ 메인보드 🖥️ 중앙처리장치 🖥️ 주기억장치

🖥️ 보조기억장치 🖥️ 입력장치 🖥️ 출력장치 🖥️ 그래픽 카드

 

모든 장치의 세세한 내용보다는 전체적으로 컴퓨터가 어떻게 동작하고 흐르는지를 반듯이 이해해야 한다. 차례대로 이해해보자

  • CPU - 중앙 처리 장치

CPU는 중앙처리장치를 의미한다. CPU는 기억, 해석, 연산, 제어라는 4대 주요 기능을 관할하는 장치를 의미한다. 이때 사람으로 비유하자면 뇌에 해당이 된다.

  • POWER (전원 공급 장치)

컴퓨터 자체가 전기로 굴러가는 장치이다. 반듯이 전기를 넣어줄 수 있는 전원 공급 장치가 필수적이다. (주로 컴퓨터를 분해해보면 파워에 메인보드, 그래픽카드, 쿨러 등이 연결되어있는 것을 알 수 있다!)

  • 메인보드

반도체의 집합체입니다. 메인보드에 CPU, RAN, SDD 등이 장착되며, 컴퓨터의 대부분의 모든 동작이 메인보드에서 데이터가 이동한다.

  • RAM - 주 기억 장치

쉽게 우리가 알고 있는 램!!! 주 기억 장치로서 휘발성 저장장치이다. 그런데 왜? 주 기억 장치인가…? 바로 CPU와 직접적으로 데이터를 주고받기 때문이다. 이때 우리는 기억해야 한다. 보조 기억 장치의 속도는 현저히 늦기 때문에 RAM이라는 중간 다리 기억 장치를 추가해서 이러한 병목 현상을 제거해 주는 방식으로 작동된다는 점이다.

 * 추가로 보조기억장치에서 필요한 데이터를 RAM에 적재하는 것을 LOAD라고 한다.

  • SSD, HDD - 보조 기억 장치

하드디스크! 모두가 들어봤을 법한 내용입니다. 비휘발성으로 컴퓨터가 꺼져도 데이터가 저장되어있는 중요한 장치이죠. 여기서 SDD와 HDD의 차이는 속도 ( SDD > HDD ) 임을 기억하자. 보조 기억 장치는 주 기억 장치보다 속도가 극심하게 느리기 때문이다.

 * 추가 정보로 보조 기억 장치나 주 기억 장치를 합쳐 성능 좋은 하나의 기억 장치로 만들 수 있지만, 일반인들이 사용하기 알맞은 단가로 나오기 힘들기 때문에 분할되어서 컴퓨터가 만들어진다.

  • 입력 장치

말 그대로 입력 장치…. 마우스, 키보드를 의미합니다. 그 외에 마이크 요런 것도 하나의 입력 장치가 될 수 있겠습니다.

  • 출력 장치

출력을 담당하는 장치이다. 바로 모니터를 기억해보자! 프린터기도 하나의 출력 장치가 될 수 있다.

  • 그래픽 카드

CPU를 보조하는 연산 장치이다. 깊게 생각할 필요가 없다.

 

 

 * 보조 기억 장치와 주 기억 장치의 구조

보조 기억 장치 => 순차 접근 방식 // 느린 속도 // 비휘발성

주 기억 장치 => 임의 접근 방식 // 빠른 속도 // 휘발성

 이때 빠르기는 보조 / 주 기억 장치의 상대적 속도이다.

 * HDD와 SDD의 차이

HDD는 발열이 심하고 소음이 크고 느리지만 안정적이다.

SDD는 연속적인 데이터를 받아올 때 속도가 느리고 HDD보다 덜 안정적이지만, 발열이  없고 빠른 속도를 자랑한다.

 

 


메모리 계층 구조

 

 그림과 같이 메모리 계층 구조는 6개로 되어 있다. 무조건은 아니고, 컴퓨터마다 다르지만 일반적인 메모리 계층 구조를 의미하게 된다. 

 

메모리 계층 구조를 위 그림처럼 이해하면 쉽다. 여기서 캐시와 레지스터는 메인 메모리 (RAM)이 아무리 빨라졌다 하더라도, CPU와의 속도 차이가 있기 때문에 존재하는 기억 장치이다. 쉽게 말해서 속도 차이의 갭을 줄이기 위해서 캐시와 레지스터가 존재한다고 생각하면 된다.

 

 기본적으로 CPU가 연산에 필요한 데이터를 L1에 요청한다 없으면 L2 -> L3 -> 메인 메모리 -> 하드 디스크 이런 식으로 순차적으로 내려가면서 데이터를 찾게 된다.

 

 * 추가 여담으로 하위에서 상위로 갈수록 20% 자주 사용하는 데이터를 적제 한다. 이를 80/20 법칙이라고 한다


운영체제와 커널과 쉘의 관계

 운영체제는 많이 들어보았을 상식이다. Window가 아주 대표적이다. 이러한 운영체제는 사용자가 컴퓨터를 쉽게 다룰 수 있도록 도와주는 인터페이스라고 보면 된다.

 

 그럼 커널은 무엇인가?

운영체제의 핵심이자 OS를 규정짓는 부분이다. 이런 식으로 말하면, 크게 안 와닿을 것이다. 커널은 운영체제에 필요한 거의 모든 것을 행하는 곳이라고 생각하면 된다. 어떠한 프로그램(프로세스)이 실행되면, 해당 프로그램이 필요로 하는 데이터를 할당해 주던가, CPU에서 연산처리를 어떠한 순서로 해주어야 하고, 휘발성 메모리의 경우 동적으로 어떤 프로세스에 얼마큼이나 나눠줄지 등 운영체제에서 하는 동작의 핵심 부분을 담당한다.

 

 그럼 쉘은 무엇인가?

 쉘은 더욱 쉽다. 커널과 사용자 사이에서 명령을 해석하고 결과를 뿌려주는 시스템이다. 쉘은 CLI와 GUI로 나누어 구분할 수 있으며, 각 명령 줄 / 그래픽을 활용하여 쉘을 동작한다. ⇒ 커널과 쉘의 관계를 생각하자. 어찌 보면 쉘은 하나의 응용프로그램으로 볼 수 있다. 그러나 형식적으로 바로 커널에 접근할 수 있는 방법으로 암묵적으로 이해한다.

 

 * 일반적으로 Window의 cmd나 PowerShell을 생각하면 된다.

 

Tip 컴퓨터는 왜 2진수를 사용할까?

 

컴퓨터가 2진수를 사용하는 이유는 간단하다. 반도체가 흐르는 상태 또는 흐르지 않는 상태 2가지의 상태를 이용해서 동작하기 때문이다. 이러한 2가지로 나누어 상태를 설명한다면 구분이 용이하기 때문이다. (공학에서의 편리함의 강조는 핵심이다.)

 * 삼성의 3진법 ⇒ 나누는 가짓수가 많아 짐에 따라 적은 양의 메모리로 다양한 표현이 가능하기 때문이다.

=> 이러한 3진법의 경우, 열린 상태, 열리지 않은 상태, 무엇인지 모르는 상태로 나누어 표현한다.