|
운영체제 (運營體制)
Operating System
1. 개념 및 정의
마이크로프로세서
운영체제는 모든 하드웨어와 모든 소프트웨어를 관리하는
컴퓨터시스템의 한 부분인 “실행 관리자”라고 정의할 수 있다.
운영체제는 누가 시스템을 사용할 수 있고, 어떻게 사용할 수 있는지를 관리하므로,
즉 운영체제는 컴퓨터시스템을 관리하는 보스(boss)라고 할 수 있다.
운영체제는 일련의 작업 순서를 정하고 중앙처리장치(CPU)·주기억장치·주변장치 등의
여러 하드웨어 시스템에 이를 할당하는 일련의 매우 복잡한 명령으로서, 프로그램 실행은
물론 파일 접근, 응용 프로그램 구동, 모니터 및 메모리 저장장치 제어,
글자판 명령 해석과 같은 특별한 임무를 수행하도록 CPU에 지시한다.
또한 여러 사용자가 동시에 작업을 수행할 때에는 이른바 시분할(time-sharing) 방식으로
작업의 우선순위를 정해 시간과 자원을 효율적으로 배분하며, 네트워크상에서는
다른 컴퓨터와 상호 작용하는 일을 제어하기도 한다.
요약하자면, 운영체제는 하드웨어를 제어하고 컴퓨터 자원을 관리하며,
컴퓨터 사용을 편리하게 해주고 응용 프로그램들의 수행을 도와주며,
사용자와 하드웨어 사이의 매개체 역할을 하는 소프트웨어라고 말할 수 있다.
운영체제의 종류에는 일괄처리(batch processing) 운영체제, 대화형 운영체제,
실시간 운영체제, 하이브리드 운영체제가 있는데, 일괄처리 운영체제는 작업을 모아서 처리,
사용자와 상호작용 없이 순차적으로 실행한다.
대화형 운영체제는 시분할시스템이라고도 하며 일괄처리 시보다 반환시간이 빠르고 이용자에게 즉각적인 피드백(feedback)을 제공(상호작용)한다.
응답시간은 사용자 수에 따라 수 분, 혹은 수십 초가 걸리기도 한다.
실시간 운영체제는 모든 시스템 중 가장 빠른 응답시간을 보이며, 결과값이 현재의 결정에 영향을 받으며,
데이터의 처리가 매우 빠르고 반환시간이 매우 중요한 환경에 적합하다.
하이브리드 운영체제는 일괄처리와 대화형 처리의 합성한 운영체계로 대화형 작업이 많지 않을 경우
백그라운드에서 배치 프로그램을 실행한다. 현재 사용되고 있는 대부분의 컴퓨터 시스템은 하이브리드 시스템이다.
2. 역사와 발전단계
년도 | 처리방식 | 내용 |
1940년대 | 초기 전자식 디지털 컴퓨터 | • 운영체제가 존재하지 않음 • 단지 기계적 스위치에 의해 작동 |
1950년대 | 단순 순차처리 | • 한 번에 오직 하나의 작업만을 수행 • IBM 701용 운영체제개발(GM) |
1960년대 | 다중 프로그래밍 | • 1964년 IBM S/360 운영체제 개발 • 멀티프로그래밍, 멀티프로세싱, 시분할처리 개념 대두 • 멀티 대화식 사용자, 멀티모드 시스템의 보편화 |
1970년대 | 다중모드 시분할 | • 멀티모드 시분할 시스템(일괄처리, 시분할처리, 실시간처리)의 보편화 • 근거리 지역 네트워크(이더넷(Ethernet))(표준에 의해 실용화) • 정보보호 및 보안문제의 증대에 암호화 중요성 대두 |
1980년대 | 분산네트워크 | • 운영체제 기능들이 하드웨어에 포함된 펌웨어 개념의 대두 • 개인용 컴퓨터와 워크스테이션, 강력한 데스크톱 컴퓨터의 구축가능 • 각종 응용 프로그램의 개발 및 데이터베이스 활용 확대 • 네트워크를 기반으로 클라이언트/서버(Client/Server)모델의 확대 |
1990년대 | 병렬계산과 분산계산 | • 중앙집중이 아닌 분산으로 발전 • 네트워크와 멀티미디어 처리 기술의 발달 • 인터넷 보급의 급속한 확산 • 그래픽 사용자 인터페이스(GUI)의 강화 • 선점형, 멀티태스킹, 멀티스레딩, 가상메모리의 보편화 • PC용 운영체제(Windows, Mac), 서버용 운영체제(Unix, Linux)의 보편화 |
2000년대 | 모바일 및 임베디드 운영체제 | • 시스템은 초고속화, 고기능화, 초경량화 방향으로 발전 • 다양한 통신망의 확대와 개발형 시스템의 발달 • 다양한 기능, 확장성과 호환성의 극대화 • 네트워크 기반의 분산 및 병렬운영체제의 보편화 • PDP, PMP 등의 모바일 장치와 가전제품을 위한 모바일 및 임베디드 운영체제의 보편화 • 64비트 CPU에 호환되는 64비트용 운영체제 |
3. 접근방법 및 주요 연구영역
1) 접근방법
(1) 제어 프로그램
시스템 전체의 동작 상태를 감시, 감독하고 자원들을 관리하며 각종 입출력 장치를 제어,
CPU 스케줄링과 작업관리, 기억장치 관리 등을 담당한다.
① 감시 프로그램(supervisor program)
처리 프로그램의 실행 과정과 시스템 전체의 동작 상태를 감시한다.
② 데이터 관리 프로그램(data management program)
주기억 장치와 보조 기억장치 사이의 자료전송이나 보조 기억장치에 저장되어 있는 자료의 갱신과 유지 담당한다.
③ 작업 관리 프로그램(job management program)
다음에 실행할 작업을 선택하거나 작업의 시작, 종료, 실행, 일시 정지 등과 같이
운영체제의 작업 스케줄러 역할 및 입출력 장치의 배당을 담당하는 프로그램이다.
(2) 처리 프로그램
① 언어 번역 프로그램(language translator)
어셈블러(assembler), 컴파일러 (compiler), 인터프리터(interpreter) 등이 있다.
② 서비스 프로그램(service program)
파일복사, 텍스트 편집, 데이터 정렬, 병합, 프린터 조작 등의 유틸리티 프로그램과 같이
제어 프로그램을 보조해 주는 프로그램이다.
③ 문제 프로그램(problem program)
사용자가 자신의 문제 해결을 위해 작성한 프로그램이다.
운영체제의 구성요소는 프로세스 관리자, 주기억장치 관리자. 파일관리자, 장치관리자로 구분한다.
프로세스 관리자는 CPU를 프로세스(process)에게 어떻게 할당할 것인가를 결정하고,
프로세스는 실행중인 프로그램 혹은 작업, 프로세스의 상태(준비, 실행, 대기)의 전이를 처리한다.
프로세스 관리자가 프로세스를 할당하면 필요한 레지스터와 테이블을 작성
(프로세스 제어블록 생성)하며, 작업을 마치거나 허용 시간을 초과하면 프로세스 반환하는 역할을 한다.
주기억장치 관리자는 주기억장치 공간에 대한 각각의 요구가 유효한지를 체크하며,
적법한 요구일 경우에는 빈공간의 주기억장치를 할당하고, 다중 사용자 환경의 경우에는
주기억장치 사용을 체크하기 위한 테이블을 작성한다.
주기억장치를 반환할 시간이 되면 주기억장치를 회수하는데, 운영체제 자신이
점유하고 있는 주기억장치 공간을 지키는 일도 하며 우연이든 고의든 자신이 사용공간을 보호한다.
장치 관리자는 모든 장치, 채널과 제어장치를 모니터링하고, 시스템 설계자에 의해 결정된
스케줄링 기업에 기반하여 시스템의 모든 장치를 가장 효율적으로 할당할뿐더러,
모든 장치의 할당, 작동 시작, 그리고 반환을 제어한다.
파일 관리자는 시스템에서 작동되는 모든 프로그램을 모니터링하며, 컴파일러, 인터프리터,
어셈블러, 유틸리티 프로그램, 데이터 파일과 응용 프로그램을 관리하고 파일의 접근 제한
관리는 물론, 파일을 열어서 자원을 할당하거나 파일을 닫아 자원을 회수하는 역할 등을 한다.
2) 운영체제의 연구영역
리눅스 마스코트인 턱스
2000년대의 주요 운영체제로는 범용컴퓨터 운영체제,
중형컴퓨터 운영체제,
소형컴퓨터 운영체제,
모바일 운영체제,
임베디드 운영체제로 구분되고 있다.
범용컴퓨터 운영체제는
VSE(Virtual Storage Extended), OS/390(IBM),
MSP/EX (FUJITSU)가 대표적이며,
중형컴퓨터 운영체제는 UNIX, Linux, IRIX, AIX, HP-UX가 대표적이다.
또한 소형컴퓨터 운영체제는 Window XP/Vista/7, Mac OX가 대표적이다.
모바일 운영체제는 Windows CE, Palm OS, Cellvic OS가 대표적이다.
임베디드 운영체제는 Embedded Linux, pSOS, VxWorks, VRTX 등이
대표적으로 새로운 운영체제 개발을 위해 지속적으로 연구되고 있다.
4. 주요 용어 및 관련 직업군
1) 주요 용어
• 매크로(macro)와 서브프로그램(sub program)
반복되는 부분을 분리시켜 놓고 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 것으로
매크로는 컴파일 이전에 확장 과정을 거쳐 실행시 빠른 장점이 있으며 서브프로그램은
확장 과정을 거치지 않아 저장 공간을 줄일 수 있다.
• 로더(loader)
외부기억장치로부터 정보들을 주기억 장치로 옮기기 위하여 메모리 할당 및 연결,
재배치, 적재를 담당하는 서비스 프로그램이다.
• 링커(linker)
여러 오브젝트(Object)를 한 개의 실행 가능한 형태의 파일로 작성한다.
일반적으로 다른 곳에서 프로그램루틴이나 컴파일, 어셈블 된 루틴들을 모아 실행 가능한 루틴을 작성한다.
• 오버레이(overlay)
큰 프로그램을 작은 단위의 모듈로 잘라서 필요한 부분만 램(RAM)에 적재하여 실행 할 수 있도록
하는 기법으로 프로그래머가 모듈의 자르는 단위 및 연결 순서를 명시하여야 함으로 사용이 불편하다.
이러한 오버레이의 단점은 가상메모리 기법을 이용해 해결된다.
• 스와핑(swapping)
여러 개의 프로그램을 나의 메모리에서 실행될 수 있도록 하기 위해 사용하는 기법으로
실행 도중 스와프 아웃(swap out)이 되어 보조기억 장치로 옮겨졌다가 실행 시
스와프 인(swap in)이 되는 것을 반복하며 실행하는 것을 말한다.
• 버퍼링(buffering)
주기억 장치의 일부를 큐 방식(FIFO: First In First Out)으로 동작하는 버퍼로 이용하여
하나의 프로그램에서 CPU 연산과 I/O 연산을 중첩시켜 처리할 수 있게 하 는
방식으로 CPU의 효율을 높이는 방식이다.
버퍼를 2개 또는 그 이상 사용하는 방식을 이용하여 버퍼링의 효과를 높일 수도 있다.
• 스풀링(spooling)
주기억 장치를 이용하는 버퍼링(buffering)은 공간이 작으므로 보조기억장치를 이용하여
여러 개의 프로그램에 대하여 입력과 CPU 작업을 중첩시켜 처리할 수 있게 하는 방식으로
보조기억장치 중에서 직접접근 및 저장(DASD: Direct Access Storage Device)이
가능한 장치인 디스크를 사용한다.
• 프로세스
실행중인 프로그램, 주기억장치에 저장된 프로그램, PCB(Process Control Block)와
결합된 형태의 코드를 말하는데,
PCB란 프로세스가 작업 도중 필요한 정보나 스케줄에 필요한 여러 가지 정보를 기억하고 있는 구조체이다.
작업 스케줄러(job scheduler)에 의해서 생성되어 주기억장치에 진입한다.
• 셸(shell)
사용자의 명령어를 번역하여 실행을 지시하고 결과를 사용자에게 돌려주는 역할을 하는 부분으로 커널과 사용자 사이의 인터페이스 역할을 하는 부분이다.
도스(DOS)에서 command.com이 셸의 기능을 하며 유닉스에서는 여러 종류의 셸이 존재한다.
이러한 셸은 주기억장치에 상주하지 않고 사용자가 요구할 때 메모리로 적재되어 실행이 된다.
• 커널(kernel)
자원을 관리하는 모듈의 집합으로 운영체제 기능의 핵심적인 부분을 모아 놓은 부분이다.
메모리 관리 및 스케줄링 인터럽트 처리 등의 기능을 담당하며 사용자는 직접 커널의
기능을 제어할 수 없으며 단지 셸에 의해 의뢰할 뿐이다.
커널은 항상 필요로 하는 부분이므로 메모리에 적재되어 있다.
• 스레드(thread)
프로세스는 실행 환경부분과 제어부분의 두 부분으로 나눌 수 있는데 스레드란 프로세스의 제어부분만을 말한다.
스레드는 실행에 필요한 최소한의 정보만 가지고 자신에 속해 있는 프로세스의 기억장치나 파일과 같은 실행환경을
다른 스레드와 공유하여 프로세스의 생성과 문맥교환 등의 오버헤드를 줄여 운영체제의 성능을 개선할 수 있게 된다.
• 선점(preemptive) 스케줄링
특정 프로세스가 중앙처리장치를 효율적으로 사용할 수 없는 시점에 이를 때마다 중앙처리장치의
사용권이 다른 프로세스로 옮겨지는 방식으로
높은 우선순위의 프로세스들이 급하게 실행해야 할 경우에 유용하다.
• 비선점(nonpreemptive) 스케줄링
어떤 자원이 어떤 프로세스에 할당이 되면 실행을 종료할 때까지 그 프로세스가
중앙처리장치의 사용권을 독점하여 사용하는 것으로
짧은 작업들을 기다리게 되는 경우가 있지만 모든 프로세스 관리에 공정하다.
• 병행(concurrent) 프로세스
시스템 내에 다수의 프로세스들이 동시에 실행되는 것으로 프로세스들이
시스템 내에 동시에 존재하나 어느 한 순간에 단지 한 프로세스만 CPU에서 실행된다.
• 교착상태(deadlock)(=무한대기)
다중 프로그래밍 환경에서 두 개의 프로세스가 서로 다른 프로세스가 가지고 있는 자원을 기다리고 있으며
자신이 차지하고 있는 자원을 내놓지 않는 현상으로 이 두 프로세스에게는 영원히 처리기를 줄 수 없게 된다.
• 단편화(fragmentation)
연속으로 기억장치를 할당하여 사용할 경우 크기가 맞지 않아서
사용되지 못하는 공간이 생길 수 있는데, 이러한 공간을 단편화 공간이라고 한다.
2) 관련 직업군
• 기술 분야 공무원국가공무원, 관변단체 공무원 등
• 전문적인 기술인산업기사, 기술사, 감리사 등
• 학문분야(대학교수, 연구원 등)
• 산업체대기업, 중견기업, 중소기업, 창업 등
• 연구분야정부기관 연구소 및 민간기업 연구소 컴퓨터 소프트웨어 전문가
운영체제 (運營體制) OS
operating system
컴퓨터가 제공하는 한정적인 자원을 효율적으로 사용할 수 있도록
사용자와의 인터페이스(interface)를 제공하는 소프트웨어.
운영체제는 컴퓨터 하드웨어(Hardware)나 소프트웨어(Software)와 같이
한정된 자원을 사용자가 효율적으로 사용할 수 있도록 인터페이스를 제공하는 역할을 수행한다.
컴퓨팅 자원을 활용하기 위해 사용하는 키보드, 마우스, 모니터와 같은 입출력장치를 관리하고,
중앙처리장치(CPU)와 기억장치(Memory) 등을 이용하여 자원이나 컴퓨터 프로그램 명령을 제어하고 기록한다.
이러한 작업을 효율적으로 수행하고 자원을 적절하게 관리하기 위해 다양한 스케줄링 기법이 적용되어 있다.
운영체제 유형
운영체제는 실제 컴퓨터를 사용하게 되는 컴퓨팅 환경에 따라 다양한 유형으로 나뉠 수 있다.
예를 들어 작업의 처리효율을 높이기 위한 환경에서는 컴퓨팅 처리 속도 향상을 위한
멀티프로세서와 멀티코어 시스템용 운영체제를 사용할 수 있다.
또한 실시간 처리가 필요한 산업 환경에서는 산업용 임베디드 시스템용 운영체제를
사용하여 시한성을 갖는 작업을 신뢰성 있게 처리할 수도 있다.
아래는 대표적인 운영체제의 유형들이다.
· 일괄처리 시스템용 운영체제(Batch Processing System OS)
입력된 정보를 일정량 모았다가 한꺼번에 처리하는 운영체제.
· 오프라인 시스템용 운영체제(Off-line System OS)
프로그램 간 제어가 자동으로 넘어가도록 하는 상주모니터를 이용한 시스템용 운영체제.
· 온라인 시스템용 운영체제(On-line System OS)
CPU와 주변장치가 온라인으로 연결되어 실시간 응답을 주고받는 시스템용 운영체제.
· 시분할 시스템용 운영체제(Time Sharing System OS)
CPU를 사용하는 각각의 사용자에게 시간을 할당(Time Slice)하고,
할당된 시간 동안 프로그램을 수행하는 시스템용 운영체제.
· 다중 프로그래밍 시스템용 운영체제
(Multiprogramming System OS)
CPU 효율 극대화를 목적으로 우선순위가 높은 프로세스를 실행하기 위한
문맥교환(文脈交換, Context switch)을 통해 대기 중인 다른 작업을 수행할 수 있도록 구현된 시스템용 운영체제.
· 다중처리 시스템용 운영체제(Multi-Processing System OS)
컴퓨팅 처리와 신뢰성 향상을 위하여 여러 개의 프로세서(CPU)가 공동 기억 장치를 통해
메모리를 공유하고, 다중 처리기의 단일 운영체제에서 제어가 가능한 시스템용 운영체제.
· 실시간 처리 시스템용 운영체제(Real Time System OS)
은행의 실시간 송금 처리와 같이 실시간 작업이 이루어져야 하는 정보를 처리하기 위한 시스템용 운영체제.
· 분산처리 시스템용 운영체제(Distributed System OS)
하나의 대형 컴퓨터에서 처리하던 기능을 네트워크 통신을 통하여 여러 개의 컴퓨터로 분산된
컴퓨팅 환경에서 처리하는 시스템용 운영체제.
운영체제 종류
운영체제는 사용 환경에 따라 아래와 같이 구분할 수 있다.
· 임베디드용 운영체제
실시간 처리 시스템에 사용되는 운영체제로, 리눅스(Linux)가 주로 사용된다.
· 서버용 운영체제
웹사이트 등에서 많이 활용하며, 리눅스·유닉스(Unix)·윈도우(Window) 등이 사용된다.
· 모바일용 운영체제
스마트폰 등 모바일 단말에서 사용되는 운영체제로, 안드로이드(Android)와 iOS가 대표적이며,
그밖에도 삼성의 타이젠(Tizen), 블랙베리(Blackberry) OS 등이 있다.
· 데스크탑 운영체제
개인 PC에 주로 사용되는 운영체제로, 윈도우·Mac·리눅스가 대표적이며,
우리나라에서 개발한 운영체제인 Tmax OS가 있다.
운영체제의 주요 구성요소 및 역할
운영체제는 자원의 효율적 할당과 회수 및 관리를 위해 아래와 같은 요소를 통해 운영된다.
· 프로세스(process)
프로세스는 컴퓨터에서 실행되고 있는 프로그램이다.
운영체제는 프로세스 단위로 자원을 관리하며 프로세스의
생성(create)부터
준비(ready),
대기(waiting),
실행(running),
종료(complete)에 이르기 까지
주요 상태변화를 감지하며
프로세스간 효율적인 자원 사용을 가능하게 한다.
· 스레드(thread)
프로세스 내에서 실행되는 단위이다.
일반적으로는 하나의 프로그램에 하나의 스레드를 가지지만 환경에 따라 여러
스레드를 동시에 실행도 가능한데, 이러한 방식을 멀티스레드(multi-thread)라고 한다.
운영체제는 이러한 스레드 관리를 통해 개별 프로세스의 안정적인 수행을 가능하게 한다.
· 스케줄링(Scheduling)
CPU 이용을 극대화하기 위하여 여러 프로세스 중 하나의 프로세스를 선택하여 실행되도록 하는 기법이다.
선점 스케줄링(Preemptive scheduling)과
비 선점 스케줄링(Non preemptive scheduling)으로 구분되며,
운영체제에서는 자원의 상태에 따라 스케줄링을 관리한다.
· 동시성 제어(Concurrency Control)
여러 프로그램이 공유자원을 동시에 사용하려고 할 때 발생하는 충돌을 방지하기 위해,
운영체제는 하나의 프로세스만 접근할 수 있도록 제어하는
세마포어(semaphore)와 같은 기법을 이용하여 자원을 관리한다.
· 메모리 관리(memory management)
한정된 메모리 공간을 효율적으로 활용하기 위해, 운영체제는 프로세스에 필요한
기억장치를 할당하고 사용이 끝나면 회수한다.