IT보안 학습

운영체제(OS) 총정리

김구티2 2023. 12. 16. 23:31

1. 운영체제(Operating System)의 개념

운영체제란 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 응용 프로그램의 모임이라 할 수 있다. 이런 응용 프로그램은 정의된 응용 프로그램 인터페이스(API)를 통해 서비스를 요청하여 운영체제를 활용한다. 또한, 사용자는 CLI(Command Line Interface) 또는 GUI(Graphical User Interface)와 같은 사용자 인터페이스를 통해 운영체제와 직접적인 상호 작용을 할 수 있다.

 

1.1 운영체제를 사용하는 목적

ㄱ. 처리능력 향상: 시간당 작업 처리량, 평균 처리시간을 개선하기 위함이다. 효율적 관리에 있어 필수적이라 할 수 있다.

ㄴ. 신뢰성 향상: 실패 없이 주어진 기능을 수행할 수 있는 능력을 말한다. 아무리 속도를 향상하더라도 툭하면 기능이 수행되지 않는다면 의미가 없으니 말이다.

ㄷ. 응답시간 단축: 사용자가 시스템에 의뢰한 작업의 반응 시간을 단축하는 것이다.

ㄹ. 자원 활용률 향상: 자원의 공유, 상호 배제를 통해 자원을 효율적으로 활용하는 것이다. 

ㅁ. 가용성 향상: 고장과 오류가 발생해도 운영 영향을 최소화한다.

 

운영체제는 컴퓨터 소프트웨어 및 소프트웨어 개발에 강력한 이점을 제공한다. 운영체제가 없으면 모든 애플리케이션에는 자체 UI는 물론이거니와, 디스크 저장소, 네트워크 인터페이스 등과 같은 기본 컴퓨터의 모든 하위 수준 기능을 처리하는 데 필요한 포괄적 코드가 필요할 것이다. 사용 가능한 방대한 하드웨어들을 고려한다면, 이는 모든 애플리케이션의 크기를 엄청나게 부풀리는 일이 될테고, 소프트웨어 개발은 정말이지 어려운 일이 될 것이다.

 

각 애플리케이션이 동일한 리소스와 서비스에 동일한 방식으로 액세스하는 한, 해당 시스템 소프트웨어, 즉, 운영체제는 거의 모든 수의 애플리케이션에 서비스를 제공할 수 있게 된다. 이를 통해 애플리케이션을 개발하고 디버깅하는 데 필요한 시간과 코딩의 양을 크게 줄이는 동시에 사용자가 공통적이고 잘 이해되는 인터페이스를 통해 시스템 하드웨어를 제어, 구성 및 관리할 수 있도록 보장한다.

 

일단 설치되면 운영체제는 방대한 장치 드라이버 라이브러리를 사용하여 운영체제 서비스를 특정 하드웨어 환경에 맞게 조정한다. 따라서 모든 응용 프로그램은 저장 장치에 대한 공통 호출을 수행할 수 있지만, 운영체제는 해당 호출을 수신하고, 해당 드라이버를 사용하여, 해당 호출을 특정 컴퓨터의 기본 하드웨어에 필요한 작업으로 변환한다. 또한, 현재의 운영체제는 프로세서를 포함한 다양한 하드웨어를 식별, 구성 및 관리하는 포괄적인 플랫폼을 제공한다. 결국 운영체제는 선택이 아닌 필수의 존재라고 볼 수 있으며, 선택을 한다는 것은 운영체제 중에서 무슨 운영체제가 우리에게 적합한지를 고르는 것일 뿐이다.

 

2. 운영체제의 기능

운영체제는 3가지의 필수 기능을 제공한다. 첫째, CLI 또는 GUI를 통해 UI를 제공한다. 둘째, 애플리케이션을 실행하고 관리한다. 셋째, 일반적으로, 표준화된 API를 통해 시스템 하드웨어 리소스를 식별하고 해당 애플리케이션을 공개한다.

 

