Chapter 1. 운영 체제 소개
운영체제의 목적
- 사용자의 편의성
- 자원의 효율적인 관리
운영체제의 역사
- 어떤 과정을 거쳐서 개발되었는가? 역사 고찰
- 1.2 수조작 시스템에서 부터 1.5 다중 프로그래밍과 시분할 시스템에 이르는 운영 체제 개발과정
- CPU와 주변장치 사이의 속도 차이를 해결하여 CPU로 하여금 보다 많은 프로그램을 서비스
1.1 운영 체제란
자원을 통제하고 할당하는 공통적인 기능을 하나의 소프트웨어로 모아 놓은 것
자원할당자
- 컴퓨터 시스템은 작업을 수행하는데 필요한 여러 가지 자원들(하드웨어와 소프트웨어), 즉 CPU 시간, 기억공간, 파일, 메모리, 입출력장치 등을 가지고 있는데, 운영 체제는 이들 자원의 관리자로서 특정 프로그램과 사용자의 작업에서 필요한 자원들을 할당해 준다. 이들 자원에 대한 많은 요구가 있고, 또한 이들이 서로 상충되는 경우가 발생하기 때문에, 운영 체제는 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해서 어느 요구에 대해 어떤 자원을 할당할 것인가를 결정해야 한다.
통제
- 입출력장치와 사용자 프로그램을 통제하여 오류와 자원의 부적절한 사용을 방지한다.
운영체제의 경계
- 메모리 내에서 상주하여 실행되는 프로그램(커널)을 운영체제라 한다.
- 보편적으로 다양한 프로그램을 합쳐 출시 (Windows, OSX 등)
1.2 작업별 처리
아주 옛날 ㅡㅡ; 1956년 이전, 아주 커다란 컴퓨터 한 대에 여러명의 사용가 있었다. (옛날에는 콤퓨타가 비싸고 몇대 없었다.)
물론 동시에 사용할 수 있는 기능도 없었고 그냥 구멍 뚤린 카드(카드덱이라했다)에다 프로그램을 짜서 기계에 넣고 돌리는 형태였다. 콘솔은 스위치나 버튼, 표시등이 있어서 이것들을 사용하여 메모리에 프로그램을 적재하거나 메모리의 내용을 본다.
문제점.
내가 저 컴퓨터를 사용하기위해 10:00 부터 11:00 까지 만원주고 한 시간 선불 예약을 했다하자.
작업이 얼마안되서 10:30분에 일찍 끝났다. 그럼 비싼돈주고 11시까지 30분을 날리는 셈이다
반면 작업이 많아서 11시가 다되어가는데도 못끝냈다. 다음 사람이 오기때문에 자리를 비워야한다.
그럼 그동안 했던 작업들이 도루묵이되는 것이다.
1.3 초기 일괄처리 시스템
하드웨어의 속도와 가격이 증가하면서 예전과 같은 방식은 너무나 비효율적이다.
그래서 생각해낸것이 인간 OS ㅡㅡ;
운영자를 고용하여 사용자를 도와주게 하였고..(손님 테이프주세요 적재해드릴께요..)
작업이 많으면 이들이 사용자의 작업을 대신...(대신 실행시켜드립니다...대신 만원추가.....ㅋ)
필요한 테이프를 적제하고,
기계어를 초기화하고,
그리고 다음 작업을 적재하고..
준비하는 시간이 실행하는 시간보다 더 컸다. (아주 비효율적..운영자 돌리는것도 비효율적~)
또 한 작업을 수행하는데
어셈블리어의 적재, 프로그램의 번역, 그리고 기계어 프로그램을 다시 적재하는 등의 여러 단계는 너무 복잡하였다.
이에 따라 드디어 이러한 운영자님의 기능을 프로그램으로 대치하게 되었는데 이것이 초기의 운영체제다.
- 프로그래머가 모든 작업 수행
스위치를 통한 수작업 적재
I/O 장치와 COMPILER는 후에 추가
- 활용도 비효율성(SIGN-UP SHEET)
- 준비 시간 과다(TAPE BASED)
1.3.1 배치(Batch)
한데 묶어서 처리 , 일괄처리, 배치하다. 묵어서 처리하다.
운영자는 준비시간을 줄이기 위해 비슷한 작업을 함께 묵어서 실행 하였다.
예를 들면 한개의 포트란 작업, 한개의 어셈블리 작업, 또다른 포트란 작업.
그럼 포트란작업끼리 묵어서 두개를 처리하고 어셈블리를 처리한다.
그러면 포트란 컴파일러는 한번의 설치만 필요함으로
중복을 피하여 시간을 절약할 수 있다.
1.3.2 입출력 표준화
입출력 장치가 오직 테이프이다 보니, 테이프에 대한 표준 프로그램을 제공하여
편의를 제공하고 오류를 방지하였다. 개나소나 많이 쓰다보면 표준이 필요하기 마련
1.4 일괄처리 시스템
1960년대 자료채널 및 인터럽트가 가능한 채널의 개발로 본격적인 일괄처리 시스템이 등장하게 되었다.
1.4.1 하드웨어
채널은 제한된 기능을 가지는 컴퓨터로서, 입출력 장치의 제어를 위해서 설계되었다.
채널은 일단 CPU에서 입출력에 관한 정보를 받아 명령을 실행하기 시작하면, CPU와의 메모리 사이클에 대한 경쟁을 제외하고 CPU와 독립적으로 작동한다.
버퍼는 CPU와 입출력을 동시에 활용하기 위해서 쓸 수 있는 유일한 방법이다.
입력버퍼는 시스템으로 하여금 입력 테이프를 선행해서 읽도록 하여 대기시간을 줄일 수 있게 하고,
출력버퍼는 현재 사용 중인 장치에, 계산을 계속 하면서 자료를 보낼 수 있도록 한다.
인터럽트의 등장으로 입출력의 완료와 예외동작(파일의 종료, 테이프의 끝, 패리티 오류 등), 대기루프를 사용하지 않고 CPU 연산과 병렬 수행 가능한 입출력 버퍼링이 가능하게 되었다.
인터럽트는 사용자 프로그램에 의해서 수행되는 것이 아니고, 하드웨어에 의해서 자동적으로 실행되는 메모리의 특정 부분에 위치한 함수 호출이라고 생각할 수 있다.
인터럽트와 트랩
- interrupt 는 입출력 장치에서 발생시키는 것이고 오버플로우 및 시스템 호출 등은 trap을 발생 시킨다. 인터럽트가 발생하면 인터럽트 처리 루틴으로 제어가 넘어가고 현재 실행하던 프로그램은 중단된다. 인터럽트 처리 루틴에서는 약간의 전처리를 한 후에 장치 구동기로 제어를 넘겨준다. 인터럽트의 처리가 끝나면 중단된 프로그램이 다시 실행된다.
1.4.2 상주 모니터
이러한 입출력 관리자 또는 인터럽트 처리기라 불리는 루틴들의 집합을,
메모리에 영구적으로 상주시켜야 할 필요성이 생겼다. 이들의 집합을 상주 모니터라 한다.
초기 일괄처리 시스템의 기본적인 프로그램의 적재 및 실행, 였던 운영자님이 프로그램화 되어 OS의 형태로 되었다가
입출력 제어와 인터럽트 기능이 기본이 되면서 이것들도 프로그램화 되어 이제는 항상 컴퓨터에 상주하게 되었다.
상주모니터의 설치로 시스템의 기능이 향상되어 너도 나도 이용하려 드니
한 프로그램에서 다른 프로그램을 자료로 생각하여 지워버리고, 무한루프를 돌면 막을 길이 없으니,
하드웨어와 소프트웨어 자원의 보호가 절실해 졌다.
1.4.3 보호
옛날 컴퓨터들의 보호...ㅡㅡ; 용쓴다..ㅋ
연산의 예외는 미리 작성된 테이블의 허용치를 참조하여 불법적인 사용인지 검증, (예외 테이블이라...)
불법사용이면, 오류 메시지를 보내고 사용중단. (예외처리? ㅋ)
출력행과 카드의 수를 세어서 이들을 모니터 또는 사용자가 제시한 상한선과 비교. (연산이 잘못되어 출력이 많이 나오면 손해니까)
실행시간 타이머를 두어서, 잘못된 독점(무한루프등)으로 부터 시스템을 보호. (시간초과되면 뭔가 잘못? ㅋ)
파일의 끝을 감지하여 인터럽트 신호를 보내 다른사용자의 프로그램이나 자료를 보호. (EOF 의 효시?)
1.4.4 작업 제어 명령어
시스템이 쬐금씩 복작해 짐에 따라 제어기능이 추가되고 이것을 조작하는 데 필요한 제어 명령어를 추가하게 된다.
명령어가 적힌 제어카드를 사용 프로그램 과 프로그램 사이에 넣어 한꺼번에 돌린다.
제어카드는 제어카드 해석기에서 해석되고 해석기는 프로그램의 적재기를 포함하였다.
제어카드 해석기와 같은 시스템 프로그램과 응용 프로그램은 같은 장치 구동기에 연결되어서
메모리와 프로그래밍 시간을 절약할 뿐만 아니라 연산의 연속성을 제공하였다.
허나 프로그램과 제어카드로 짜여진 작업 순서에 따라 일괄적으로 처리하기 때문에 작업과 사용자 사이의 대화가 없다는 것이 문제다. 작업이 준비되어 제출되면 일정시간이 지나야 결과를 볼 수 있다.
1.5 다중프로그래밍
한 시점에 여러 개의 작업을 메모리에 적재한다. 이들은 작업 풀에 있는 작업의 일부이다. 운영체제는 적재된 작업 중에 하나를 선택하여 CPU를 할당하고 실행시키기 시작한다. 궁극적으로 그 작업은 키보드에서 명령이 입력되기를 기다리거나, 또는 출력이 끝나기를 기다리거나 하는 상태에 처하게 될 수 있다. 다중 프로그램이 아닌 경우에 CPU는 입출력의 완료까지 할 일이 없어서 기다리게 된다. 그러나 다중 프로그래밍 환경에서는 한 프로그램이 입출력을 실행하는 동안에 다른 작업에 CPU를 할당하여 실행시킬 수 있다. 또한 실행하던 이 작업이 어떤 사건을 기다리게 되면 CPU는 또 다른 작업을 실행하게 된다. 이와 같은 과정이 반복되면 결국 처음 작업으로 제어가 넘어가 실행이 속개된다.
다중 프로그래밍은 계산과 입출력을 중복시켜서 이들을 병행 처리함으로서 전체 성능을 높이는 한 예이다. 병행처리에 의한 성능향상은 운영체제의 여러 부분에서 반복적으로 사용되는 기법이다.
1.5.1 스풀링
입출력장치는 CPU에 비해 상당히 느리기 때문에
이때 개발된 디스크와 인터럽트의 이용해 이를 해결 하였다.
시스템은 입출력내용은 디스크를 에서 읽고 쓴다.
입력장치는 디스크에 일정량의 입력후 인터럽을 보내 CPU가 읽게 하고
출력장치는 디스크에 저장된 내용을 출력하고 CPU로 인터럽트를 보낸다.
당연히 인터럽트가 오기전까진 CPU는 다른 작업을 수행한다.
버퍼링과 스풀링
- 공통점 : 다중프로그래밍에 대해 입출력장치와 CPU를 동시에 수행
- 차이점 :
버퍼링 -> 주기억장치 이용, 1개의 작업에 CPU작업과 I/O작업
스풀링 -> 디스크이용, 여러개의 작업에 CPU작업과 I/O작업
1.6 시분할 시스템
일괄처리 시스템, 사용자와 작업간의 대화부족, 일정시간 후에 결과 출력
단점 - 대화를 할 수 없으므로, 발생할 수 있는 모든 경우에 대비해서 그것들을 처리하기 위한 제어 카드를 제공해야 한다.
모든경우를 예측하여 준비한다는 것은 무척힘들다.
시분할 컴퓨터 시스템 사용자가 명령을 주고 즉시 응답을 받을 수 있도록 한다. 입력을 위해 키보드를 사용하고 출력을 위해 개인용 모니터를 사용한다. 운영체제는 한 명령의 실행을 마친 후, 다음 제어 카드들로부터 명령을 받는 것이 아니라 사용자로부터 직접 명령을 받는다. 그리고 앞 명령 결과에 따라 다음 명령을 결정한다. 이제 대화식 컴퓨팅 시대다 ㅡㅡ; 대화식 문서 편집기와 대화식 오류 수정기를 제공한다.
시부할 시스템은 다중프로그래밍을 전제로 한다. 여러사용자가 단말기를 이용 중앙컴퓨터에 연결해 사용한다.
중앙컴퓨터는 여러 단말기들의 입출력을 거의 재빠르게 전환하여 처리하기 때문에 사용자는
거의 동시에 사용하는 것처럼 느낀다.
1.7 개인용 컴퓨터
드디어 1970대부터 개인용 PC가 등장하게 된다.
이제는 한명에 한대다..ㅡㅡ;
1.8 병렬 시스템
서버와 같은 대규모 시스템은 그 성능향상을 위해 한 시스템에 여러 개의 프로세서 이루어지는
다중 프로세서로 구성하는 경우가 많아졌다.
여러개의 프로세서를 사용함으로써 더 많은 일을 짧은 시간에 할 수 있게 되었다.
하지만 n개의 프로세서를 사용한다고 해서 n배의 성능향상이 있는건 아니다.
그 이유는 여러개의 프로세서들을 함께 사용하기 위해서는 각종 오버해드가 발생하기 때문이다.
대칭 다중처리 - 논리적으로 하나인 메모리를 공유하고 여기에 적재된 운영 체제 커널을 같이 사용하며, 공유 메모리를 통해 필요헤 따라 서로 통신을 하게 된다.
비대칭 다중처리 - 주 프로세서가 전체 시스템을 통제하고 다른 프로세서들은 주인의 명령을 따르거나 미리 정해진 일을 수행한다.
1.9 분산 시스템
여러 프로세서들은 메모리나 클럭을 공유하지 않고, 자신의 국부적 메모리를 가지며 네트워크로 연결되어 협동 작업을 수행한다. 그러나 분산 시스템은 외부 사용자의 입장에서 보면 네트워크에 의한 여러 프로세서의 연결로 보이지 않고 단일 시스템으로 보이는 것이 보통이다.
분산 시스템을 구축하는 동기
- 자원공유, 계산 신속화, 신뢰성, 통신
1.10 실시간 시스템
프로세서의 동작이나 자료의 흐름에 대해 엄격한 시간 제한적 연산이 필요한 경우에 사용된다.
시한성의 강도에 따라 경성 실시간 시스템과 연성 실시간 시스템으로 나뉜다.
경성 실시간 시스템 - 데드라인 위반시, 재앙적 사건이 발생하는 시스템, 무기제어, 원자력 발전소 제어 등
연성 실시간 시스템 - 서비스의 개념에 시한성이 주어진다. 데드라인 위반이 발생해도 크게 심각하지 않은 시스템을 말한다.
실시간 동영상, 인터넷 방송등.
1.11 내장형 시스템
정보 가전 기기 등 특수 시스템에 내장
시스템이 특성으로는 내구성, 이동성, 실시간 및 저가격
기능상의 특징으로는 RAM또는 메모리 기반 파일 시스템, 빠른 부팅, 유무선 통신, XIP및 컴포넌트의 개념으로 운영체제 구성 기능.
연습문제풀이
#1, #3, #5, #8, #12, #13
1.1 운영 체제의 세 가지 중요한 목적은 무엇인가?
1) 편리성(Convenience) - 사용자에게 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공2) 효율성(Efficiency)- 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 다중 사용자간에 효율적 할당, 관리 보호3) 제어(Control)- 운영체제는 제어 프로그램으로서 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하는 것과 입출력 장치 등의 자원에 대한 연산과 제어를 관리
1.3 스풀링의 개념과 장점을 설명하여라.
[스풀링]Spooling
1)컴퓨터 시스템에서 중앙 처리장치와 입축력장치가 동시에 독립적으로 동작하는 것.
프린터나 카드 판독기 등의 입출력장치는 CPU에 비해 매우 느린 속도로 동작한다.
이 때 CPU가 프린터 출력을 직접 제어한다면 프린터가 인쇄작업이 끝날 때까지 CPU는 다른 일을 하지 못하게 된다.
그런데 실제로 이 시간의 대부분 동안 CPU는 프린터에서 다음 데이터를 달라는 신호가 오기를 기다리고 있으므로 비싼 CPU 시간이 낭비되는 결과를 낳는다. 따라서 프린터로 갈 데이터를 디스크 등의 보조기억장치에 잠시 기억시켰다가 CPU가 다른 일을 처리하면서 사이사이에 조금씩 프린터로 보내주면 프린터가 인쇄를 하는 동안에 CPU는 다른 작업을 처리할 수 있으며 전체 작업의 효율을 향상시킬 수 있다.
2) 일반적으로 처리할 데이터를 디스크나 테이프에 잠시 저장시켜다가 나중에 다른 장치가 이용하게 하는 기법을 가리키는 말.
3) 간단하게 말하면 컴퓨터에서 프린터로 데이터를 보내는 과정이라고 보면 된다.
CPU는 처리속도가 빠르지만 프린터는 CPU의 속도를 따라가지 못하기에
디스크에 임시로 저장해두고 프린터가 점차적으로 받아들여서 일을 처리하게 되는데 이 과정을 스풀링 이라고 한다.
1.5 다중 프로그래밍의 중요한 이점은 무엇인가?
2개 이상의 프로그램을 주기억장치에 기억시키고 중앙처리장치(CPU)를 번갈아 사용함으로써 컴퓨터 자원을 효율적으로 이용할 수 있다.
중앙처리장치(CPU)는 날로 고속화되고 계산능력이 크게 증가하는 반면 기계적인 동작이 따라야 하는 입출력장치의 속도는 이에 미치지를 못한다. 따라서 한 프로그램이 주변장치의 처리를 기다리는 동안 다른 프로그램이 수행될 수 있게 함으로써 전체적인 시스템의 처리효율을 높이는 것이다.
1.8 운영 체제의 효율적인 하드웨어 관리 능력에 대해서는 상당히 강조되어 왔다.
이러한 원칙을 무시하고 자원을 "낭비"해도 좋은 경우는 언제인가? 이러한 시스템이 정말로 자원을 낭비한다고 볼 수 없는 이유는 무엇인가?
멀티태스킹시에 시스템이 허용하는 범위내에서 GDI를 최대한 사용하는 경우.예를 들자면 차례차례 2번에 처리할 쓰레드를 한번에 두개모두 처리한다던가
하는 것이 그 예가 되지 않을까 생각한다.앞의 경우가 시스템 자원을 20%정도 활용하는데 반해 뒤의 경우가 시스템자원을 80%정도 활용한다면 자원사용 면에서는 낭비이지만 실제 시스템효율은 높아진다고 볼 수 있겠다.
1.12 실시간 시스템의 종류와 예를 설명하시오.
실시간 시스템은 경성 실시간 시스템 (hard real-time system)과
연성 실시간 시스템 (soft real-time system)으로 나누어진다.
경성 실시간 시스템은 데드라인 위반 사건 발생시, 재앙적 사건이 발생하는 시스템으로,
무기제어, 원자력 발전소 제어등 산업제어나 로보틱스제어를 예로 들 수 있다.
연성 실시간 시스템은 서비스의 개념에 시간성이 주어지지만, 데드라인 위반이 발생해도 크게 심각하지 않은 시스템으로 멀티미디어처리, 가상 실제, 해저 탐사, 우주 탐험 등의 분야에 활용되며 정보가전기기에 사용되는 Embedded System도 예로 들 수 있다.
1.13 휴대폰과 같은 내장형 시스템을 구성하는 소프트웨어에는 어떤 것들이 있는지 조사해 보자.
책과 인터넷을 기반으로 조사하였더니 Embedded Software엔 S/W개발도구, RTOS, 미들웨어, 응용 및 서비스등이 있었다.
RTOS
현재 세계시장에 나와 있는 상용 RTOS의 종류는 수십 종에 이르며, 대표적인 제품으로는 VxWorks, pSOS, QNX, OS-9, VRTX 등이 있다. 상용 RTOS는 PC의 Windows OS처럼 어느 특정 제품이 시장을 독점하지 않고, 적용 제품이나 규모에 따라서 여러 종류의 상용화된 또는 비상용화된 제품들이 많이 사용되고 있다. 현재 세계시장 점유율 1위를 차지하고 있는 제품은 WindRiver사의 VxWorks로서 2위인 ISI사의 pSOS와 합병하여 계속 세계시장 우위를 지키고 있다. ’90년대 초반까지 선두였던 VRTX는 현재 7위에 머물러 있다.
# VxWorksVxWorks는 WindRiver System 사에서 개발한 실시간 RTOS로 다양한 프로세서에서 복잡한 실시간 내장형 응용(embedded application)을 개발 및 실행시키는데 가장 널리 사용되고 있다. VxWorks는 코어 기능을 하는 wind Microkernel과 네트워킹 기능, 파일 시스템, 입출력 관리, c 표준 라이브러리 등으로 구성되어 있다. VxWorks의 특징 및 구조는 다음과 같다. ● POSIX 1003.1b, ANSI C, TCP/IP 등과 같은 산업계 표준을 폭 넓게 지원하여, 내부연동성과 이식성이 뛰어남● 고성능 마이크로커널을 기반으로 하여 빠른 멀티타스킹, 인터럽트, 스케줄링 등 실시간적인 특징을 지원하며 256가지 우선순위를 부여하여 멀티타스킹을 효율적으로 지원● 확장성을 지원할 수 있도록 설계되어 각 응용마다 최소의 RTOS 기능만으로 조립되어 메모리를 효율적으로 사용하며 수백가지의 configuration을 지원● 다양한 booting 방법을 지원하며, ROM으로부터 부팅하는 방법, 내부 디스크로부터 부팅하는 방법, 네트워크를 통해 부팅하는 방법 중 하나를 사용자에 의해 선택할 수 있도록 지원● Tornado라는 통합개발도구를 통해, GNU toolkit (cross compiler, remote debugger, utilities 등 포함), interactive shell, windview 등의 개발도구 지원
# pSOSpSOS는 임베디드 프로세서를 위하여 모듈화 되어, 고성능, 신뢰성, 사용 편이성에 주안을 두고 개발 되었으며, 실시간 멀티타스킹 커널인 pSOS+와 여러 모듈들의 집합으로 구성되어 있다.● pSOS+는 작고(17-40KB) 빠르며(context switching time이 10microsec 이하), 우선 순위에 기반을 둔 선점가능한 스케줄러 지원● pNA+를 통하여 TCP/IP, UDP를 지원하며, 스트림을 포함하는 표준 소켓 인터페이스 사용● Sun-compatible RPC를 pRPC+를 통해 지원하여 분산 응용을 쉽게 구축할 수 있음● Prism+라는 통합개발도구를 통해 사용자 설정과 pSOS 탬플릿과 칩레벨의 디바이스 드라이버 등을 지원
# QNXQNX는 마이크로커널의 특징을 발전시켜 개발하였으며, QNX Neutrino라는 마이크로커널을 코어로 내장시키고 나머지 부분은 프로세스의 형태로 모듈화하여 SMP 서버와 같은 대형시스템에서부터 작은 임베디드 시스템까지 광범위하게 사용가능하다.● 선점가능한 우선순위 스케줄러를 지원하며 32개의 우선순위와 같은 우선순위의 경우 FIFO, Round Robin, Adaptive 스케줄링을 적용하여 멀티타스킹 구현 가능● 메시지 패싱에 기반을 둔 IPC를 제공하고, 시그널이나 공유 메모리를 통한 IPC도 지원● 프로세스 당 여러 개의 타이머를 사용할 수 있고, 나노 초 단위로 동작● QNX만의 GUI 환경을 Photon microGUI로 구현할 수 있게 지원
# OS-9OS-9은 Microware System에서 제작한 운영체제로서 융통성있고 확장 가능한 구조를 특징으로 들 수 있으며, 시스템이 모듈화 되어 있어 결함 확산을 방지할 수 있다.● mwMAUI Graphics라는 임베디드 시스템을 위한 그래픽 API를 제공하여 적은 CPU 오버헤드로 높은 성능의 그래픽을 제공하여 줌● mwSoftStax 네트워킹이라는 통신기기를 위한 새로운 시스템 소프트웨어 파라다임 제공● DAVID라는 디지털 TV set-top box 용 멀티미디어 지원 라이브러리를 제공● 멀티미디어 응용에 적용하기 쉽도록 모듈화 되어 있어 각 멀티미디어 특성에 맞게 변형시키면 다양한 멀티미디어 요구를 충족 시킬 수 있음
# VRTXVRTX는 Microtec에서 개발한 모듈화 되고, 다양한 디버깅 도구를 보유한 RTOS로서 현재는 MentorGraphics에 합병되어 운영되고 있다.● VRTX nanokernel을 기반으로 모듈화하여 사용자의 요구에 따라 시스템의 재설정이 용이하고 메모리도 최적화 시킬 수 있음● 결정적(deterministic)이며 선점이 가능한 멀티타스크 커널을 구현● Spectra라는 통합개발도구 안에 XRAY debugger, Xpert profiler, virtual target simulator 등 지원
# Embedded LinuxOpen source인 Linux를 기반으로 임베디드 시스템에서 활용할 수 있도록 수정한 운영체제이다. 여러 기관에서 embedded linux를 발표하였는데 대표적인 것으로는 RT-linux, KURT, μClinux, Lineo 사의 Embedix 등이있다. Embedded linux는 open source라는 장점은 있지만 확실한 안정성과 서비스를 보장 받지 못하는 점, 아직까지 통일된 API가 확정되어 있지 않고, 다양한 개발도구가 지원되지 않는 점 등이 단점으로 남아 있다.● open source를 기반으로 수 많은 개발자 확보 가능 ● 다양한 종류의 네트워킹, 파일시스템, 프로토콜 지원하여 광범위한 응용과 하드웨어 지원● GNU 도구를 사용하여 cross compiler, remote debugger, 각종 utilities 등을 지원
임베디드 미들웨어 분야에서는 위치기반 상황인식 서비스는 모바일 컴퓨팅 환경에서 수시로 이동하는 단말과 사용자의 위치를 인식하여 다양한 위치 인식 응용에 활용할 수 있도록 하는 것으로, MS의 UPnP(Universal Plug and Play), Sun의 Jini, Oracle의 9iASWE(Oracle9i Advanced Search Wireless Enabling), CMU의 Coda, UCL의 XMIDDLE(Information Sharing Middleware for Mobile Environment) 등이 있다. 이동성 지원 기술은 고속의 WLAN 개발과 WPAN (Wireless Personal Area Network)의 활용이 높아짐에 따라 빠른 로밍과 마이크로 모빌리티의 연구가 활발하게 수행되고 있다. 시스템 및 네트워크 환경에 적응하여 서버로부터 클라이언트로 다운로드 되는 멀티미디어 스트리밍 기술은 MS의 DirectX 8.1과 WMF(Windows Metafile), SUN의 JMF(Java Media Framework), Real Networks의 Real Player 등에서 개발 중에 있다. 또한, 분산 실시간 미들웨어 기술은 SUN과 IBM이 공동으로 연구하고 있는 Real-time JAVA를 비롯하여 HP의 J-Consortium, OMG(Object Manage ment Group)의 RealTime-CORBA, Washington Univ.의 TAO1 등에서 연구가 활발하게 이루어지고 있다.
임베디드 S/W 개발 도구 분야에서 임베디드 시스템 개발을 지원하는 전통적인 통합 개발환경은 많이 있지만 특정 임베디드 OS 만을 지원하는 경우가 대부분인 실정이다. WindRiver 사의 Tornado는 VxWorks RTOS를 지원하며 GNU 툴킷, Interactive shell, WindView 등의 도구들이 통합된 편리한 사용자 인터페이스를 제공하여 세계 시장 1위를 점유하고 있다. 한편, Borland, IBM, Merant, QNX, Rational Software, RedHat, SuSE 등이 공동으로 eclipse 개발 환경을 개발 중인데 eclipse는 데스크탑용으로 공개된 상태로 임베디드 개발 환경까지는 아직 지원하지 못하고 있다. 임베디드 S/W의 소프트웨어 특성상 분산 환경을 고려해야 하지만 이를 고려한 임베디드 개발 도구도 아직 개발되지 않고 있다.
임베디드 응용 및 서비스 분야를 살펴보면, 항공 및 군사용에 주로 사용되는 실시간 제어 응용은 지금까지는 한 시스템에 모든 센서가 연결되어 동작하는 형태였지만, 유비쿼터스 컴퓨팅 환경에서는 응용에 필요한 요소들이 네크워크 상에 존재하면서 동적으로 재구성되어 실행될 것이다. 정보단말과 네트워크의 특성에 따라 적절한 성능의 컨텐츠를 서비스하는 적응형 스트리밍 기술이 MPEG-4에서 제안되었지만 아직 초기 연구 단계이며, UMTS/IMT-2000과 공중 WLAN/WPAN이 통합되는 글로벌 IP 환경에서 사용자 및 단말의 빈번한 위치 변동과 무관하게 동일한 서비스를 제공하기 위한 마이크로 핸드오프와 로밍, 모바일 IP 기술 연구를 3Com, Bay, Cisco, Digital 등에서 수행하고 있다. 한편, 도로 상황과 차량 상태에 따라 효과적인 교통상황을 유지하기 위한 기술은 원격 교통정보수집 단계에서 첨단교통관리, 첨단차량시스템, 첨단도로 시스템 등의 기술이 포함된 ITS로 발전하고 있다.
자료출처
웹사이트 : http://www.naver.com , http://itfind.or.kr
도서 : 운영체제개념 (김길창, 김정국 편저, 홍릉과학출판사)
첫댓글 DDC,DCS등 각종 제어시스템의 구성을 단순히 제어개념에서 바라보는것보다 전산쪽개념에서 보는시각이 필요한것 같아 올려봤습니다..