본문 바로가기
운영체제

2. 운영체제 개요

by 나는후니 2022. 1. 5.

1. 운영체제의 역할

운영체제의 역할은 크게 네가지로 구분할 수 있다.

  1. 편리성 - Interface
  2. 효율성 - HW / SW 자원 관리
  3. Process, Thread 관리 - 실행 프로그램 자원, 시간 관리
  4. 시스템 보호 - 불법적인 형태의 접근 block

컴퓨터 시스템 구성 System Call -> Kernel 계층이 OS가 수행하는 역할이다. 사용자가 요청을 보내면 OS를 거쳐 적절한 Hardware에서 resource를 가져와 사용자에 돌려준다.

2. 운영체제의 구분

1. 동시 사용자 수

단일 사용자, 다중 사용자로 나뉜다.

단일 사용자는 말 그대로 한 명의 사용자만 시스템을 사용 가능하게 세팅하는 것을 단일 사용자로 구분한다. 덕분에 자원 관리와 시스템 보호가 단순하고 모든 자원을 사용자가 독점한다. Window, IOS 등이 이에 해당한다.

다중 사용자는 동시에 여러 사용자들이 시스템을 사용하기 때문에 소유권을 명확하게 구분할 필요가 있고 구조가 굉장히 복잡하다. 주로 UNIX, LINUX 서버가 이에 해당한다.

2. 동시 실행 프로세스 수

여기서 프로세스는 프로그래밍 언어에서의 프로세스와 개념이 동일하다. 프로그램에서 수행되는 하나의 작업을 Thread라고 표현한다면, Process는 Thread의 모음이다. 프로그래밍 언어에 익숙하지 않다면 프로세스라는 단어를 작업 관리자에서 볼 수 있다. 컴퓨터가 작동하고 있는 상황에는 여러 개의 Process가 돌아가고 있다.

단일작업은 시스템 내에 하나의 작업 프로세스만 존재하여 하나의 프로그램 실행을 마친 후에 다른 프로그램이 실행된다. 당연히 동시에 작업이 이뤄지지 않기 때문에 운영체제 구조는 간단하지만 대기시간이 길고 성능이 좋지 않다.

다중작업은 동시에 여러 프로세스가 수행 가능하여 이에 따른 동시 수행, 동기화 관리가 필요하다. UNIX, LINUX, WINDOWS가 여기에 해당한다.

3. 작업 수행 방식

작업 수행 방식을 통해 과거부터 지금까지 운영체제의 변화를 살필 수 있다. 시간 순서대로 순차, 일괄, 시분할, 분산으로 나뉜다.

명확하게 나눠서 설명하기 보다는 이해한 내용을 연대기로 스토리처럼 풀어보고자 한다.

OS 발전 스토리

OS가 등장하기 전 사용자는 기계어로 직접 모든 프로그램을 작성하였으며, 실행하는 순서대로 작업을 처리했다고 한다. 당시 고차원 언어는 없었겠지만 Java, C, Python이 존재한다고 가정해보자.

 

Java로 특정 값을 프로그래밍한 한 프로그래머가 작업 큐에 본인의 작업을 올려둔다. 작업이 약 1시간 소요된다고 한다. 그리고 잠시 뒤 열심히 C로 작업한 프로그래머는 1시간을 기달려 C 프로그램을 올려두었다. 그런데 모든 세팅이 Java로 되어있어 한시간동안 세팅을 전부 C로 변경해줬다. 그렇다면 C 프로그래머는 얼마나 긴 시간을 낭비한 것일까? 이후 Python 프로그래머가 작업을 하려면 또 얼마나 긴 시간이 낭비될까? 이렇게 작업이 쌓이다보면 시간적 손해가 크다. 이 문제를 해결하기 위해 Batch System(일괄처리) 개념이 등장했다.

 

일괄 처리 시스템을 도입하여 각 언어별로 100개의 작업이 쌓여야만 시스템이 작동되게끔 세팅해뒀다고 가정해보자. 그러면 100회당 1번씩 세팅이 변경되어 세팅하는데 시간을 아낄 수 있다. 하지만 이때 다시 Java 개발자가 등장하여 프로그램을 작업 큐에 올렸다. 그 결과물은 오래도록 볼 수 없었다. 바로 99번의 작업이 더 필요했기 때문이다. 시스템 자원을 공유하기 때문에 처리 효율은 향상됐지만 한 번에 많은 작업이 수행되어 응답시간이 길어졌고 게다가 같은 유형의 작업이 모이기 전까지는 결과를 확인할 수 없게 되어 생산성에 큰 손실이 발생한 것이다. 불편함을 느낀 한 개발자는 각 프로그램을 동시에 작동시키면 어떨까 하고 Time Sharing System(시분할 처리) 개념을 가져온다.

시분할 처리 과정

시분할 처리를 통해 여러 사용자가 자원을 동시에 사용하도록 만들었다. OS가 파일 시스템과 가상 메모리를 관리하게 되면서 가능해졌다. 이 때 개인이 시스템 전체를 독점하는 Personal Computing이 등장하고 메모리 등 기타 자원을 공유하면서 여러 CPU를 사용하는 Parallel Processing System도 등장하였다. 하지만 물리적 요건으로 인해 단점이 명확하게 드러났고 이를 보완하기 위해 바로 현대에서 사용되는 분산 처리 시스템이 등장하게 된 것이다.

 

분산 처리 시스템

 

네트워크 기반으로 병렬 처리 시스템을 구축하여 파일 서버, DB 서버, 웹 서버 등 각 서버를 분리해 분산 운영체제를 통해 분리된 물리 환경을 하나의 프로그램, 자원처럼 사용하게 됐다. 서버실 구축, 관리는 어렵지만 최근에는 이를 대행해주는 기업 (AWS, Google)이 존재하고 자원 공유를 통한 고성능, 고 신뢰성, 확장성이라는 장점이 뚜렷하기 때문에 이와 같은 시스템을 많이 사용한다.

 

운영체제는 프로세스, 프로세서, 메모리, 파일, 입출력, 보조 장치 관리의 임무를 수행하는 절대 없어서는 안될 컴퓨터의 일부이다.

 

 

이미지 출처 : HPC Lab

'운영체제' 카테고리의 다른 글

3-2 프로세스 관리  (0) 2022.01.07
3-1 프로세스 관리  (0) 2022.01.06
1. 컴퓨터 시스템 개요  (0) 2022.01.04