모든 운영체제에는 사용자와 관리자가 운영체제와 기본 하드웨어를 설정 및 구성하고 문제를 해결하기 위해 그 운영체제와 상호 작용할 수 있는 UI가 필요하다. 그 UI의 대상으로는 CLI와 GUI라는 두가지 큰 틀이 있다. CLI는 사용자가 기존의 키보드를 이용하여 특정 작업과 관련된 명령, 파라미터 및 매개변수를 입력하는 텍스트 기반 인터페이스를 제공한다. 세분화되고 반복적인 일련의 명령을 지속적으로 처리해야 하는 작업의 경우 CLI가 자주 사용된다 볼 수 있다. 반면, GUI는 사용자가 터치 패드, 터치 스크린, 마우스 장치와 같은 장치가 전달하는 제스처에 의존하는 아이콘, 또는 기호를 기반으로 시각적 인터페이스를 제공한다. 우리가 보통 프로그램을 실행할 때, 마우스 우클릭으로 따닥, 하며 클릭을 한다. GUI는 이렇게 주로 파일과 응용 프로그램을 조작하는 경우에 자주 사용된다고도 볼 수 있다. 

 

운영체제는 모든 애플리케이션의 시작과 관리를 처리한다. 이는 일반적으로 여러 프로세스 또는 스레드를 시분할하는 등 일련의 동작을 지원하여 다양한 작업이 가능한 프로세서의 시간을 공유할 수 있도록 한다. 또한, 운영체제는 여러 프로그램을 동시에 실행할 수 있는 멀티태스킹 환경에서 다른 애플리케이션을 전환하기 전에 각 애플리케이션에 대해 어떤 순서로 얼마나 많은 시간을 허용하는지 결정한다. 이런 배치 작업을 통해 작업 관리를 수월하게 만들고, 병렬 처리를 제공할 수 있는 컴퓨터에서는 프로그램을 한 번에 2개 이상의 프로세서에게 실행되도록 분할하는 방법도 진행할 수 있다. 또한, 운영체제는 애플리케이션이 운영체제와 하드웨어 기능을 황룡할 수 있도록 해주는 API도 지원한다. 예를 들어, 윈도우 API는 프로그램이 키보드나 마우스로부터 입력을 얻고, 대화창이나 버튼 같은 GUI 요소를 만들고, 저장 장치에 파일을 읽고 쓰는 것 등을 가능케 한다.

 

2.1 운영체제의 주요 자원 관리 기능

주요 자원 관리자 설명
프로세스 관리 프로세스 스케줄링 및 동기화 관리
프로세스 생성과 제거, 시작과 정지, 메시지 전달 동의 기능
기억장치 관리 프로세스에 메모리 할당 및 회수 관리
주변장치 관리 입/출력 장치 스케줄링 및 점유 관리
파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리

 

3. 운영체제의 분류

분류 설명
Batch Processing System 유사한 작업을 모아 일괄처리하지만, 긴 실행 시간을 필요로 한다.
하드웨어의 효율적 이용은 가능하나, 실시간 처리는 미흡하다.
Multi Programming System CPU 가동을 극대화하여 작업이 허비되는 것을 최소화 한다.
작업들을 스케줄링에 의해 수행하는 대신, 정교한 메모리 관리 및 스케줄링이 필요하다.
Time Sharing / Multi-tasking System Multi Programming의 논리적 확장으로 볼 수 있다.
사용자와 시스템 간의 Interactive한 서비스다.
Multi Processing System 가용성 증대를 위해 여러 개의 CPU로 다중작업을 구현한 시스템이다.
Real-time System 시스템 서비스 요청이 발생할 때마다 시간에 제약을 두어 즉시 처리하고 결과를 출력한다.

위의 표에서 하단으로 갈수록 운영체제가 발달된 과정으로 이해할 수도 있다.

 

3.1 운영체제 유형 및 예시

ㄱ. 범용 운영체제

범용 OS는 다양한 하드웨어에서 다양한 애플리케이션을 실행할 수 있도록 고안된 운영체제라 할 수 있다. 다양한 요구를 만족할 수 있어야 범용이라고 할 수 있을 테니 말이다. 이를 통해 사용자는 하나 이상의 애플리케이션이나 작업을 동시에 수행할 수 있다. 이 범용 OS는 데스크탑 및 노트북 등에서 찾아볼 수 있는 체제로, 데이터 베이스, 웹 브라우저, 게임에 이르기까지 여러 애플리케이션을 구동할 수 있는 것이다. 우리가 흔히 들어본 것들 대부분이 아마 이 범용 OS에 속하지 않을까 싶다. 대표적인 건 윈도우일 것이다. 윈도우는 85년에 이후 사실상 가정용과 업무용의 표준이라 할 수 있다. 스타벅스에서 보기 쉬운 맥 OS도 이제는 윈도우 다음으로 일반 사용자에 친숙한 시스템이 되었다. 마지막으로 작업자들에게는 너무도 친숙한 리눅스, 유닉스가 있을 것이다.

 

