기록하는 습관을 들이자

[ 운영체제 정리 ] 2장 운영체제 개요 - 운영체제와 정보기술의 원리 본문

운영체제

[ 운영체제 정리 ] 2장 운영체제 개요 - 운영체제와 정보기술의 원리

myeongmy 2020. 9. 3. 19:56
반응형

 

※ 해당 포스팅은 이화여대 반효경 교수님 저서 [운영체제와 정보기술의 원리] 책 내용을 기반으로 작성되었습니다.

 

운영체제란 컴퓨터 시스템의 가장 기초적인 소프트웨어라고 볼 수 있다. 컴퓨터 시스템 내의 모든 하드웨어와 소프트웨어를 효율적으로 관리해주는 역할을 하며, 일부 프로그램이 자원 할당과 관련하여 차별받지 않도록 형평성 측면까지 고려하여 의사결정을 하는 소프트웨어라고 볼 수 있다.

 

-> 따라서, 운영체제의 의사결정 원리를 이해하는 것은 우리 사회의 통치 개념을 이해하는 것과 같은 맥락이 될 수 있으며, 그 기반은 효율성형평성이다.

 

 

튜링 머신

 

튜링 머신은 오늘날 컴퓨터의 근간이 되는 이론적 모델이라고 할 수 있다. 현실 속 문제를 수학 및 논리적 문제로 표현하고 이를 특정 알고리즘을 이용하여 해결하는 수학적 모델로서 오늘날의 슈퍼 컴퓨터가 해결하는 모든 문제들은 튜링 머신에서도 해결될 수 있다. 컴퓨터라는 형식 체계가 해결할 수 없는 문제의 영역을 발견하게 된 계기이다. (튜링 머신의 정지 문제(Halting problem))

입력 데이터를 튜링 머신에 넣고 실행했을 때 처리가 끝나고 종료되는 것이 아닌 무한 루프에 빠지게 되는 경우 이는 튜링 머신으로 해결할 수 없는 문제의 영역임을 나타내며, 해당 문제의 영역은 오늘날의 슈퍼 컴퓨터도 해결할 수 없다.

 

클라우드 컴퓨팅

 

클라우드 컴퓨팅이란 고성능 컴퓨팅 자원을 원격으로 사용하고 이에 대한 비용을 지불하는 서비스를 의미한다. 대표적으로 아마존(Amazon), 구글(Google), 마이크로소프트(Microsoft)에서 지원한다. 

 

 

1. 운영체제의 정의

 

운영체제(Operating System)란?

컴퓨터 하드웨어 바로 윗단에 설치되는 시스템 소프트웨어

 

좁은 의미의 운영체제 : 커널(kernel) -> 컴퓨터가 부팅되면 메모리에 올라가게 되는 부분 

                                   (운영체제 코드 중에서도 가장 핵심적인 부분!)

넓은 의미의 운영체제 : 커널 뿐만 아니라 기타 유틸리티 프로그램들 모두 포함 ex) 윈도우의 파일 복사(copy) 기능 등

 

어떠한 프로그램이 실행되기 위해서는 해당 프로그램이 메모리에 올라가 있어야하는데, 운영체제처럼 큰 규모의 소프트웨어 전체가 모두 메모리에 올라간다면 메모리 공간의 낭비가 심할 것이다. 따라서, 커널에 해당하는 부분만 메모리에 올라가게 되고 기타 유틸리티 프로그램은 필요할 때 메모리로 올려서 사용하게 된다.

 

2. 운영체제의 기능

 

운영체제의 주요 기능은 크게 2가지이다.

 

1. 컴퓨터 시스템 내의 자원(resource)을 효율적으로 관리해 컴퓨터 시스템 성능을 향상시키는 것

    (여기서 자원(resource)은? CPU, 메모리, 하드디스크 등 하드웨어와 기타 소프트웨어를 의미)

2. 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해주는 것 (사용자는 하드웨어를 직접 다룰 필요가 없다)

 

3. 운영체제의 분류

 

- 동시 작업을 지원하는지 여부

단일작업(single tasking)용 운영체제 : 한 번에 단 하나의 프로그램만 실행 가능   ex> 초창기 DOS 운영체제

다중작업(multi tasking)용 운영체제 : 동시에 두 개 이상의 프로그램 실행 가능

 

※ 용어 정리 ※ 

시분할 시스템(time sharing system) : CPU를 수 밀리초(ms) 이내의 짧은 시간 규모로 여러 프로그램들이 CPU에서 번갈아 실                                                             행되어 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보이는 시스템

다중 프로그래밍 시스템(multi programming system) : 한정된 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려                                                                                       놓고 처리하는 시스템

다중처리기 시스템(multi processor system) : 하나의 컴퓨터 안에 CPU가 여러 개 설치된 경우

                                                                       (서로 다른 CPU에서 여러 프로그램이 동시에 실행될 수 있어 처리 속도는 더욱                                                                            빨라지지만, 여러 CPU를 관리하기 위해 운영체제는 더욱 복잡한 메커니즘을 필                                                                          요로 한다.)

 

- 다중 사용자에 대한 동시 지원 여부

단일 사용자용 운영체제 : 한 번에 한 사용자만이 사용하도록 허용하는 운영체제

다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해 사용할 수 있는 운영체제

 

- 작업을 처리하는 방식

