Summary

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

프로그래민 2021. 12. 14. 01:50
반응형

운영체제의 정의

운영체제(Operating System)란 컴퓨터 HW 바로 윗단에 설치되는 SW로써, 사용자 및 다른 SW와 HW를 연결하는 소프트웨어 계층이다. SW인 운영체제에 HW가 한몸이 되어 컴퓨터 시스템이 된다.

운영체제 자체도 하나의 SW이기에 컴퓨터의 전원이 켜짐과 동시에 필요한 부분만 메모리에 올라가고 필요하지 않은 부분은 그때그때 메모리에 올려서 사용한다. 이때 메모리에 상주하는 운영체제의 부분을 커널(Kernel)이라고 하며 좁은의미의 운영체제이다. 

운영체제의 위상

 

운영체제의 기능

운영체제는 크게 두가지 역할로 나누어 볼 수 있다. 하드웨어를 위한 역할로는 시스템 내의 자원을 효율적으로 관리하는 것이고, 사용자를 위한 역할로는 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것이다. 편리한 환경 제공은 운영체제가 HW등을 다룸에 있어 대행해주고, 사용자가 자세히 알지 못하여도 프로그램을 실행시킬 수 있는 추상화 환경,인터페이스를 제공하는 것이다.

하지만 운영체제의 가장 중요한 핵심 기능컴퓨터 시스템 내의 자원(CPU, 메모리, HDD, 다른 HW, SW 등등)을 효율적으로 관리하는 것이다. 추가적으로 프로그램들간에 자원이 형평성 있게 분배되도록 균형도 맞춘다. 이때 효율성과 형평성을 모두 운영체제가 고려한다. 마지막으로 운영체제는 보안 및 보호 기능을 수행한다.

 

운영체제의 분류

동시 작업 지원 여부

운영체제는 동시 작업 지원 여부에 따라 단일작업용 운영체제다중작업용 운영체제로 나눌 수 있다. 단일작업 운영체제는 한번에 하나의 프로그램만 실행 시킬 수 있는 운영체제로 초장기 운영체제인 DOS가 있다.

다중작업용 운영체제는 2개 이상의 프로그램을 실행할 수 있다. 이때 운영체제가 다중작업을 처리할 때 CPU와 메모리를 공유한다. CPU는 하나의 프로그램만 실행시킬 수 있어서 CPU의 작업시간을 나누어 활용하는데 이를 시스템 시분할 시스템이라고 한다. 메모리는 CPU와 달리 동시에 여러개를 올릴 수 있는데 이를 다중 프로그래밍 시스템이라고 한다. 

다중작업용 운영체제는 대화형 시스템이라고도 한다. 추가적으로 CPU가 여러개 설치된 시스템을 다중 처리기 시스템이라고 한다.

 

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

운영체제는 다중 사용자에 대한 동시 지원 여부를 기준으로 단일 사용자용 운영체제와 다중 사용자용 운영체제로 나눌 수 있다. 단일 사용자용 운영체제는 DOS처럼 한 번에 하나의 작업만 수행할 수 있는 경우이고, 다중 사용자용 운영체제는 이메일 서버나 웹서버로 우리가 흔히 사용하는 서버를 의미한다.

 

작업을 처리하는 방식

운영체제는 작업을 처리하는 방식을 기준으로 일괄처리 방식시분할 방식 그리고 실시간 운영체제가 있다.

일괄처리 방식은 요청된 작업을 일정량씩 모아서 처리하는 방식이다. 모든 작업이 완전히 종료된 후에 결과를 얻기에 응답시간이 길다는 단점이 있다.

시분할 방식은 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식이다. 현대의 컴퓨터가 대부분 시분할 방식을 사용한다. 여러 사용자가 짧은 시간 단위씩 작업을 번갈아가면서 처리하기에 응답시간이 짧다.

실시간 운영체제는 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야하는 시스템에서 사용한다. 예를 들면 로켓, 원자로 제어 시스템과 멀티미디어 스트리밍등이 있다.

 

운영체제의 자원 관리 기능

운영체제의 기능

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

 

하드웨어 자원

하드웨어 자원은 CPU와 메모리를 비롯한 주변장치, 입출력 장치가 있다. CPU는 일반적으로 한대에 하나가 장착되기에 CPU를 효율적으로 나누어 사용할 수 있도록 관리해야한다. 메모리는 한정된 용량만 존재하기에 서로 다른 프로세스들이 나누어 쓸 수 있어야한다. 입출력 장치 또한 운영체제의 관리가 필요하다. CPU와 메모리는 전원이 꺼지면 정보가 모두 지워지기때문에 전원이 나가도 기억이 되어야하는 부분은 입출력 장치 중 하나인 보조기억장치에 파일 형태로 저장해야한다.

 

CPU를 관리하는 방법

