Posts OS 01. 운영체제의 구조
Post
Cancel

OS 01. 운영체제의 구조

패스트 캠퍼스 컴퓨터 공학을 들으며 정리한 내용입니다.


1. 운영체제?

Operating System

사용자가 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스로, 대표적으로 Window, Linux, Mac 같은 것들이 여기 포함된다.

OS는

  • 시스템 자원을 관리한다.
  • 사용자와 컴퓨터간의 커뮤니케이션을 지원한다. (CLI, GUI 제공)
  • 컴퓨터 하드웨어와 응용 프로그램을 제어, 관리한다.

대표적으로 이런 세가지 일을 한다.



2. 운영체제의 구조?

운영체제는 쉽게 보면 아래의 그림처럼 생겼다.

운영체제

위의 두 줄 Application, Shell은 일반적인 사용자가 볼 수 있는 부분이다.

그리고 아래의 Library, System Call 등등..은 OS와 관련된 부분이다.

그럼 운영체제가 어떻게 사용자의 요구를 받아 응용프로그램을 실행시키는지 알아보자.



2-1. 쉘

사용자가 응용프로그램을 실행하면 운영체제는 자원을 적절히 분배하여 프로그램을 실행시켜준다.

위의 문장을 간단하게 보면 우리는 원하는 프로그램이 있다면 마우스로 두번 클릭하는 것만으로 실행한다.

또는 CLI를 이용하면 명령어를 입력하여 실행을 할 수도 있다.

이 때, 우리가 프로그램을 실행시킬 수 있고, 서비스를 조작할 수 있도록 해주는 경계선, 화면을 인터페이스라고 하고, 해당 인터페이스를 쉘(shell)이라고 한다.

Shell은 해석하면 ‘껍데기’인데 말 그대로 운영체제를 둘러싸고 있어, 사용자는 쉘을 통해서만 운영체제에 일을 시키고, 결과를 받을 수 있다.

그러면 우리가 쉘이라는 인터페이스를 통해 운영체제에 명령을 내리는 것과 반대로, 응용프로그램은 어떤 인터페이스를 통해서 운영체제와 소통을 할까?



2-2. API

운영체제는 응용 프로그래밍과도 소통을 위하여 인터페이스를 제공하는데, 이것이 API(Application Programming interface)이다.

API를 보면 함수를 사용할 수 있도록 설명서, 명세서가 적혀져 있는데, 응용프로그램이 API에 적혀있는 함수를 운영체제에 사용하면, 운영체제는 함수를 보고 시킨 일을 수행한다.

예를들어, JAVA API를 살펴보면 응용프로그램이 운영체제에게 부탁할 수 있는 작업들이 적혀있다.

이제 우리는 응용프로그램을 만들 때 API에 적힌대로 함수를 그대로 따라 적기만 하면 된다.

그런데 이제 또 궁금한점이 생긴다.

컴퓨터는 0과 1만 알아들을 수 있는 기계아닌가? 운영체제는 어떻게 영어로 적힌 API를 보고 컴퓨터에게 전달할까?



2-3. System Call과 커널

API는 운영체제가 응용프로그램을 위해 제공하는 문서이다.

그리고 개발자들은 그 문서를 보고 응용프로그램을 작성한다.

그런데 또 컴퓨터는 0과 1만 알아들을 수 있다.

그렇다는것은 운영체제가 API를 통해 어떤 일을 해서 컴퓨터도 알아들을 수 있게 해준다는 것이 된다.

운영체제가 시스템 자원에 어떻게 명령을 내리고 일을 할 까?

일단 운영체제는 커널(kernel, 알맹이)이라는 곳에서 시스템 자원을 관리하고, 명령을 내리고, 일을 한다.

그리고, 시스템 콜(System Call, 시스템 호출)이라는 것을 통해 커널과 대화하며 시스템 자원을 관리하는 것이다.

그래서 각 언어별 API를 보면 시스템 콜을 호출하는 것을 찾을 수 있을것이다.



2-4. 사용자모드? 커널모드?

그리고 2-3에서 말했듯, 운영체제는 커널(알맹이)에서 시스템 자원을 관리하고 있다.

말그대로 껍데기 속의 중요한 알맹이인데, 이 커널도 여러 부분으로 나뉘어 있다.

제조사마다 커널의 생김새는 다르지만, 커널의 안으로 들어갈수록 중요하고, 특별한 권한이 필요하다.

커널

위의 그림을 보면 커널의 제일 겉부분 Ring3은 사용자 모드로 누구나 쉽게 사용할 수 있다.

하지만 가장 안쪽의 Ring0은 커널모드로 특정 권한이 없으면 사용할 수 없다.

커널모드는 가장 중요한 CPU를 사용할 때 사용하는 모드로, 커널모드를 실행하려면 반드시! 시스템 콜이 필요하다.




3. 정리

위의 내용을 다시 정리해 보자면

  1. 운영체제는 응용프로그램, 시스템 자원을 관리한다.

  2. 운영체제와 사용자는 쉘 인터페이스를 통하여 대화한다.

  3. 운영체제는 API를 통하여 응용프로그램과 대화한다.

  4. 운영체제는 커널에서 시스템 자원을 관리한다.

  5. 운영체제는 시스템 콜을 통하여 시스템 자원(커널)과 대화한다.

  6. 커널에는 사용자모드, 커널모드가 있는데, 커널모드를 위해서는 반드시 시스템 콜이 필요하다.

로 간단히 정리할 수 있다.

결론은 API, 쉘, 커널, 시스템콜 모두 운영체제가 다른 것들과 대화하는데 필요한 인터페이스라는 것이다.

This post is licensed under CC BY 4.0 by the author.

Linux 01. CentOS 7에 Apache 설치하기

Network 01. Web과 WAS?