Computer Science

운영체제 (Operating System) / 역할 / 구조 / 종류

Oscar:) 2024. 4. 10. 16:50

 

 

 

이번 포스팅에서는 CS의 기초라 할 수 있는 운영체제에 대해 알아보겠다.

 

 

 


 

 

운영체제의 정의

 

 

운영체제의 명확한 정의는 전공 서적이나 위키별로 조금씩 다르다.

 

● 네이버 지식백과 : 모든 하드웨어 · 소프트웨어를 관리하는 실행 관리자

● 나무위키 : 사용자가 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스

위키백과 : 하드웨어 · 시스템 자원을 제어하고 프로그램에 대한 서비스를 지원하는 소프트웨어

● 경북대학교 : 응용 프로그램 또는 사용자가 하드웨어를 편리하고 효율적으로 사용하게 하기 위하여

시스템 자원을 관리하고, 여러가지 프로그램이 필요로 하는 공통적인 서비스를 제공하는 소프트웨어

 

 

대부분의 정의를 보면 느끼겠지만, 운영체제를 한 줄 정의하기엔 벅찬 느낌이다.

경북대 강의 개요에 기재된 정의처럼, 길게 설명하자면 어느정도 정리할 수 있다.

 

 

여러 정의를 요약하자면, 운영체제는 시스템 자원 · 하드웨어를 관리하며

사용자와 상호작용하는 프로그램이 필요로 하는 서비스를 제공하는 소프트웨어다.

 

 

*시스템 자원

프로그램이 실행되기 위해 마땅히 필요한 요소를 뜻한다.

컴퓨터의 4가지 핵심 부품(CPU, 주기억장치, 보조기억장치, 입출력장치)을 포함한다.

 

 

 

하드웨어와 사용자 사이의 중간 역할이라기보다는,

하드웨어와 사용자가 실행하는 프로그램 사이의 역할이라 볼 수 있겠다.

 

 

 


 

 

운영체제의 역할

 

 

운영체제 또한 프로그램이다.

사용자가 실행할 프로그램에 필요한 자원을 할당하고,

프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이라 할 수 있다.

 

그렇기에 운영체제 또한 다른 프로그램과 마찬가지로 메모리에 적재된다.

 

 

하지만 운영체제는 위에서 언급했듯이 특별한 프로그램이기에,

메모리 내 커널 영역에 적재된다.

 

커널 영역을 제외한 나머지 영역은 사용자가 이용하는 프로그램이 적재되며

이를 사용자 영역이라 한다.

 

위 그림과 같이, 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에게

자원을 할당하며 이들이 올바르게 실행되도록 돕는 역할을 한다.

 

조금 더 자세히 알아보자.

 

 

 

✅ 메모리 주소 할당

 

메모리에 적재된 모든 프로그램은 주소를 가진다.

 

 

이해가 쉽도록 간단히 번지수로 표현하였다.

 

사용자 영역에 있는 응용 프로그램이 각각 1500번지, 2000번지 등에 적재되었는데,

메모리 주소가 겹치지 않도록 주소를 할당해주는 것이 운영체제의 역할이다.

 

 

 

✅ 메모리 해제

 

응용 프로그램들에게 메모리를 할당했다면, 해제하는 작업 또한 운영체제가 해준다.

더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다고 볼 수 있다.

 

 

 

✅ 시스템 자원 할당

 

응용 프로그램이 실행되려면 시스템 자원이 필요하다.

CPU를 예로 들자면, 어떤 프로그램부터 CPU 자원을 사용할 지,

얼마나 오랫동안 CPU를 사용할 지 등 또한 운영체제가 관리한다.

 

 

 

✅ 하드웨어 관리

 

사실 시스템 자원과 하드웨어를 크게 다르다고 볼 수는 없지만,

대표적인 예로 입출력장치를 생각해 보겠다.

 

엑셀 · 메모장 · 한글 프로그램에서 동시에 프린터 출력을 이용하려는 상황이 생겼다.

이런 상황에서도 운영체제가 동시에 여러 프로그램이 프린터를 사용하지 못하도록 제한하고,

한 프로그램이 프린터를 이용하는 동안 다른 프로그램들은 대기시키는 등 하드웨어 자원도 관리해준다.

 

 

 


 

 

운영체제의 구조

 

 

✅ 커널 (Kernel)

 

커널은 핵이란 의미대로 운영체제에서 가장 핵심이 되는 프로그램이며,