CPU가 하나인 기본적인 컴퓨터에서는 매시점 어떠한 프로세스에 CPU를 할당할지를 결정하는 CPU 스케쥴링을 통해 프로세스가 여러개가 동시에 수행될 수 있다. CPU 스케쥴링의 목표는 CPU를 가장 효율적이고, 특정 프로세스가 불이익이 생기지 않게 사용하는 것이다. 대표적으로 선입선출(FCFS), 라운드 로빈(Round Robin), 우선순위 기법이 있다.

선입선출은 CPU를 사용하기 위해 도착한 프로세스들 먼저 온것을 처리해주는 방식이다. CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들은 CPU를 사용하지 못하고 장시간 기다려야 하기 때문에 전체 시스템 입장에서 비효율적인 결과를 가지게 된다. 

라운드 로빈은 선입선출 기법의 단점을 고안한 방법으로써 CPU를 한번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한하는 방식이다. 긴작업을 요하는 프로세스가 CPU를 할당받더라도 정해진 시간이 지나면 CPU를 내어놓고 CPU의 대기열의 제일뒤로 가게 된다. 

우선순위 스켈쥴링은 CPU 사용을 위해 대기중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저할당하는 방식이다.  시스템에서 더 중요한 프로세스가 CPU를 우선적으로 획득하게 하는 것이 핵심이며 대기 시간이 길어질수록 우선순위가 높아지는 방안도 활용될 수 있다.

 

메모리를 관리하는 방법

메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. 이때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리가 필요하다. 메모리를 관리하기 위해 운영체제는 주소를 통해 관리한다. 또한 운영체제는 프로그램에 메모리가 필요할 때 할당하고, 더 이상 필요하지 않을때는 회수한다. 그리고 메모리에서 서로 다른 프로세스의 영역을 침법하지 않도록 관리한다.

이러한 물리적 메모리 관리하는 방식에는 고정 분할(Fixed Partition) 방식, 가변 분할(Variable Partition) 방식, 가상메모리(Virtual Memory) 방식이 있다.

고정 분할 방식

고정 분할 방식은 물리적 메모리를 몇개의 분할로 미리 나누어 관리한다. 나뉜 각각의 분할에는 프로그램이 적재될 수 있다. 다만 분할이 고정적이기에 분할의 크기보다 큰 프로그램은 적재가 불가능하고, 분할의 크기보다 작은 프로그램의 경우 해당 분할내에 남는 영역이 발생한다. 이를 내부조각(Internal Fragmentation, 내부 단편화)라고 한다.

가변 분할 방식

가변 분할 방식은 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식이다. 따라서 분할의 크기 때문에 큰 프로그램의 실행이 제한되는 문제는 발생하지 않지만 물리적으로 메모리의 크기보다 큰 프로그램은 실행이 불가능하다. 가변 분할 방식은 고정 분할 방식에서 발생하는 내부조각이 발생하는 문제는 발생하지 않지만 외부조각(External Fragmentation, 외부 단편화)는 발생할 수 있다.

가상메모리는 현대에 가장 널리 사용되는 메모리 관리 기법으로써 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다. 가상메모리의 주소를 이용하여 물리적 메모리 주소로 매핑하는 기술을 이용해 주소를 변환시킨 후 프로그램을 물리적 메모리에 올리는 방식이다. 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식이다. 이때 사용하는 보조기억장치 영역을 스왑(swap)영역이라 하고, 가상 메모리의 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다. 이러한 것을 페이징(paging) 기법이라고 한다.

 

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

주변장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트(Interrupt)라는 것으로 관리한다. CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청하는데 이때 발생시키는 신호가 인터럽트이다.

CPU는 인터럽트가 발생하는 경우 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다. 인터럽트 처리를 완료한 후에는 원래 하던 일을 계속 수행한다. 따라서 원래 수행하던 작업으로 돌아오기 위해 인터럽트 처리 직전 수행중이던 작업의 상태를 저장해둔다. 인터럽트는 발생하는 종류마다 다른 인터럽트 처리루틴을 가진다. 

주변장치들은 각 장치마다 일종의 작은 CPU인 컨트롤러를 가지고 있다. 컨트롤러는 해당 장치에 대한 업무를 처리하고, 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.

 

 

출처
https://one10004.tistory.com/123
https://velog.io/@jehjong/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%99%80-%EC%A0%95%EB%B3%B4%EA%B8%B0%EC%88%A0%EC%9D%98-%EC%9B%90%EB%A6%AC-2%EC%9E%A5.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%9C%EC%9A%94
운영체제와 정보기술의 원리 - 이화여자대학교출판문화원 출판, 반효경 저
 

운영체제와 정보기술의 원리 - 교보문고

이 책은 총 10장으로 구성되어 있다.1장 ‘컴퓨터 및 정보기술의 역사’에서는 운영체제를 설명하기에 앞서 정보기술의 원리와 철학에 대해 정의하고, 컴퓨터와 정보기술 분야의 역사를 간략히

www.kyobobook.co.kr

반응형