컴퓨터구조

CPU, RAM, Disk 등 무엇이며, 어떻게 연결되어 있을까? - (2)

hayz 2022. 3. 31. 22:38

이전 글에서 CPU와 RAM 그리고 Disk 에 대한 각각의 개념을 살펴보았습니다. 이번 글에서는 이 세가지 요소가 컴퓨터를 구성하는에 있어서 어떻게 연결되고 동작되는지 알아보도록 하겠습니다. 

 

CPU, RAM, Disk 등 무엇이며, 어떻게 연결되어 있을까? - (1)

컴퓨터 구조에 대해서 공부하다 보면 CPU, RAM, Disk 등의 용어들을 많이 접해봤을 겁니다. CPU, RAM, Disk 모두 컴퓨터를 구성하는 요소로 우리가 사용하는 노트북, 데스크탑 본체 안에 들어가 있습니

hayz.tistory.com

 

컴퓨터는 어떻게 동작할까?

컴퓨터가 동작하는 방식을 설명하기 위해서는 굉장히 많은 내용들이 필요하고, 알아야 할 것들이 많습니다. 그렇기 때문에, 해당 글에서는 컴퓨터에서 돌아가는 프로세스들 예를 들어 크롬, 카카오톡 등이 어떻게 동작할 수 있는가에 대해서 간단히 살펴보겠습니다. 우선 예를 하나 들어보도록 하겠습니다.  

 

우리가 예를 들어서 카카오톡을 컴퓨터에서 실행하고 싶을때 보통 카카오톡 다운로드 페이지에 들어가서 다운을 받고, 설치 파일이 다운로드 되면 해당 설치 파일을 실행하여 카카오톡을 설치합니다. 그러면 카카오톡이 설치가 되고, 실행해서 우리가 원하는 메신저를 주고받는 카카오톡을 동작시킬 수 있습니다. 

 

이렇게 카카오톡 같은 컴퓨터 위에서 돌아가는 모든 것들을 "프로그램" 이라고 합니다. 이 프로그램은 컴퓨터 위에서 여러가지로 존재합니다. 카카오톡이 실행한다고 해서 우리가 유투브를 동시에 보지 못하는게 아닌것 처럼, 컴퓨터위에는 여러 프로그램들이 동시에 실행됩니다. 그럼 이 프로그램들은 어떻게 동시에 처리가 되고 있을까요? 그리고 프로그램이라고 하는것들은 어디에서 실행되고 있는걸까요? 

 

출처: https://www.cloudsis.com/post/2018/09/12/cpu-ram-and-hard-drive-e2-80-93-what-e2-80-99s-the-difference

프로그램이 저장되는 곳

우리가 처음에 카카오톡을 다운로드하여 설치하듯이, 프로그램은 처음에 Disk 에 저장됩니다. 만약에 RAM 에 저장되면 어떻게 될까요? 이전 글에서 설명드렸던 것처럼 RAM 은 전원을 껐다 키면 데이터가 사라지는 휘발성 메모리 이기 때문에 다운받았던 파일이 사라지게 됩니다. 그러므로 영구적으로 보관해야할 데이터들은 모두 Disk 에 저장되게 됩니다. 

 

프로그램이 실행되는 순간

프로그램을 실행하기 위해 실행파일을 더블클릭하여 실행하면, 원하는 프로그램들이 실행됩니다. 이때 무슨일이 일어날까요? 아까 프로그램이 처음에 설치되면 그 파일은 Disk 에서 설치된다고 했습니다. 그러면, 이전 글에서 언급했듯이 CPU 라고 하는 중앙처리 장치가 프로그램을 실행하라 라고 하는 명령을 인지하고, 프로그램을 실행하려 합니다. 하지만, 위 그림 처럼 CPU 는 Disk 에 직접적으로 접근하지 않고 RAM 이라고 하는 휘발성 메모리에 프로그램을 올려놓고, 이 RAM 에서 프로그램을 처리하게 됩니다. 

 

이유는, Disk 는 RAM 보다 많이 느리기 때문입니다. 그래서 CPU 는 Disk 로 가기 전 중간에 RAM 이라고 하는 장치를 하나 두어서 이 RAM 하고만 소통합니다. 그리고, 필요한 파일들이 있는 경우 Disk 에서 읽어서 RAM 에 올려두고 실행합니다. 

 

그러면, 여기까지 봤을때 CPU 가 프로그램을 실행시키기 위해 Disk 에서 해당 실행파일을 RAM 에 올려두고, RAM 과 통신하면서 프로그램에 실행시키기 위해 필요한 작업들을 수행한다. 라고 이해할 수 있습니다. 

 

CPU 가 내부에 어떻게 구성이 되어 있고, 프로그램은 어떻게 되어 있길래 연산들을 처리할 수 있을까 등은 사실 조금 더 세부적인 내용이기 때문에 이번 글에서는 다루지 않도록 하겠습니다. (나중에 이 부분도 블로그에 작성할 예정입니다)

 

여러 프로그램이 실행될 수 있는 방법

그렇다면 위 설명으로만 봤을때는 프로그램 하나, 즉 하나의 컴퓨터에서 카카오톡 하나 혹은 유투브 하나 각각 실행되는것은 이해가 가능한데, 어떻게 동시에 실행되고 있는걸까요? 심지어 CPU가 1개 (1 core) 인 경우에도 똑같이 동시에 실행시키는것에 문제가 없게 느껴집니다. 

하지만 한가지 분명한 것은 CPU 는 한번에 동시에 연산을 수행할 수 없다는 것입니다. 하지만 동시에 처리되는 것처럼 보이게 할 수는 있습니다. 이 말은, 여러 프로그램들이 존재할때 각 프로그램들을 조금씩 나눠서 수행하고 있다는 뜻입니다. 

 

예를 들어, 우리가 책도 봐야하고 요리도 해야 하는 상황이 있다고 가정해보겠습니다. 그런 경우에, 우리는 손이 두개 뿐이고 눈도 한번에 한곳만 응시할 수 있기 때문에 책도 보면서 요리도 하기란 쉽지 않습니다.  하지만 책을 한페이지 보고 요리 조금 하고, 또 책 한페이지 보고 요리 조금 하고 하는식으로 한다면 얼핏 봤을때는 동시에 하는 것처럼 보일 수 있습니다. 이런식으로 CPU 도 여러 프로그램들이 존재할때 동시에 실행되고 있는것 처럼 한번에 하나씩, 번갈아가면서 실행시키고 있습니다. 단지 그 속도가 너무 빨라서 동시 처럼 보이는것 뿐입니다. 

출처: http://cs241.cs.illinois.edu/coursebook/Scheduling

이러한 CPU 동작을 CPU 스케쥴링 이라고 하며, 위 처럼 동일하게 여러 프로그램들을 조금씩 돌아가면서 실행시키는 방식을 라운드 로빈 알고리즘 이라고 합니다. 위 그림은 라운드 로빈 방식의 예시입니다. 

 

 

이번 글에서는 위에서 설명드렸던 것처럼 CPU와 RAM , Disk 가 프로그램이 실행될때 각각 어떤 역할을 하고, 어떻게 연결되어 있는지 간단하게 살펴보았습니다. 추가적으로 CPU 가 프로그램을 스케쥴링 하는 방식의 일종인 라운드 로빈도 알아보았습니다. 이후에는, CPU 가 읽어드리는 즉 처리하는 연산이 어떤것인지 등에 대해서 알아보도록 하겠습니다.