-
파이썬 기초 정복하기 - 1) 프로그램 동작 순서 & 인터프리터IT/파이썬 기초 2021. 9. 28. 12:11728x90SMALL
요즘 여러 사이트들을 들어가보면, 짧은 기간안에 프로그래밍을 가르쳐주겠다고 나온 강의들이 많다.
그런데 프로그래밍을 하면 할수록 프로그램이 컴퓨터 내부에서 어떻게 돌아가는지를 정확히 알아야(기초를 어느정도는 알아야) 디버깅, 응용프로그래밍 등을 할 때 더 높은 이해도를 가지고 더 좋은 코드를 짤 수 있다는 생각이 들었다.
그래서 최대한 자세하고 디테일하게 공부할 수 있도록 포스팅을 해보려고한다.
1. CPU & RAM & Hard Disk의 역할
"프로그램"이라고 하면, 일반적으로 소스코드 작성을 통해서 만들어진 소프트웨어를 의미한다.
웹상에 존재하는 각종 포털사이트, 모바일에서 사용할 수 있는 어플리케이션 등등 굉장히 많은 프로그램들이 존재한다.
이 프로그램들은 기본적으로 어떻게 돌아가고 있을까?
시대에 따라, 기술에 발전에 따라 조금씩 변하고 있기도 하지만 기본적으로 프로그램이 돌아갈 때 사용되는 PC 주요 부품은 같다.
CPU(Control Processing Unit), RAM(Random Access Memory), HDD(Hard Disk Drive)가 그것들이다. HDD의 경우는 속도가 빠른 SSD로 사용되고 있는 추세지만, 그 원래 용도인 비휘발성 데이터(ex. 파일)를 저장하는 것은 SSD와 동일하다. 요즘은 빅데이터, 머신러닝, AI (비슷한 키워드들인거 같긴 하지만...) 들이 이슈가 되면서 그래픽카드 사용도 두드러지고 있다. 이 포스팅에서는 CPU, RAM, HDD 부품들이 프로그램을 돌리기 위해서 어떤 역할을 하는지 알아볼 것이다.
먼저, CPU는 Control Processing Unit의 약자이다. 한국어로는 "중앙처리장치"라고 한다. 단어의 의미에서도 알 수 있듯이, CPU는 사람으로 치면 그 두뇌를 담당한다. 즉, 프로그램이 수행될 때 일어나는 모든 연산과 소스코드 해석을 CPU가 처리한다. 연산의 가장 간단한 예시는 사칙연산이다. 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 연산을 수행하라는 코드를 실행하면, CPU에서 해당 코드를 해석하고 연산을 수행한다. 그렇다면, 사칙연산과 같은 연산을 수행하기 위해서는 연산을 수행하기 위한 피연산자가 필요하다. 이 피연산자들은 어딘가에 저장이 되어있어야 CPU가 저장된 값들을 바탕으로 연산을 할 것이다.
이 때, 이 피연산자들은 RAM에 저장된다. RAM에 저장되는 이유는 해당 피 연산자가 "휘발성 데이터"이기 때문이다. RAM은 한국어로 "주기억장치"로, 휘발성데이터를 저장하는 부품이다. 이 피연산자들이 휘발성 데이터인 이유는 프로그램이 끝나면 사라질 데이터들이기 때문이다. 따라서, CPU가 연산을 하기 위해 필요한 데이터들은 모두 RAM에 저장된다.
그런데, CPU와 RAM이 이런 티키타카를 하면서 프로그램을 수행하기 위해서는 "프로그램 파일"이 존재해야될 것이다. 프로그램 파일이 돌아가면서 CPU가 파일을 해석하고, RAM은 연산을 하기위해 필요한 데이터를 저장해야한다. 프로그램 파일이 바로 하드디스크에 저장되는 것이다. 하드디스크에는 이처럼 영구적으로 보존할 파일들이 들어가있다.
2. 프로그램 동작 방식
딱 정리하자면 위 사진과 같이 정리할 수 있는데, 하드디스크에 저장되어 있는 프로그램을 실행시키면, CPU가 파일에 있는 소스코드를 한줄씩 컴퓨터가 알아들을 수 있도록(컴퓨터는 0, 1로만 알아들을 수 있다) 해석하여 RAM에 해석본을 저장시켜둔다. 이 때 RAM에 저장되는 이 해석본들이 "실행중인 프로그램"이 된다. Window OS를 사용하는 사람들은 작업관리자 탭에서 실행중인 프로그램들을 쉽게 볼 수 있다. 이 프로그램들은 RAM에 CPU가 프로그램 파일을 번역해서 저장시켜둔 프로그램들인 것이다.
그런데 이때, CPU가 번역하는 방식에서 파이썬은 다른 언어(C, C++..)들과 차이가 있다.
C++을 예시로 들어보면, C++은 컴파일러가 번역을 하고, 파이썬은 인터프리터가 번역을 한다. 이제 인터프리터에 대해서 알아보자.
3. 인터프리터
두 가지가 무슨 차이가 있느냐고 한다면 간단하게 생각해서 컴파일러는 소스코드를 처음부터 끝까지 모두 번역한 뒤, 한번에 번역한 프로그램을 RAM에 집어넣는다. 하지만 인터프리터는 한줄씩 번역하고 번역에 성공하면 RAM에 바로 집어넣는 방식이다.
예컨대, 프로그램을 실행 하는데 오류가 나는 상황이라고 생각을 해보면
컴파일러는 프로그램을 처음부터 끝까지 다 번역한 후에 오류가 났음을 알린다. 그러나, 인터프리터는 프로그램을 한줄씩 번역하다가 오류가 나면 바로 오류가 났음을 알린다. 그리고 그 이후의 코드는 번역하지 않는다.
실제로 다음 코드를 입력해보면, 4와 0이 출력된 후 a/b에서 오류가 나는 것을 알 수 있다. 한줄씩 번역해서 넣기 때문이다.
a = 4 print(a) b = 0 print(b) print(a/b)
파이썬 인터프리터는 Terminal창에서 사용해볼 수 있다. (window os는 cmd창)
만약 Python이 설치되어있지 않은 경우에는, 파이썬 홈페이지로 들어가서 설치를 해주도록하자. 설치는 매우 간단한 과정으로 이루어지므로 누구나 쉽게 할 수 있다. (계속 next만 누르면 됨)
https://www.python.org/downloads/
python이 설치 되어있다면, Terminal창을 켜서 python이라고 치면 python 인터프리터를 사용할 수 있다.
이렇게 한줄씩 쳐서 바로바로 결과를 알 수 있다. 인터프리터 사용을 중지하고 싶다면 Ctrl+D를 누르거나 터미널에 exit()이라고 입력하면 종료된다. 이 인터프리터를 통해 간단한 사칙연산을 구현해보자.
a = 1 b = 4 print(a+b) print(a-b) print(a*b) print(a/b)
파이썬 인터프리터가 한 줄씩 해석해주는 것을 알 수 있다. 다음 장에서 본격적으로 파이썬 문법을 살펴보면서 RAM, CPU, HDD속에서 프로그램이 어떻게 돌아가는지 알아보자.
728x90LIST'IT > 파이썬 기초' 카테고리의 다른 글
파이썬 기초 정복하기 -3) 자료형(타입) : 데이터의 다양한 형태 (0) 2021.10.05 파이썬 기초 정복하기 -2) 변수란? 파이썬에서 변수의 의미 (0) 2021.10.01