ㄴ. 모바일 운영체제

모바일 운영체제는 스마트폰, 태플릿과 같은 모바일 컴퓨팅 및 통신 중심의 기기의 요구 사항을 수용하도록 설계된 것이다. 모바일 장치는 일반적으로 기존 PC에 비해 제한된 리소스를 제공한다. 크기가 작으니 제한적일 수밖에 없다. 그렇기에 모바일 운영체제는 자체 리소스 사용을 최소화하는 것이 주된 목표 중 하나가 된다. 그래서 동시에 장치에서 실행되는 하나 이상의 애플리케이션에 적절한 리소스를 보장하기 위해 크기와 복잡성을 가능한 최소화하려는 시도를 하게 된다. 효율성이 핵심적인 요소라 할 수 있는 것이다. 애플 iOS와 구글 안드로이드가 대표적인 모바일 운영체제의 예시라 할 수 있다.

 

ㄷ. 내장형 운영체제

모든 컴퓨팅 장치가 범용인 것은 아니다. 우리가 사용하는 컴퓨터, 노트북 말고, ATM이나 비행기 시스템, POS 단말기, IoT 기기 등의 여러 장치에는 그 장치에 맞는 운영체제가 있는 법이다. 내장형 운영체제의 주요 특징은 연결된 컴퓨팅 장치가 한 가지 주요 작업만 수행하므로, OS가 크게 단순화되어 성능과 복원력에 집중한다. 모든 상황에서 지속적인 작동이 주된 목표 중 하나이기 때문에 OS는 충돌을 가능한 누르고, 빠르게 실행되어야 하며, 오류 처리를 가능한 완벽하게 해내야 한다. 리눅스가 이 내장형 운영체제에 쓰이기도 한다.

 

ㄹ. 네트워크 운영체제

네트워크 운영체제(NOS)는 LAN 상에서 동작하는 장치들 간의 통신을 용이하게 하기 위한 특수화된 운영체제라 할 수 있다. NOS는 네트워크 패킷을 생성, 교환, 분해하기 위해 네트워크 프로토콜을 이해하는 데 필요한 통신을 제공한다. 그러나 여러 OS의 발달로, 다른 OS에서 네트워크 통신을 처리하는 경우가 늘어나면서 NOS의 사용은 줄어들게 되었다. 그래도 여전히 라우터, 스위치, 방화벽과 같은 일부 네트워킹 장치에 사용되고 있다. RouterOS나 ZyNOS가 그것의 예시가 될 것이다.

 

ㅁ. 실시간 운영체제

컴퓨팅 장치가 일정하고 반복 가능한 시간 제약 내에서 실시간으로 상호 작용해야 할 때, 장치 제조업체는 실시간 운영체제(RTOS) 사용을 선택할 수 있을 것이다. 예를 들어, 산업 제어 시스템은 불규칙적으로 뻗어나가는 공장이나 발전소의 작동을 지시할 수 있다. 이러한 시설은 무수히 많은 센서로부터 신호를 생성하고 또한 밸브, 모터 및 무수한 다른 장치를 작동시키기 위해 신호를 보낼 것이다. 이러한 상황에서 산업 제어 시스템은 변화하는 실시간의 조건에 빠르고 예측 가능하게 반응해야 하며, 그렇지 않으면 큰 문제를 초래할 수도 있을 것이다. RTOS는 버퍼링, 처리 지연 등 어떠한 지연 없이 작동해야 하는 것을 목표로 하며, 이는 다른 유형의 운영체제에서도 허용된다. RTOS의 두 가지 예로는 FreeRTOS와 VxWorks을 말할 수 있다.

 

위에서 말한 운영체제는 절대적으로 구분되는 개념은 아니다. 리눅스만 하더라도 두 운영체제에서 쓰일 수 있다고 언급했으니 말이다. 몇몇 운영체제는 다른 운영체제의 특성을 공유할 수 있다는 것을 이해해야 한다. 

728x90

'IT보안 학습' 카테고리의 다른 글

프로세스 관리 총정리  (0) 2023.12.20
Sendmail 보안 총정리  (0) 2023.12.19
입출력 인터페이스 총정리  (0) 2023.12.15
메모리 시스템 총정리  (0) 2023.12.14
이메일 보안 기법 총정리  (0) 2023.12.13