본문 바로가기

컴퓨터 공학/운영체제

2. 운영체제의 개념, 주요 기능, 구조

운영체제의 개념과 시스템 구조


이번 글부터 본격적으로 운영체제 공부를 시작해봅시다!

이번 글에서는 운영체제의 개념, 주요 기능, 그리고 컴퓨터 시스템의 구조에 대해 설명하겠습니다.


운영체제의 개념

  • Wikipedia

위키에서는 운영체제를 다음과 같이 정의합니다. 

컴퓨터 하드웨어와 소프트웨어 자원을 관리하고, 컴퓨터 프로그램 (어플리케이션)을 위한 일반적인 서비스를 제공하기 위한 시스템 소프트웨어로 간단하게는 프로그램(어플리케이션)과 컴퓨터 하드웨어 사이에서 매개체 역할을 하는 소프트웨
  • 즉, 운영체제는 호스트로서 하드웨어 자원들을 관리하며 게스트인 어플리케이션이 하드웨어의 세부사항을 모르고도 이를 사용할 수 있도록 서비스를 제공하는 것입니다.

  • 운영체제 시장 (2019.03 기준)

많은 사람들에게 익숙한 UI를 제공하는 MS Windows가 82.74%로 운영체제 시장의 대부분을 점유했습니다.

안정성 및 심플하면서도 감각적인 디자인으로 많은 사랑을 받는 MacOS가 13.23%로 점유율 2위를 차지하고 있습니다.

Linux는 컴퓨터 전공자가 아닌 이상 많이 낯선 운영체제 인데요 대부분의 서버 시스템에서 사용하고 있는 운영체제로 시장 점유율은 1.57%입니다. 

* 본 수업은 리눅스 운영체제를 기준으로 진행되었습니다. 

 


운영체제의 주요 기능

 

  • UI (User Interface)

하드웨어와 소프트웨어 사이에서 사용자가 소프트웨어를 통해 하드웨어 자원을 요청하고 사용할 수 있도록 하기 위해서 운영체제는 유저 인터페이스를 제공합니다. 그 대표적인 종류는 다음과 같습니다.

  • CLI (Command Line Interface)
  • GUI (Graphical User Interface)
  • EUCI (End-User Comfortable Interface), HCI (Human Computer Interface), UX (User Experience) 
  • Resource Management 

운영체제는 컴퓨터 좋은 성능 및 효율성을 유지할 수 있도록 하드웨어 자원을 관리합니다. 하드웨어 자원으로는 프로세서, 메모리, 파일, 입출력 장치 등이 있습니다. 각 자원을 관리하는 역할을 간단히 설명하자면 다음과 같습니다.

  • 메모리 관리는 멀티 유저, 멀티 태스킹 시스템에서 메모리 할당 및 회수, 메모리 용량 파악 및 관리, 메모리 보호 기법 등에 대한 기능입니다.
  • 파일 관리는 사용자가 접하는 파일 저장 구조와 파일이 컴퓨터에 물리적으로 저장되는 자료 구조를 효율적으로 맵핑 하는 방법에 대한 기능입니다.
  • 보조 저장 장치 관리는 컴퓨터 자원 내부에 존재하는 메모리 이외에 보조적으로 사용하는 저장 장치를 관리하는 기능으로 디스크 관리, 디스크 스케줄링에 관한 내용인데 이 운영체제 수업에서는 다루지 않았습니다.
  • 모든 입출력 장치들은 전부 운영체제가 관리하는 것들로 프로세스가 절대로 직접 접근할 수 없는 영역이기 때문에 운영체제의 역할이 아주 중요한 영역입니다.
  • Process Management

프로세스는 컴퓨터에서 실행되는 프로그램을 의미하는 것입니다. 운영체제는 프로세스를 생성 또는 삭제하는 기능을 제공합니다. 사용자가 특정 프로그램 실행 명령을 하면 해당 명령을 처리하기 위한 프로세스를 생성하여 해당 프로세스로 하여금 프로그램을 실행하도록 합니다. 프로그램 실행이 종료되면 운영체제는 해당 프로세스를 시스템에서 삭제합니다. 

