본문 바로가기
EH 운영체제 강의

2. 운영체제의 분류, 예시, 구조

by 킹차니 2022. 5. 10.

이번에는 운영체제의 분류, 예시, 구조를 간단하게 알아보자.

 

 

 

1. 운영체제의 분류

운영체제는 처리방식으로 분류할 수 있다. 처리방식에는 일괄 처리, 시분할, 실시간 처리 방식 3가지로 나뉜다.

 

일괄처리 (batch processing)

- 작업을 모아서 한꺼번에 처리

- 작업이 완전 종료될 때까지 기다려야 함

ex) 초기 punch card 처리 시스템

 

이 방식은 현대에는 찾아보기 힘든 옛날 방식이다. 아래그림처럼 처리되어야 할 프로그램을 모아서 한번에 처리하는 방식이다.

 

 

시분할 처리(time sharing)

- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용

- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 ex)UNIX

- interactive한 방식

 

시분할 처리 방식은 현대 운영체제에 주로 적용되는 방식이고 주위에 가장 많이 보이는 방식이다.

즉 시분할 처리 방식은 정확한 시간을 지키기 보다는, 한정된 자원을 최대한 사용하여 사용자가 늘어나도 해당 사용자들에게 서비스를 제공할 수 있는 방식이다.

 

 

실시간 처리(Realtime OS)

- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS

- ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어

- 실시간 시스템의 개념 확장 : Hard realtme system(경성 실시간 시스템), soft realtime system(연성 실시간 시스템)

 

요 방법은 우리가 일상에서 만나기는 힘든 시스템이다. 하지만 요즈음 실시간 처리 시스템에 대한 수요가 늘고 있다. 만약 자동차가 네비게이션 어플리케이션을 사용하는데, 실시간 처리가 되지 않아 우회전 할 길을 이미 지났는데 네비게이션이 뒤 늦게 우회전하라고 알려주면 안된다.

 

 

2. 운영체제 예시

UNIX(유닉스)와 WIndows(윈도우) 운영체제를 통해 운영체제의 예시로 알아보자.

 

UNIX

- 코드의 대부분을 C언어로 작성

- 높은 이식성(C언어를 컴파일하면 되므로)

- 최소한의 커널 구조(필수적인 기능만 커널에 포함시킴)

- 복잡한 시스템에 맞게 확장 용이

- 소스 코드 공개(오픈 소스)

- 프로그램 개발에 용이

- 다양한 버전

 

유닉스 역시 시분할 처리 운영체제이다. 즉 다중 사용자를 지원하도록 설계되었다. 현재 개인 컴퓨터 시장에 현존하는 유닉스 운영체제는 애플이 유일하다. - 참고: https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%89%EC%8A%A4

 

 

 

Window(DOS와 MS Windows)

 

DOS(Disk Operating System)

- MS사에서 개인 PC를 위해 개발

- 단일 사용자용 운영체제, 메모리 관리 능력의 한계가 있었음(640KB)

 

MS Windows

- MS사의 다중 작업용 GUI 기반 운영체제

- Plug and Play, 네트워크 환경 강화

- DOS용 응용 프로그램과 호환성 제공

- 풍부한 지원 소프트웨어

윈도우 운영체제는 개인용 PC를 위한 운영체제로 만들어졌다.

 

 

3. 운영체제 구조

운영체제의 구조를 CPU, 메모리, 디스크, IO디바이스와 관계하여 파악해보자.

 

CPU

CPU 스케쥴링은 주로 다수의 프로세스들을 아주 짧은 시간동안 라운드 로빈 방식으로 공평하게 순서대로 돌아가면서 실행시키는 방법을 쓴다. 물론 반드시 그런 것만은 아니다. CPU를 가장 짧은 시간동안 사용할 프로세스에게 우선적으로 ㅁ할당하는 것이 이론적으로는 가장 빠를 수도 있기 때문이다.(하지만 결론적으로는 동일한 시간동안 짧게 실행시키는 것이 이득이라고 하긴 함)

 

 

메모리

한정된 메모리를 어떻게 관리할지를 정한다. 즉 메모리를 많이 쓰는 프로세스와 적게 쓰는 프로세스들이 모두 다르므로 이들을 알맞게 할당해줘야 한다. working set이라고 하는데, 너무 많은 프로세스들이 실행되어야 한다면 일단 몇 개만 메모리에 올려서 실행하고 나머지는 쫓아내서 일부의 프로세스라도 정상적으로 실행될 수 있도록 한다. 그 후 현재 실행중인 프로세스들이 잘 돌아간다 싶으면 다시 디스크로 쫓아낸 프로그램들을 프로세스로 불러오는 것이다.

 

 

 

디스크

디스크가 파일을 관리할 수 있도록 파일들을 쓰고 읽는 스케쥴링이 필요하다. 저장된 파일을 읽기 위해서는 디스크에 있는 헤드가 움직이면서 파일을 읽기 때문에 아무 알고리즘 없이 그냥 주는대로 읽어온다면 매우 비효율적이기 때문이다. 해서 헤드를 최대한 적게 움직이면서 효율적으로 파일을 read/write하는 것이 중요하다.

이를 위해 운영체제는 디스크에 들어온 파일 read/write 요청을 반드시 순서대로 처리하지 않는다. 만약 여러 요청들 중 방금 읽었던 파일과 가까운 파일에 대한 요청이 들어왔다면 해당 요청을 먼저 처리한다. 이는 엘리베이터의 알고리즘과 매우 유사하다.

 

 

 

IO디바이스

IO디바이스는 매우 느리기 때문에 겁나 빠른 CPU와 어떻데 데이터를 주고 받는지를 고민해봐야 한다. 기본적으로 이때에는 인터럽트라는 방법을 사용하는데, 이는 CPU는 계속해서 자기 할 일을 하다가 IO디바이스가 CPU에게 요청을 하면 그때 CPU가 처리해주는 방식이다.

 

 

 

 

 

 

출처 : 이화대학교 반효경 교수님의 운영체제 강의
http://www.kocw.net/home/search/kemView.do?kemId=1046323

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

CPU 스케쥴링  (0) 2022.07.01
5. 프로세스 - 스레드  (0) 2022.06.21
4. 프로세스  (0) 2022.05.20
3. 컴퓨터 시스템 구조 & Program Execution  (0) 2022.05.10
1. 운영체제란? 운영체제의 목표  (0) 2022.05.09