컴퓨터 사이언스

컴파일러 언어와 인터프리터 언어 / 운영체제

창고관리장 2024. 6. 4. 17:49

 

컴파일러 언어와 인터프리터 언어

 

우리가 컴퓨터를 사용하면서 실행하는 여러 프로그램들, 모바일에서 사용하는 여러 프로그램들은 컴파일러와 인터프리터라는 소프트웨어를 통해 만들어지게 된다.

 

컴파일러는 한 언어의 코드를 다른 언어의 코드로 바꿔주는 역할을 하며, 프로그래밍 언어의 번역기라고 볼 수 있다.

 

코드가 프로그램으로 구동되는 원리를 간단하게 살펴보면, 프로그래밍 언어를 컴파일러를 통해 프로그램으로 동작할 수 있도록 해주는 머신코드로 변환한 뒤, 사용자 컴퓨터에서 구동된다.

 

머신코드는 컴퓨터가 이해할 수 있는 0과 1의 조합으로 나올 수 있는 코드이기에, 컴파일러 이전에 코드를 작성하고 머신코드로 바꾸는 오랜시간동안의 컴파일 과정을 거쳐 코드가 실행되서 빠르게 개발할 수 없는 단점이 있다.

 

이런 컴파일러의 단점을 보완한 방식이 인터프리터이다. 인터프리터는 코드를 한 줄씩 바로바로 실행해주며, 번역기 역할이 아닌 코드 실행기의 역할을 한다.

 

그래서 개발속도가 빨라지게 되지만, 사용자의 컴퓨터에도 코드를 실행해주는 인터프리터가 설치되어야 해서 컴파일러에 비해 실행 속도는 떨어진다는 단점이 있다. 또, 프로그래밍 코드가 그대로 사용자에게 전달되기에 코드유출의 가능성이 있다.

 

고수준 언어에서 저수준 언어로 갈수록 똑같은 내용의 코드가 점점 길어지는데, 이 때문에 컴파일러 방식보다 고수준 언어 그 자체로 전달하는 인터프리터 방식으로 만든 프로그램의 용량이 더 작다는 특징이 있다.

 

그리고 고수준 언어는 개발 편의성이 중요한 언어이기 때문에 컴파일 과정을 매번 거치면 그런 장점이 모두 사라진다. 그래서 자바스크립트나 파이썬, 루비같은 언어는 인터프리터 방식을 사용하게 된다.

 

반면 저수준 언어는 개발이 힘들더라도 최고의 성능, 효율, 속도를 만들어내고자 하는데 인터프리터 방식으로 실행되어 느리게 실행되면 힘들게 저수준 언어로 개발한 이유가 사라진다. 따라서, C나 C++ 같은 저수준에 가까운 언어들은 컴파일 방식을 사용하게 된다.

 

운영체제 (OS)

 

운영체제는 매일 사용하며, 손에 쥐고 있기도 하다. 또, 이 운영체제를 사용할 때 나오는 소리, 작업결과의 저장과 불러오기 등의 과정은 모두 이 운영체제를 거치게 된다.

 

운영체제는 이처럼 입출력 관리도 하고 중간에서 저장과 불러오기같은 과정이 순조롭게 이뤄지도록 해준다.

 

컴퓨터를 사용하며 어제 쓴 키보드와 마우스가 고장나서 오늘 새로 산 키보드와 마우스로 바꾼다고 해보자. 만약 컴퓨터에 연결했는데 새로 산 기기가 작동이 안된다거나 특정 프로그램을 설치해야 사용이 가능하다면 어떨까? 정말 불편해질 것이다. 그래서 운영체제는 중간에서 어떤 제조사의 기기가 컴퓨터에 꽂혀도 사용자가 사용할 수 있도록 정리해서 등록해준다. 

 

이러한 입출력 관리를 해주기에 프로게이머가 어떤 곳에 있는 대회를 가서도 자신의 하드웨어를 들고 가서 평소 환경대로 진행할 수 있는 것이다.

 

그리고 문서작업을 하다가 컴퓨터가 꺼지면 작업한 내용이 모두 날아간다. 반면, 작업내용을 저장해 놓으면 컴퓨터가 꺼져도 다시 켰을 때 이전내용을 그대로 가져올 수 있기도 하다. 

 

전자를 휘발성, 후자를 비휘발성이라고 하는데 휘발성이 있는 작업을 RAM이 관리한다. 비휘발성 작업은 하드디스크가 관리한다. 

 

그리고 컴퓨터에는 빠르게 불러와야 하는 경우와 느리게 불러와도 되는 경우가 있는데, 전자는 보통 RAM처럼 적은 용량의 하드웨어가 담당하고, 후자는 하드디스크처럼 큰 용량의 하드웨어가 담당한다. 이때, 빠르게 불러와야 되는지, 느리게 불러와도 되는지를 운영체제가 중간에서 판단해준다.

 

운영체제는 여러 작업을 동시에 진행하는 멀티태스킹을 순조롭게 이뤄지도록 도와주는 역할도 한다. 게임을 하며 음악을 듣고, 영상편집을 하며 이미지 편집도 하는 등의 작업을 할 수 있는 것은, 고사양 하드웨어의 도움도 있지만, 잘게 잘게 업무단위를 나눠주어 서로 중첩되는 부분이 없도록, 사용자가 느끼기에 동시에 작업할 수 있도록 중간에서 본연의 업무를 하는 운영체제가 있기에 가능한 것이다. 

 

이런 특징을 가진 운영체제의 종류는 아래 목록처럼 다양하다. 

  • 윈도우: 가장 흔하게 찾아볼 수 있는 운영체제이며, 사용자 친화적인 인터페이스와 광범위한 응용프로그램 지원으로 인해 많은 사용자와 기업이 선호한다.
  • 맥: 애플의 MAC 컴퓨터에 사용되며, 사용하기 쉬운 인터페이스와 높은 안정성으로 디자인과 멀티미디어 작업을 하는 사용자들 사이에서 큰 인기가 있다.
  • 리눅스: 유닉스의 환경을 버리고, 별개의 오픈된 환경에서 수많은 기업과 사람들이 만들었고, 만들어지고 있는 오픈 소스 운영체제로, 우분투(Ubuntu), 데비안(Debian), 페도라(Fedora) 등의 배포판 운영체제가 있으며, 서버, 슈퍼컴퓨터, 임베디드 시스템 등에서 널리 사용된다. 높은 사용자 정의 가능성과 보안성으로 인해 개발자와 IT 전문가들에게 인기가 있는 운영체제이다.
  • iOS: 애플의 모바일 운영체제로, 사용자 친화적인 인터페이스와 세련된 디자인, 높은 보안성을 제공한다.
  • 안드로이드: 구글에서 개발한 모바일 운영체제로, 리눅스 커널을 기반으로 하며, 오픈 소스와 다양한 앱 생태계를 지원한다는 특징이 있다.