요즘 PC를 사게되면 OS(운영체제)가 대부분 설치되어 있을 것입니다.

만약, 이 PC에 운영체제가 없다면 어떻게 될까요?

생각해볼 수 있는 것은 메인 메모리(Main Memory)에 불필요한, 쓸데없는 값들이 저장되어 있을 것이며, 전혀 제어할 수 없는 야생마 같은 상태가 될 것입니다.

컴퓨터의 하드디스크(HDD)에서 실행하고자 하는 프로그램을 가져오는데, 이 역할을 운영체제가 하게 됩니다.

그렇기 때문에 운영체제가 없다면? 실행할 수 없게 되는 것입니다.

또한, 현대의 컴퓨터들은 여러 개의 프로그램들을 실행할 수 있는데, 이 역할 또한 운영체제가 담당합니다. 하드디스크에 파일 저장 또한 운영체제가 담당합니다.

즉, 운영체제가 없다면? 컴퓨터를 사용할 수 없고 전혀 제어가 안되는 폭주하는 야생마 상태가 될 수 있습니다.


그래서 운영체제(Opertaing System)라는 것은 무엇일까요?

제가 전에 컴퓨터 구조에 대해서 설명했을 때, CPU, 메모리, 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품들에 대해서 설명했었는데, 이를 시스템 자원 또는 자원이라고 볼 수 있습니다.

프로그램이 실행되기 위해 반드시 이러한 자원을 필요로 하는데, 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램, 소프트웨어가 바로 운영체제입니다.

즉, 운영체제가 무엇인지 요약하자면 컴퓨터의 하드웨어를 관리하고, 성능 향상, 사용자에게 편의성 제공 하는 역할을 하는 등 컴퓨터 하드웨어를 관리하는 소프트웨어라고 할 수 있습니다.

또한 자원들을 효율적으로 할당하는 역할도 하고 있습니다.

여기서, 컴퓨터에서 운영체제를 어떻게 시동하는지 궁금할 것입니다.

부팅(Booting)

컴퓨터가 운영체제를 어떤 식으로 시동하는지 간단히 설명하겠습니다.

PC의 전원을 키게 되면, 제일 먼저 CPU는 메모리(ROM) 부분의 코드를 읽어옵니다. 이 안에는 POST(Power-On Self-Test) 가 들어있습니다.

POST는 Power-On Self-Test 뜻 그대로 컴퓨터가 환경설정이 제대로 되어있는지 테스트를 한다는 의미입니다. 이 POST가 먼저 실행되면서 CPU는 메모리의 데이터가 얼마나 있는지, HDD의 용량은 어떤지, 키보드가 제대로 작동하는지 등을 테스트를 합니다.

그 이후, 부트로더(Boot Loader)가 실행됩니다.
HDD 안에는 OS가 설치되어 있는데, 이 OS를 메모리로 가져오는 역할을 하는게, 부트로더의 역할입니다.

OS가 메모리로 적재되게 되면, 메모리(ROM)의 역할은 끝나고 OS의 초기화면이 나타나게 될 것입니다.

이 의미는 OS가 메모리에 상주하면서 모든 명령을 받아들일 준비를 했다는 것으로 봐도 좋습니다.


결국 운영체제는 관리 프로그램이라고 할 수 있습니다.

무엇을 관리하는 것일까요?

바로, 하드웨어를 관리합니다.

위의 설명대로 하드웨어라는 영역을 운영체제가 감싸서 관리하고 있습니다.

OS에서 실제로 관리하는 역할을 하는 부분은 커널(Kernel)이 합니다.

커널이라는 것은 핵심이라는 의미로 가장 중요한 부분입니다.

OS의 또 다른 부분으로 명령 해석기(Shell)도 존재합니다. Shell이라는 것은 조개 껍질이라는 의미로 OS의 껍질 부분을 의미합니다.

예를 들어, 바탕화면에서 어떤 프로그램을 실행시키기 위해 마우스 커서를 이용하여 아이콘을 더블클릭하여 실행하는 명령을 내릴 수 있도록 만들어 주는 것을 OS의 껍질 부분인 Shell의 역할입니다.

정리하자면 OS의 바깥 부분에 위치하여 사용자의 명령을 받아들여 그 명령을 해석하여 해당되는 명령을 실행시켜주는 것을 Shell 이라고 합니다.

즉, OS = Kernel + Shell 입니다.

이중모드와 시스템 호출

OS는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호합니다.

왜냐하면, 마음대로 접근하게 되면 컴퓨터 전체에 큰 악영향을 끼칠 수 있습니다.

그래서, 프로그램이 자원에 접근하기 위해서는 OS에게 도움을 요청합니다. 이를 이중 모드로써 구현됩니다.

이중 모드라는 것은 CPU가 명령어를 실행하는 모드를 크게 사용자 모드커널 모드로 구분하는 방식입니다.

사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드입니다. 일반적으로 응용 프로그램은 기본적으로 사용자 모드로 실행됩니다. 사용자 모드로 실행되는 응용 프로그램은 커널 영역의 코드를 실행할 수 없기 때문에 자원에 접근할 수 없습니다.

커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드입니다. CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있습니다. OS는 커널 모드로 실행되기 때문에 자원에 접근할 수 있습니다.

사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 합니다. 이때, 운영체제 서비스를 제공받기 위한 요청을 시스템 호출(System Call, 시스템 콜)이라고 합니다.

사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있습니다.

이 시스템 호출을 소프트웨어적인 인터럽트입니다.

이상으로 운영체제에 대해서 간단히 알아봤습니다.

참고

  • KOCW - 운영체제, 양희재 교수님
  • 혼자 공부하는 컴퓨터구조 + 운영체제
profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글