(1) 운영체제란?
- Operating System - 줄여서 OS라고 부른다.
- 컴퓨터 모든 자원들의 사용 및 공유 문제를 해결한다.
여기서 자원은 CPU, Memory, Monitor, 키보드 등을 말하는 것으로 OS가 이러한 모든 자원들을 통제한다.
- 컴퓨터 하드웨어와 사용자 간의 매개체 역할을 하는 시스템 소프트웨어로 사용자가 프로그램을 수행할 수 있는 환경을 제공해준다. 다시 말하면 하드웨어와 소프트웨어를 연결해주는 특수한 SW다.
Ex) Mac, Android, Windows, Linux etc. 이러한 OS있어야 부팅이 되는데 없으면 컴퓨터 사용이 불가하다.
부가설명 - 시스템 소프트웨어에는 OS, 컴파일러, 어셈블러, 로더, 링커 등이 있다.
(2) 운영체제의 목적
- 컴퓨터 시스템을 편리하게 이용할 수 있도록 한다.
- 컴퓨터 하드웨어 자원을 효율적으로 관리하고 사용할 수 있게 한다.
(3) OS 유형
1. MultiProgramming System을 위한 OS
- Memory(주기억장치)내에 여러 개의 프로그램들을
동시에
수행해서 CPU의 유효시간을 최소화(이용률을 높임)하기 위한 방법이다.
- 현재 널리 이용하고 있는 시스템이다.
- 이전 방식에서는 순차 프로그래밍 방식을 이용했는데 CPU가 필요하지 않은 부분(입출력하고 있을 때)은 유휴상태(idle state)가 되기 때문에 비효율적이다.
- 그래서 유휴시간을 최소화하기 위한 방법이 다중 프로그래밍 시스템이다.
특징
- 메모리에 준비상태에 있는(프로그램이 메모리에 올라와 있는 상태) 여러 개의 프로그램들 중에서 실행할 프로그램을 선정하는 방법인
스케줄링
이 필요하다.
- CPU 효율성은 좋으나 OS가 많은 문제들을 해결해야 한다.
- 메모리에 복수 개의 프로그램을 동시에 유지해야 하고 CPU 할당 시간에 대한 스케줄링을 책임져야 한다.
- 스케줄링, 병행제어, 교착상태 및 보호 문제 등을 해결해야 한다.
- 실행중인 프로그램들 간의 통신 및 I/O 장치의 사용에 대한 제어 및 관리를 책임져야 한다.
2. Multiprocessing System을 위한 OS
- 여러 개의 CPU를 하나의 시스템에 설치한 것으로 빠른 수행을 목적으로 한다.
- 그러나 잘 사용하지 않고 가격이 비싸다.
- Tightly coupled system(밀착된 결합 방식)
- 하나 이상의 CPU가 컴퓨터 버스, 메모리, 주변장치를 공유하면서 빠른 수행을 목표로 한다. CPU가 여러개지만 메모리는 하나다.(즉, 하나의 메모리가 여러 개의 CPU를 공유) 단점은 복잡성이 커서 공유를 안 하는 게 좋다.
- Loosley coupled system(느슨한 결합 방식)
- 각 CPU가 자신의 지역(개별) 기억장치를 가지며, CPU들은 고속의 버스나 광섬유와 같은 다양한 통신 회선을 통해 서로 통신하는 분산 시스템이다.(즉, CPU 하나에 메모리가 각자 한 개씩 연결 되어있다.
특징
- 목적은 컴퓨터 처리율을 증대시키기 위함이고 CPU를
여러 개
사용하여 작업 속도와 *신뢰성을 높일 수 있다.
- OS는 여러 CPU간의 기억장치 공유를 어떻게 지원할 것이며, 여러 CPU 사용에 대한 스케줄링을 어떻게 할 것인가를 결정해야 한다.
*신뢰성 : 한 개의 CPU가 고장이 나도 나머지 CPU가 돌아가서 신뢰성이 높다라고 말한다. 즉, 문제가 발생해도 처리가 가능하다.
3. Batch Processing System을 위한 OS
- 요구사항이 비슷한 작업(프로그램)들을 함께 묶어서 수행한다.(Operator(사람)가 작업을 묶어서 수행)
- 각각의 작업을 수행하는 필요한 작업 준비 시간을 줄일 수 있다.
- 그러나 현재 수행되는 작업이 끝나기 전까지
다른 작업을 수행할 수 없다
.(stop못함)
특징
- 프로그램의 오류수정 작업이 어렵지만 그럼에도 사용하는 이유는 비슷한 것끼리 모아서 처리하기 때문에 효율이 좋다.
- CPU가 유휴 상태가 되기 쉽다.(batch 작업 내에 *I/O이 있는 경우)
- 초기 메인프레임 컴퓨터의 OS에서 활용되고, 최근에는 주기적으로 한꺼번에 처리되어야 하는 업무에 활용되고 있다.
- Ex) 월급계산, 전화요금계산, 전기요금계산, 성적처리 etc.
*I/O : 화면, 키보드, 마우스 etc.
4. Time-sharing System을 위한 OS
- 사용자들이 컴퓨터 자원을
짧은 시간 단위
로 나눈 다음 공유(sharing)하여 사용하는 것이다.
- 사용자는 *
대화식(Interactive)
단말장치를 이용하여 사용한다.
- 사용자는 자신이 컴퓨터를 독점하여 사용하고 있다고 생각한다.(실제로는 동시에 사용중)
- Multi와 비슷하지만 Multi는 효율적인 것을 먼저 처리하고 시분할은 순서가 있다는 것에서 차이가 있다.
- 사용자의 프로그램을 순서대로 큐에 저장하고 들어온 순대로 CPU -> 기억장치 <-> I/O 처리한다.
*Interactive 단말장치: 화면과 키보드가 있는 단말장치로, 대화식으로 정보를 주고받을 수 있는 기능이 있어 상호 대화를 지원
특징
- 컴퓨터 자원 제어에 대한 대부분의 책임을 OS에 맡긴다.
- 다중 프로그래밍 시스템과 동일한 기능 수행을 필요로 한다.
- OS는 기억 장치에 복수 개의 프로그램을 동시에 유지하는 문제에 대한 책임을 지고 있다.
- 사용자들에 대한 공정한 자원 공유를 보장하기 위하여 CPU 할당 시간에 대한 스케줄링 책임이 있다.
- 실행중인 프로그램들 간의 통신 및 I/O 장치 사용에 대한 제어 및 관리 책임이 있다.
5. Real-time System을 위한 OS
- 프로그램의 작동이나 데이터의 흐름에 엄격한 시간적 제약이 있을 때 사용한다.
- 사전에 정의된 제약 시간 내에 프로그램이 수행되어야 한다. (반드시 사전에 정의되어야 함)
- 우선순위를 높여서 다른 프로세스보다 빨리 처리하는 경우 (특정 프로세스에 우선권을 부여)
- 여기서 프로세스는 실행중인 프로그램으로 메인 메모리에 올라와 있는 경우다.
Ex) 센서 등 사건 발생 신호를 받아 빠른 처리가 필요한 경우, 과학 실험을 제어하는 시스템,
의학 영상 시스템, 산업 제어 시스템
6. Distributed Processing System을 위한 OS
- 하나의 대형 컴퓨터에서 수행하던 기능을 지역적으로 분산된 여러 개의 컴퓨터에 분담시킨 후, 통신망을 통하여 상호간에 교신하여 처리하는 방식이다.
- 분산처리 시스템들의 상호연결은 네트워크에 의해 이루어지고, 현재 자주 쓰이고 있다.
- 인공지능, 딥러닝, 빅데이터 등에 주로 사용하여 가격이 저렴하다.
분산처리 시스템의 OS 기법
- 네트워크 OS : 각 컴퓨터(노드)가 독자적인 OS를 가짐
- 분산 OS : 전체 컴퓨터들(노드들)에 대하여 하나의 OS를 가짐
목적
- 컴퓨터 자원의 공유 (CPU, 메모리, 입출력 장치 etc)
- 연산 속도 증가 (성능 향상)
- 신뢰성(Reliablity) 향상 (대신 수행 가능)
- 통신 지원 (인터넷이 없어도 네트워크 연결 가능)
7. Personal Computer System을 위한 OS
- 대형 시스템(Mainframe)보다 작고 값이 싼 초소형 컴퓨터이다.
- CPU와 주변장치의 이용률 최대화보다 편리성/응답성을 중요시 한다.
- 개인 사용자 중심 기능을 제공하기 위한 OS이다.
- Multi-programming을 지원한다.
8. Embedded System을 위한 OS
- 마이크로프로세서 or 마이크로컨트롤러를 내장하여 시스템 제작자가 의도한 몇 가지 혹은 특수한 기능만을 수행하도록 제작된 시스템이다.
- 임베디드 시스템의 한정된 자원들에 맞게 최적화된 OS를 보유하고 있다.
- Linux, Android 등의 OS가 변형되어 많이 사용된다.
Ex) 셋톱 박스, IOT etc
*마이크로 프로세서 : CPU의 핵심 기능을 통합한 집적 회로(IC)로 아주 작은 CPU다.
*마이크로컨트롤러 : 마이크로프로세서와 이를 사용하기 위한 메모리, 입력장치 등의 필요한 기능이 함께 집적된 장치다.
- 이미지/그래픽, 사운드, 애니메이션 및 비디오 등 다양한 미디어를 이용하여 멀티미디어 콘텐츠를 제작하기 위해 필효한 HW와 SW로 구성되어 있다.