위 '운영체제의 역할' 탭에서 설명한 대부분의 역할을 맡고있다고 볼 수 있다.

 

응용 프로그램이 요청한 처리를 하드웨어에 나누어 처리를 요구하고,

시스템 호출, 메모리 제어 등의 역할도 한다.

 

 

 

✅ 사용자 인터페이스

 

사용자와 컴퓨터가 상호작용할 수 있는 통로이다.

사용자 인터페이스는 다음 2가지로 나뉜다.

 

 

CLI(Command Line Interface)

 

명령어를 기반으로 상호작용할 수 있는 인터페이스다.

대부분 생각하는 터미널을 예로 들 수 있다.

 

 

 

 

● GUI(Graphical User Interface)

 

컴퓨터 바탕화면, 스마트폰 화면 등 그래픽을 기반으로 상호작용할 수 있는 인터페이스다.

 

 

 

 

✅ 이중 모드와 시스템 호출

 

CPU가 명령어를 실행하는 모드를 사용자 모드커널 모드로 구분할 수 있다.

 

● 사용자 모드

운영체제 서비스를 제공받을 수 없는 실행 모드이다.

즉, 커널 영역의 코드를 실행할 수 없다는 뜻이기도 하다.

 

● 커널 모드

운영체제 서비스를 제공받을 수 있는 실행 모드이다.

즉, 커널 영역의 코드를 실행할 수 있다.

 

 

사용자 모드로 실행되는 프로그램이 시스템 자원에 접근해야 하는 상황에는

운영체제에 요청을 보내 커널 모드로 전환해야 한다.

 

이 요청을 시스템 호출(시스템 콜)이라 한다.

 

 

시스템 호출은 일종의 Inturrept이다.

시스템 호출이 발생되면 CPU는 현재 작업을 백업한 뒤 시스템 호출 작업을 수행하고,

다시 돌아와 기존 작업을 이어간다.

 

 

이처럼 일반적인 응용 프로그램은 운영체제를 매우 빈번하게 이용한다.

그 과정에서 위에서 설명했던 시스템 호출을 통해 이중 모드를 오가며 동작하게 된다.

 

 

 


 

 

운영체제의 종류

 

 

공급되는 시장을 기준으로 운영체제를 분류하자면 다음과 같이 4종류로 나눌 수 있다.

 

● 임베디드

이전에는 자체 제작한 펌웨어를 많이 사용했지만,

요즘은 Linux 계열 커널을 많이 사용하는 추세다.

 

● 서버

Unix 계열이 압도적 1위를 차지하고 있으며,

그 대표적인 예로 Linux를 들 수 있다.

 

● 모바일

Android, iOS등에 해당한다.

Linux 기반인 Android가 시장 점유율 1위를 차지하고 있다.

 

● 데스크탑

Windows, Mac OS, Linux 등이 사용되며

Windows가 시장 점유율 1위를 차지하고 있다.

 

 


 

 

공급 시장이라는 기준을 떠나 대표적인 운영체제를 4종류로 이야기할 수 있다.

 

● Unix

운영체제의 근본이라 할 수 있으며, 윈도우를 제외한 거의 모든 운영체제를 포괄하고 있다.

Mac OS, Linux가 Unix 계열에 포함되며 모바일 운영체제인 Android, iOS 또한 Linux 기반이기 때문이다.

 

● Linux

Unix의 클론으로 탄생된 운영체제이며, 세계 스마트폰의 82%, 임베디드 기기의 62%,

슈퍼 컴퓨터 시장의 99%가 Linux로 작동할만큼 영향력이 큰 운영체제다.

 

● Windows

데스크탑을 기준으로 전 세계에서 가장 높은 점유율을 보유하고 있다.

범용성이 주된 목적이기에 사용자 편의성에 초점이 맞춰져 있다.

 

● Mac OS

데스크탑 점유율 2위를 차지하는 OS로, iOS의 기반이 된 운영체제다.

소프트웨어가 별매되지 않고, 하드웨어와 함께 완제품으로만 판매된다.

Windows와 Mac에 대한 비교는 끊임 없이 할 수 있지만, 굳이 여기서는 하지 않겠다.

 

 


 

 

운영체제에 대해 정리해 보았다.

 

 

 

*자료 출처 : [혼자 공부하는 컴퓨터 구조 + 운영체제] 서적 - 강민철 지음