또한 운영체제는 프로세스에 컴퓨터 자원을 할당하거나 반납하는 기능을 제공합니다. 컴퓨터 자원은 한정되어 있기 때문에 병렬 프로세스 시스템에서 이를 공정하면서도 효율적으로 여러 프로세스에 할당 및 반납하는 기능은 시스템 전체 성능에 아주 큰 영향을 미칠 수 있습니다. 뿐만 아니라 프로세스 동기화, 교착상태 처리 등의 기능을 제공합니다.

* 추후에 프로세스 관리 기법에 추점을 맞춘 글을 작성할 예정입니다. 

  • CPU Management

프로세서라고도 하는 CPU는 아주 핵심적인 컴퓨터 하드웨어 자원입니다. 프로세스를 실행시키기 위해서는 CPU를 할당받아야 합니다. 하지만 CPU는 한정된 자원이기 때문에 이를 여러 개의 프로세스들이 번갈아 가며 함께 사용해야 합니다. 그래서 여러 개의 프로세스가 어떤 순서로 CPU를 할당받아 사용하게 되는지가 성능에 중요한 영향을 미칩니다. 이렇게 CPU를 사용할 프로세스 순서를 조정하는 것을 '프로세스 스케줄링'이라고 합니다. 프로세스 스케줄링 역시 운영체제의 역할입니다. 

프로세스 스케줄링이 하나의 CPU를 여러 개의 프로세스가 공유하는 상황에서 필요한 기능이라면 Processor(CPU) Assignment는 여러 개의 CPU와 하나의 프로세스가 존재하는 경우 어떤 CPU가 해당 프로세스를 처리하는 것이 가장 효율적인지 결정하여 할당하는 것을 말합니다. 이것 역시, 운영체제의 역할입니다. 

  • Security and Protection

운영체제는 네크워킹 기능을 하기도 해서 컴퓨터 자원의 보호와 보안 등의 기능을 제공하기도 합니다. 하지만 이 주제는 '정보보호'라는 또 다른 교과목에서 다룰만큼 중요한 내용이므로 운영체제 수업에서 다루지 않았습니다. 


운영체제의 구조

출처: 성균관대학교 엄영익 교수님 <운영체제> 수업 교안

다음 그림은 컴퓨터 시스템의 구조를 도식화한 것입니다. 

앞서 말했듯이, 컴퓨터 시스템은 크게 소프트웨어와 하드웨어로 구분됩니다. 그리고 이 둘을 매개하는 것이 바로 운영체제입니다. 

사용자가 수행하고자 하는 태스크를 나타내는 프로세스들은 대부분 컴퓨터 하드웨어 자원을 필요로 합니다. 이를 할당하고 반납하고, 스케줄링하는 것이 가운에 빨간색으로 표시한 부분의, 운영체제 입니다. 

  • Kernel

운영체제에는 커널이라는 영역이 존재합니다. 커널은 운영체제의 핵심으로 시스템의 모든 것을 완전히 통제합니다. 위에서 설명한 운영체제의 주요 기능 대부분을 커널이 서비스하는 것이라고 볼 수 있습니다. 

커널==운영체제 라고 생각해도 될 정도로 중요한 역할을 하는 커널은 운영체제에서 자주 사용하는 기능을 모두 담당하기 때문에 부팅 후에는 항상 메모리에 상주하고 있습니다. 

  • Utilities

유틸리티는 커널처럼 메모리에 상주하는 소프트웨어가 아니라 디스크에 있다가 필요시에만 가져오는 프로그램입니다. 

  • Booting

부팅은 bootstrap program이 운영체제 이미지를 디스크에서 올려주면서 초기 필요한 프로그램들을 적재하는 과정으로 커널을 메모리에 적재시킵니다. CPU 레지스터, 디바이스 컨트롤러, 메모리 컨트롤러 등을 시스템에서 초기화 시킵니다. 

  • System Call Interface

시스템 콜 인터페이스는 프로세스가 하드웨어에 직접 접근하여 필요한 기능을 할 수 있게 해주는 기능을 제공하는데, 시스템 콜 역시 중요한 주제로 다음 번에 보다 자세히 설명하도록 하겠습니다. 


이번 글에서는 운영체제의 개념, 주요 기능, 구조에 대해 알아보았습니다.

다음 글에서는 운영체제 공부를 위해 필요한 사전 지식을 알아가는 시간을 갖도록 하겠습니다.

감사합니다 :)


References

  • 성균관대학교 소프트웨어대학 엄영익 교수님 <운영체제> 수업