관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

운영체제 시작하기 1 - 운영체제를 알아야 하는 이유 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

운영체제 시작하기 1 - 운영체제를 알아야 하는 이유

huenuri 2024. 10. 17. 07:37

컴퓨터 구조 공부가 끝나고 이제 운영체제를 공부할 시간이 되었다. 사실 컴퓨터 구조가 너무 어려워서 운영체제는 나중에 공부할까도 생각했지만 그렇게 되면 언제 다시 하게 될지 몰라 내친김에 운영체제까지 공부해 보기로 했다.


 

 

우리가 흔히 사용하는 데스크톱 컴퓨터나 노트북, 스마트폰에는 모두 운영체제가 설치되어 있다. 컴퓨터 부품들은 운영체제라는 특별한 프로그램의 지휘하에 작동한다.

이번 절에서는 가벼운 마음으로 운영체제가 무엇인지 알아보고, 개발자들이 운영체제를 알아야 하는 이유에 대해 학습해 보겠다.


 

 

 

 

 

운영체제란

모든 프로그램은 하드웨어를 필요로 한다. 예를 들어 1 + 2를 계산하는 프로그램은 cpu를 필요로 하고, 이미지를 하드 디스크에 저장하는 프로그램은 하드 디스크를 필요로 한다.

이때 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 줄여서 자원이라고 한다.

지금까지 학습한 CPU, 메모리, 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품들을 모두 자원이라고 볼 수 있다. 

 

 

 

 

 

운영체제는 인터넷 브라우저, 게임과 같은 프로그램이다. 그래서 운영체제 또한 여느 프로그램과 마찬가지로 메모리에 적재되어야 한다. 

 

 

다만 운영체제는 매우 특별한 프로그램이기에 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다. 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역이라고 한다. 즉, 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 돕는다.

 

일반적으로 메모리에는 여러 개의 응용 프로그램이 사용자 영역에 적재되어 실행된다. 가령 메모리 이와 같은 영역이 실행 중이라고 해보자. 그런데 누가 이 프로그램들을 메모리에 적재했을까? 위 그림을 보면 워드 프로세서, 인터넷 브라우저, 메모장은 각각 2000번지, 1500번지, 1000번지에 적재되었다. 메모리 주소가 겹치지 않도록 적당한 공간에 프로그램들을 적재해 준 건 누구였을까? 바로 운영체제이다.

 

 

 

 

운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다. 또한 이 세 개의 응용 프로그램이 실행되려면 CPU가 반드시 필요하다. 그렇다면 어떤 프로그램부터 CPU를 사용하게 할까? 얼마나 오랫동안 CPU를 이용하게 할까? 이 문제 또한 운영체제가 해결한다.

 

 

 

어느 한 프로그램이 CPU를 독점하면 다른 프로그램들은 올바르게 실행될 수 없기 때문에 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.

 

 

 

 

이번에는 워드 프로세서와 메모장이 동시에 동일한 프린터를 이용하려는 상황을 생각해 보자. 운영 체제는 동시에 두 개의 프로그램이 프린터를 사용하지 못하도록 막고, 하나의 프로그램이 프린터를 이용하는 동안 다른 프로그램은 기다리게 만들어 프린터 자원을 관리한다.

 

 

 

 

이처럼 운영체제는 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리하는 역할을 맡는다.


 

 

 

 

운영체제는 흔히 정부에 비유되기도 한다. 한 나라의 정부는 땅, 인력, 돈 등 국내 자원을 효율적으로 배분하고, 국민들이 지켜야 할 규칙을 만들어 나라 전체를 관리한다. 운영체제도 마찬가지다. 

정부에 기획재정부, 과학기술정보통신부, 외교부와 같이 역할별로 여러 부서가 나누어져 있는 것처럼 운영체제 또한 관리할 지원별로 기능이 나누어져 있다. 예를 들어 운영체제의 어느 한 부분에서는 CU를, 어느 한 부분에서는 메모리를, 어느 한 부분에서는 하드 디스크를 관리한다.


 

 

 

 

운영체제를 알아야 하는 이유

아무리 간단한 프로그램이라도 운영체제가 없다면 하드웨어를 조작하는 코드를 개발자가 모두 직접 작성해야 하기 때문이다.

 

 

C언어의 prinf 함수도 사실은 운영체제의 도움을 받아서 실행되고 있는 것이다. 파일을 생성하고 싶으면 직접 코드를 만들어서 응용 프로그램을 작성하는 것이 아니라 운영체제에게 부탁하면 된다.

 

 

 

 

 

개발자가 만든 프로그램은 결국 하드웨어가 실행하고, 그 하드웨어를 조작하는 프로그램이 운영체제이다.

 

그리고 운영체제는 딱딱한 하드웨어가 아닌 프로그램이기 때문에 함께 대화할 수 있다. 운영체제는 현재 하드웨어의 상태는 어떠한지, 작성한 코드가 어떻게 실행되었는지, 하드위어 상에 어떤 문제가 있었는지 등을 우리에게 상세히 알려준다. 이를 통해 개발자는 문제 해결의 실마리를 찾을 수 있다.

즉, 운영체제를 깊이 이해하면 운영체제가 자신에게 건네는 말을 제대로 이해할 수 있고, 운영체제에 제대로 명령할 수 있게 된다. 그리고 결과적으로 하드웨어와 프로그램을 더 깊이 이해할 수 있다.

 

 

 

 

우리가 작성한 소스 코드를 하드웨어가 제대로 실행하지 못하면 운영체제는 위와 같은 오류 메시지를 띄어준다. 프로그래밍 문법만 학습한 사람들은 운영체제의 메시지를 이해하기 어렵고, 문제를 진한다고 해결하기도 어려울 것이다.

뛰어난 개발자 중 운영체제 지식을 그저 고루한 이룬으로 치부허가나 알 필요가 없다고 말하는 사람은 거의 없다.

 

 

 

다수의 기업에서 운영체제에 대한 이해를 필수적인 기초 역량으로 요구하고, 채용 과정에서 회사에서 기술 면접 등을 통해 검증하는 것도 이러한 이유 때문이다.


 

 

 

 

단원 마무리하기

 

 

운영체제는 사용자 영역이 아니라 커널 영역에 적재된다. 사용자 명역에는 응용 프로그램이 적재된다.

 


 

 

 

학습을 마치고

오늘 새벽에 1시간 반 동안 이 공부를 진행했다. 정말 하기 싫은 마음과 싸우며 하나는 마쳐보자 하면서 공부를 이어갔다. 한 달에 하루 정도 공부를 쉬는 날이 있는데 오늘은 아마 그런 날이 될 수도 있을 것 같다. 9월에도 첫 주 목요일쯤 결석하며 놀았던 날이 있었다. 10월에도 하루쯤 그런 날을 보낼 생각이다. 어쨌든 오늘은 수업에 결코 나가고 싶지가 않다.

그래도 공부는 집에서라도 이어갈 생각이다.

 

운영체제를 배워야 하는 이유에 대해서 공부할 수 있는 좋은 시간이었다.