운영체제(Operating System)
운영체제는 유저와 하드웨어 사이에 존재하여 인터페이스를 제공하는 것으로, 운영체제 없이도 하드웨어에 접근할 수는 있지만 매우 복잡하고 많은 기술을 사용해야하기 때문에 어렵다
따라서 운영체제의 일차적인 목표는 편리함 이고, 두 번째 목표는 효율성이다
운영체제는 컴퓨터에 있는 각각의 다른 요소들을 관리하고 상황에 따라 다른 요소들을 각각의 다른 유저에게 적절히 할당한다.
예를 들어 출력을 하는 사람과 작성을 하는 사람이 동시에 있으면 두 사람에게 각자의 상황이 맞는 것을 할당해야한다.
운영 체제의 종류
1. Batch OS (일괄 처리 시스템)
최초의OS로 과거에 사람이 구멍을 뚫어서 코딩을 하던 시기에 사용했던 방식이기 때문에 지금은 거의 사용하지 않는다.
모든 프로세스는 CPU Time혹은 I/O Time상태에 있다
CPU Time: CPU가 실제로 프로그램의 명령을 처리하는 데 소요되는 시간으로 프로그램이 실행되는 동안 계산이나 데이터 처리를 수행할 때 사용된다.
I/O Time: 시스템이 입력 또는 출력 작업을 수행하는 데 소요되는 시간이다.
예를 들면, 하드 드라이브에서 데이터를 읽거나 쓰는 시간, 사용자로부터 입력을 받거나 화면에 결과를 출력하는 시간 등이 여기에 속한다.
Batch OS에서 작동 방식은 작업 준비, 작업 처리, I/O 작업 순서로 동작을 한다.
작업 준비: 사용자가 프로그램, 명령어, 데이터 등과 같은 작업을 시스템에 제출하고, 이 작업들은 일반적으로 일괄처리를 위해 큐에 저장된다.
작업 처리: 배치 시스템은 큐에 있는 작업들을 차례로 가져와 처리하는데, 여기서 CPU는 각 작업의 계산이나 명령 실행에 집중하고, 여기서 걸리는 시간을 CPU time이라고 한다.
I/O 작업: 작업 중에 필요한 데이터 읽기/쓰기가 발생하면, CPU는 해당 I/O 작업이 완료될 때까지 대기해야 한다.
따라서 CPU는 다른 작업을 처리할 수 없고 이 시간을 I/O time이라고 한다.
하지만 이러한 Batch OS는 starvation과 not interactive하다는 문제가 있다.
Starvation: 특정 프로세스가 자원을 할당 받지 못하고 무한히 기다리는 상태를 뜻한다.
배치 시스템에서는 작업들이 큐에 들어가서 차례대로 처리된다.
만약 우선순위가 높은 작업이 계속 들어와 큐를 차지하게 된다면, 우선순위가 낮은 작업은 계속 뒤로 밀려 실행될 기회를 잃게 된다.
따라서 일부 작업이 실질적으로 starvation 상태에 빠지게 되어, 필요한 자원을 할당받지 못하고 무기한으로 대기 상태에 머무르게 되는 문제가 발생한다.
Not Interactive: 사용자와 시스템 간의 상호 작용이 거의 없는 상태를 말한다.
배치 OS에서는 작업들이 큐에 쌓여서 처리되므로, 작업이 실행되는 동안 사용자가 그 작업에 개입하거나 진행 상황을 확인하는 것이 어렵다.
이로 인해 실시간으로 작업의 상태를 변경하거나, 실행 중인 작업에 대한 즉각적인 피드백을 제공하는 것이 어렵다.
따라서 사용자는 작업을 제출하고 결과가 나올 때까지 기다려야 한다.
2. Multiprogramming OS(멀티프로그래밍 운영 체제)
Multiprogramming OS는 여러 프로그램이 메모리에 동시에 존재하면서, CPU가 동작하지 않고 노는 상태에 머무르는 시간을 최소화하여 시간 효율을 증가시키기 위해 설계된 시스템이다.
멀티프로그래밍은 동시 작업 수행, 자원 활용 극대화, 작업 스케줄링, Context Switching 등을 통해 효율적인 자원 활용을 목표로 한다.
동시 작업 수행: 멀티프로그래밍 시스템은 여러 프로그램을 동시에 메모리에 올려두고 이들 중 하나가 I/O 작업을 위해 대기 상태에 들어가면 CPU가 다른 프로그램을 실행하여 효율적으로 시간을 활용한다.
자원 활용 극대화: 한 프로그램이 I/O 작업으로 대기 중일 때 CPU는 다른 프로그램의 명령을 실행함으로써 노는 시간을 줄인다.
작업 스케줄링: 프로세스의 우선순위, 실행 시간, 자원 요구 사항 등을 고려하여 어떤 프로그램이 CPU를 사용할지 결정한다.
Context Switching (문맥 전환): CPU가 한 프로세스에서 다른 프로세스로 전환할 때 현재 프로세스의 상태를 저장하고 새 프로세스의 상태를 로드한다.
이를 통해서 다른 작업을 수행하고 다시 돌아오더라도 이전에 어떤 작업을 하였는지 파악할 수 있다.
Multiprogramming OS는 여전히 not interactive하다는 문제가 있어 사용자가 실행중인 작업에 대해서 관여할 수 없다.
그리고 메모리 관리, 작업 스케줄링 등의 복잡한 관리가 필요하고, 과부하 상태에서는 시스템의 성능이 저하될 수 있다는 단점도 있다.
3. Multitasking OS(멀티태스킹 운영 체제)
Multitasking OS는 우선순위가 있는 작업을 더 빨리 처리하기 때문에 Multiprogramming보다 더 상호작용이 좋다.
이는 프로그램, 프로세스, 스레드와 같은 여러 작업을 동시에 처리할 수 있다.
멀티태스킹은 사용자 또는 시스템의 요구에 따라 여러 작업을 빠르게 전환하면서 동시에 실행하는 것처럼 보이게 만든다.
이 시스템의 주요 특징으로는 작업 전환, 자원 관리, 동시성, Context Switching이 있다.
작업 전환 (Task Switching): 멀티태스킹 시스템은 CPU가 여러 작업을 빠르게 전환하면서 실행한다.
각 작업은 CPU의 일정 시간을 할당받아 실행되며, 할당 시간이 끝나면 다음 작업으로 전환된다.
자원 관리: 멀티태스킹 시스템은 메모리, CPU 시간, 입출력 등의 자원을 각 작업에 효율적으로 할당하고 관리한다.
이를 위해 복잡한 스케줄링 알고리즘을 사용한다.
동시성: 사용자는 여러 프로그램이 동시에 실행되는 것처럼 느낀다.
예를 들어, 문서를 편집하는 동안 음악을 듣거나 인터넷을 검색하는 것이 가능하다.
멀티태스킹은 사용자의 경험을 개선하고 시스템의 효율성을 높이는 데 기여한다.
하지만, 많은 작업이 동시에 실행될 때 시스템의 성능 저하가 발생할 수 있으며, 메모리 관리와 작업 스케줄링이 중요한 역할을 한다.
4. Multiprocessing OS
Multiprocessing OS는 하나보다 많은 CPU를 사용하여 처리하는 것으로 수많은 작업을 유닛 단위로 빠르게 처리할 수 있어 처리량이 매우 크다.
이러한 시스템의 목표는 병렬 처리를 통해 성능을 향상시키고, 신뢰성을 높이는 것이다.
멀티프로세싱 운영 체제의 주요 특징은 병렬 처리, 효율적인 자원활용, 신뢰성과 가용성, 작업 스케줄링이 있다.
병렬 처리 (Parallel Processing): 멀티프로세싱 시스템은 여러 CPU를 사용하여 여러 작업을 동시에 처리한다.
이는 단일 CPU 시스템보다 더 많은 계산을 동시에 수행할 수 있게 해준다.
효율적인 자원 활용: 여러 CPU를 사용함으로써, 시스템은 자원을 보다 효율적으로 활용할 수 있다.
각 CPU는 독립적인 작업을 처리할 수 있어 이로 인해 전체 시스템의 처리량이 증가한다.
신뢰성과 가용성: 멀티프로세싱 시스템은 한 CPU에 문제가 발생해도 다른 CPU가 작업을 계속 수행할 수 있기 때문에 높은 신뢰성과 가용성을 제공한다.
로드 밸런싱: 컴퓨터 네트워크, 서버, 또는 다른 컴퓨팅 자원에 들어오는 작업 또는 요청을 여러 장치나 컴포넌트 간에 분산시켜 처리하는 과정이다.
로드 밸런싱의 주요 목적은 자원의 과부하를 방지하고, 작업 처리 능력을 극대화하는 것이다.
5. Realtime OS(실시간 운영 체제)
Realtime OS는 각각의 작업이 deadline이 있어서 해당 기간 전에 작업을 처리하는 데 중점을 두는 운영 체제다.
실시간 시스템의 주요 목표는 응답 시간과 처리 시간을 엄격하게 관리하는 것으로, 높은 신뢰성과 정확성이 요구된다.
실시간 운영 체제의 특징으로는 결정론적 시스템 동작, 우선순위 기반 스케줄링, 빠른 문맥 전환이 있다.
결정론적 시스템 동작: 실시간 운영 체제는 결정론적으로 동작해야 한다.
즉, 주어진 입력에 대해 시스템의 반응이 일정해야 하며, 이는 시스템의 동작을 예측 가능하게 만든다.
우선순위 기반 스케줄링: 실시간 시스템은 일반적으로 우선순위 기반 스케줄링 알고리즘을 사용한다.
이는 가장 중요한 작업이 먼저 처리되어야 한다는 원칙에 따른다.
빠른 문맥 전환: 실시간 운영 체제는 작업 간 빠른 문맥 전환이 필요하며, 이는 시스템이 새로운 작업에 신속하게 응답할 수 있게 해준다.
실시간 운영 체제는 제조, 의료 기기, 우주 항공, 자동차 등과 같은 분야에서 중요한 역할을 한다.
이러한 시스템은 종종 생명을 구하거나 중요한 장비를 관리하는 데 사용되므로 높은 수준의 신뢰성과 성능이 필수적이다.
'컴퓨터 > 운영체제' 카테고리의 다른 글
[운영체제] 메모리 관리(Memory Management) (0) | 2024.01.23 |
---|---|
[운영체제] 교착 상태(DeadLock) (1) | 2024.01.23 |
[운영체제] 동기화(Synchronization) (1) | 2024.01.21 |
[운영체제] 프로세스 스케줄링(Process Scheduling) (0) | 2024.01.14 |
[운영체제] 프로세스 관리 (0) | 2024.01.14 |