일괄처리(batch processing) 방식 : 요청된 작업을 일정량씩 모두 모아서 한꺼번에 처리하는 방식 -> 사용자 입장에서는 응답시                                                         간이 길다는 것이 단점!

시분할(time sharing) 방식 : 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식

실시간(real time) 운영체제 : 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템

                      - 경성 실시간 시스템(hard realtime system) : 주어진 시간을 지키지 못할 경우 매우 위험한 결과 초래

                                                                                             ex> 로켓, 원자로 제어 시스템

                      - 연성 실시간 시스템(soft realtime system) : 정해진 시간이 지켜져야 하나 위험한 결과까지 초래하는 것은 아님

                                                                                             ex> 멀티미디어 스트리밍 시스템

 

4. 운영체제의 예

 

- MS 윈도우 : 그래픽 인터페이스와 아이콘 방식을 채택하여 사용자가 다루기 편한 운영체제. 그러나 유닉스와 같이 오랜 전통을 가지는 운영체제에 비해 안정성이 떨어짐.

- 유닉스 : 가장 널리 사용되는 운영체제 중 하나로 이식성이 높으며, 운영체제 커널의 크기가 작으며, 소스 코드가 공개되어 있음.

유닉스는 대부분의 코드가 C언어를 기반으로 작성되어 있어 프로그래머가 이해하기에도 쉬우며, 커널의 크기가 작아 어떤 환경에도 이식하기 좋다는 장점을 가지고 있다. 그리고 오랜 전통이 말해주듯 안정성을 가장 큰 장점으로 하여 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 많이 이용됨.

 

5. 운영체제의 자원 관리 기능

 

운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것으로, 여기서의 자원은 하드웨어 자원과 소프트웨어 자원으로 나뉜다.

(하드웨어 자원: CPU, 메모리, 입출력 장치)

 

CPU 관리 방법

매 시점 어떤 프로세스에 CPU를 할당해 작업을 처리해야할지 결정하는 일이 필요 -> CPU 스케줄링

CPU 스케줄링의 목표 : CPU를 최대한 효율적으로 사용하면서도 특정 프로세스가 불이익을 당하지 않도록 하는 것!

 

- 선입선출(FCFS) : CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식 (단점: 장시간 CPU를 사용해야하는 프로세스가 먼저 도착하고 짧은 시간만 사용하면 되는 프로세스들이 나중에 도착하면 비효율적)

- 라운드 로빈 기법(Round Robin) : CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한한다. 정해진 시간이 지나면 해당 프로세스는 완료되지 않더라도 CPU를 내어놓고 CPU 대기열의 제일 뒤로 가게 된다.

- 우선순위 스케줄링 : CPU 사용을 위해 대기 중인 프로세스들에게 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당.

 

메모리 관리 방법

메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. 프로그램이 실행되기 위해서는 메모리에 올라가 있어야 하는데, 이 때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요!

 

메모리를 관리하는 방식에는 3가지가 있다. 고정분할 방식, 가변분할 방식, 가상 메모리 방식.

 

- 고정분할 방식(fixed partition) : 물리적 메모리를 몇 개의 분할로 미리 나누어 관리하며, 나뉜 각각의 분할에는 하나의 프로그램이 적재될 수 있다. -> 단점: 메모리에 동시에 적재될 수 있는 프로그램의 최대 갯수가 분할 개수로 한정되며, 분할의 크기보다 큰 프로그램은 적재가 불가능하다. 내부 단편화와 외부 단편화

- 가변분할 방식(variable partition) : 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식. 따라서, 분할의 크기 때문에 큰 프로그램의 실행이 제한되는 문제는 발생하지 않으나, 여전히 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 불가능.

- 가상메모리 방식(virtual memory) : 현대의 범용 컴퓨터에서 가장 널리 사용되는 방식. 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다. 이 때 실행될 수 있는 프로그램의 크기는 가상메모리의 크기에 따라 결정된다.

모든 프로그램은 물리적 메모리와 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 가진다. 이 가상메모리 주소를 물리적 메모리 주소로 매핑(mapping)하는 기술을 이용해 주소를 변환시킨 뒤 프로그램을 물리적 메모리에 올리게 됨.

? 그렇다면 어떻게 물리적 메모리의 크기보다 더 큰 프로그램을 적재할 수 있는 것인가 ?
현재 사용되고 있는 부분만 메모리에 올리고 나머지는 스왑 영역으로 하드디스크와 같은 보조기억장치에 저장해둠. 프로그램을 구성하는 가상 메모리 주소 공간은 동일한 크기의 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어져 현재 실행되어야하는 부분만 메모리에 올라가고 나머지는 스왑 영역에 저장된다.

 

주변장치 및 입출력 장치 관리 방법

인터럽트(interrupt)라는 메커니즘을 통해 관리가 이루어진다.

(인터럽트 : 입출력 장치가 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청하는 것 -> CPU는 평소에 CPU 스케줄링에 따라 자기에게 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 중지하고 인터럽트에 의한 요청 서비스(인터럽트 처리루틴)를 수행한다.)

 

주변장치 및 입출력 장치들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 CPU를 가진다 -> 컨트롤러!

컨트롤러가 해당 장치에 대한 업무를 처리하고, 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.

ex> 키보드로부터 입력이 들어오는 경우 == 키보드 컨트롤러가 인터럽트를 발생시켜 CPU에 그 사실을 알림.

반응형
Comments