자원할당 방식에 따른 운영체제 분류

Eojin·2023년 11월 8일
0

작성일
20231108



➡️ 운영체제의 분류


✅ 단일 작업(single-tasking) 운영체제

옛날에는 다중 작업에 대한 기술이 없어서 단일 작업으로 운영체제가 설계되곤 했다.


✅ 다중 작업(multi-tasking) 운영체제

운영체제의 가장 중요한 면은 다중 프로그래밍 (Multiprogramming) 을 할 수 있는 능력이다. 여기서 다중 프로그래밍이란, 여러개의 작업이 동시에 주 기억장치에 적재하고 CPU가 작업들을 번갈아가며 실행함으로써 이용율을 증가되는 것이다.

(1) 일괄 처리 시스템(Batch Processing System)

비슷한 작업들을 모아서 일괄 처리 하는 시스템으로, 입출력 장치의 속도가 느려서 cpu가 일을 쉬는 경우가 많다.
(EX. 성적 계산, 급여 지급 시스템, etc.)

(2) 실시간 처리 시스템(Real Time Processing System)

(EX. 예약, 은행 업무, etc.)

(3) 시분할 처리 시스템(Time Sharing System)

다중 프로그래밍이 논리적을 확장된 시스템으로, 말 그대로 시간을 분할하여 처리하는 시스템이다. 여기서 시간이란 CPU의 시간을 의미하고, 이를 서로 분할해서 사용한다는 것이다.

멀티태스킹이라고도 부르며, 이름 그대로 특정 시간을 정해서 그 시간이 지나면 무조건 다음 작업을 실행하는 방식이다. 즉, CPU(중앙처리장치)가 시간을 일정 단위로 쪼개서 순서대로 데이터를 처리하는 시스템으로, 시간 간격이 매우 짧기 때문에 사용자와 컴퓨터는 상호작용을 할 수 있어서 대화식 컴퓨터 시스템 (interactive computer system)이라고도 한다. 여러 사용자가 동시에 컴퓨터를 사용할 수 있다는 특징 때문에 주기억장치의 용량이 부족할 수 있는데 보통 가상 메모리를 사용하는 방식이 이를 보완해준다.

(4) 다중 처리기 시스템(Multi-Processing System)

두 개 이상의 CPU가 가동되면서 데이터를 처리하는 시스템으로, 각각의 CPU들이 아주 밀접하게 통신을 하는 구조를 가지고 있다. 당연히 성능이 하나의 CPU가 있을 때보다 더 좋으며 하나의 처리기가 고장이 나더라도 속도가 느려질 뿐 시스템은 정상적으로 작동한다. 크게 대칭적 다중 처리 시스템과 비대칭적 다중 처리 시스템으로 나뉘는데, 대칭적 다중 처리 시스템은 각 CPU가 하나의 운영체제 하에서 작동하며 CPU끼리 데이터를 효율적으로 공유하는 구조로 운용이 됩니다. 한쪽이 망가져도 운용이 느려질 뿐 작동은 된다는 특징이 있다. 반면, 비대칭적 다중 처리 시스템은 각 처리기마다 특정한 작업이 정해져 있고 하나의 주요 CPU가 시스템을 제어하며 다른 CPU들은 미리 정의된 작업 혹은 명령을 수행하는 시스템을 말한다.

(5) 다중 프로그래밍 시스템(Multi-Programming System)

메모리의 경우 여러 프로그램들이 조금씩 메모리 공간을 보유하며 여러 프로그램들을 동시에 메모리에 올려 놓을 수 있는데, 이처럼 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템을 다중 프로그래밍 시스템이라고 부른다. 즉, 한 개의 CPU에 두 개 이상의 프로그램이 돌아가면서 데이터를 처리하는 시스템으로, 일괄 처리 시스템과 달리 입출력 장치가 일을 하는 동안 CPU가 쉬는 것이 아니라 다른 프로그램에 대해서 일을 계속 하기 때문에 CPU 사용 효율이 증가한다. 이 시스템에서 운영체제는 작업 스케줄링과 CPU 스케줄링을 진행한다.

(6) 다중 프로세서 시스템(Multi-Processor System)

여러 개의 프로세서가 메모리, 클럭 등을 공유하여 사용하는 시스템이다. 여러 개의 단일 프로세서 시스템을 사용하는 것과 다중 프로세서 시스템을 비교해보면, 다중 프로세서 시스템이 더 저렴하고 신뢰도가 높다.

(7) 분산 처리 시스템(Distributed Processing System)

물리적으로 떨어진 시스템이 각자 데이터를 처리하는 시스템으로, 이것이 가능한 이유는 분산된 시스템들은 네트워크로 연결되어 있기 때문에 작업을 처리할 수 있게 되는 것이다.

(8) 클러스터링(Clustering)

두 대 이상의 컴퓨터를 묶어서 하나의 시스템처럼 사용하는 시스템

(9) 듀얼 시스템(Dual System)

두 개 이상의 CPU가 동시에 같은 업무를 처리하는 시스템

(10) 듀플렉스 시스템(Duplex System)

한 개의 CPU가 가동되고 다른 CPU는 대기 중인 시스템으로, 가동되던 CPU가 고장나면 대기 중인 CPU가 가동된다.

(11) 임베디드 시스템(Embedded System)

하드웨어와 소프트웨어가 결합된 제어 시스템으로, 두뇌 역할을 하는 전자 시스템으로 사용된다. 마이크로프로세서에 특정 기능(온도를 올리고 높이거나 측정하는 등의 비교적 단순한 특수 작업)을 수행하는 응용 프로그램을 탑재하여 커퓨터 기능을 수행하도록 한다.
(EX. 냉장고, TV, etc.)

작업 스케줄링
: 디스크의 작업 저장소에서 적절한 작업을 메모리로 옮긴다.

cpu 스케줄링
: 현재 실행중인 작업이 대기 상태에 들어가면 적절한 작업을 메모리에서 선택해서 cpu에게 전달한다.


➡️ 모르는 내용 질문하기

Q. (공부 필요) 다중 프로그래밍의 경우 여러 프로그램에서 출력이 산발적으로 발생할 수 있는데 이에 대한 해결 방법은 무엇이 있나요?
Buffering : 입출력 시 CPU의 속도와 입출력 장치간의 속도 차이를 해소하기 위해 하드 디스크나 매모리 영역에 자료를 잠시 저장해놓는 것
Spooling : Buffering과 유사한 개념이지만 버퍼링은 속도의 차이를 해소하기 위한 것이었다면 Spooling은 순차적 사용장치(ex.프린터)를 병렬 수행 프로그램이 사용할 수 있도록 도와주는 방법이다. 속도가 빠르고 임의 접근이 가능한 디스크에 출력되는 자료를 임의도 모아놓고 처리한다.
프로그램1에서 1의 결과를 내고 프로그램2에서 2의 결과를 냈다. 그리고 다시 프로그램1에서 3의 결과를 냈다. 결과의 처리순서는 1-2-3으로 이루어 졌지만 올바른 순서로 프린트하려면 프로그램1에서 수행한 1,3이 프린트되고 프로그램2에서 수행한 2가 프린트되어야 할 것이다. 이를 도와주는 것이 Spooling이다. 디스크에 자료를 저장했다가 프린터로 그를 보냄으로서 이를 해결한다.
참고로 SPOOL은 Simultaneous Peripheral Operations On-Line의 약자이다.
cf. 다중 프로그래밍 방식은 여러 프로그램이 메모리에 탑재되어야 했기에 메모리 경영의 이슈를 파생시키기도 했다.



➡️ 참고자료

[BLOG]

[OS] 컴퓨터 시스템 & 운영체제 구조
https://myeongju00.tistory.com/27

[운영체제] 다중 프로그래밍 / 시분할 시스템 / 실시간 시스템
https://inuplace.tistory.com/280


profile
'함께'가 즐거운 개발 공부하는 사람입니다.

0개의 댓글