멀티미디어공학

download report

Transcript 멀티미디어공학

1. 운영체제 소개
1. 운영체제 개요
• 운영체제 목적과 기능
– 컴퓨터 시스템 계층적 관점
일반
사용자
프로그래머
응용 프로그램
유틸리티
운영체제
컴퓨터 하드웨어
운영체제
설계자
– User/Computer Interface
• 역할
– 프로그래머 혹은 일반 사용자가 Application 프로그램
을 용이하게 사용할 수 있도록 중재.
• 서비스
–
–
–
–
프로그램 생성 : Editor 및 Debugger 지원.
프로그램 실행 : Task 생성 및 I/O 장치 및 파일 초기화.
I/O 장치로의 접근
파일 접근 제어 : I/O 장치의 특성 정보를 통해 파일에
대한 접근 및 제어 수행.
– 시스템 접근 : 불법 접근에 대한 제어와 동시 접근에 대
한 관리.
– 에러 감지 및 반응 : 에러 발생 시 적절한 조치.
– 통계 및 모니터링 : 각종 자원의 사용 통계 및 성능 매
개변수 모니터링.
– Resource manager
• 자원
– 프로세서, 주기억장치, 디스크, I/O 장치, 데이터베이
스 등 컴퓨터 시스템을 구성하는 부분들에 대한 총칭.
• 자원 관리의 필요성
– 컴퓨터 시스템의 자원은 유한한 것에 비해 이 자원의
사용을 요구하는 Task들은 많기 때문에 Supervisor 입
장에서 이들에 대한 관리를 하지 않으면 Task들이 정
해진 시간 내에 종료될 수 없으며 이는 시스템 성능의
하락을 초래.
• 기능
– 자원 스케쥴링.
– 자원 할당.
– 자원에 대한 접근 제어.
• 운영체제가 관리하는 자원
컴퓨터 시스템
I/O 장치
메모리
I/O 제어기
운영체제
소프트웨어
I/O 제어기
.
.
.
프로그램
과 데이터
I/O 제어기
프로세서
. ..
프로세서
저장장치
운영체제
프로그램
데이터
▶ 운영체제의 정의
1) 환경 제공자
컴퓨터 시스템의 기본 요소인 하드웨어, 소프트웨어,
자료를 다른 프로그램이 유용한 작업을 할 수 있도록
환경을 제공
2) 자원 할당자
사용자의 작업을 위한 프로그램이 필요로 하는 컴퓨터
시스템의 자원을 할당하되, 충돌 시 공정하고 효율적
으로 할당
3) 제어 프로그램
컴퓨터의 오류와 부적절한 사용의 방지를 위해, 다양
한 입출력 장치와 사용자 프로그램을 제어
▶ 운영체제의 역할
ㆁ 사용자와의 인터페이스를 정의
ㆁ 사용자들 간에 하드웨어를 공동으로 사용
ㆁ 사용자들 간에 데이터를 공유
ㆁ 사용자들 간에 자원 스케줄링 즉 자원 할당자 역할 수행
자원 → 프로세서, 기억장치, 입출력장치, 데이터
ㆁ 입출력 보조 역할
ㆁ 오류 처리
▶ 운영체제의 목적
- 주목적 : 편의성 – 컴퓨터 사용의 편의 제공
- 부목적 : 효율성 – 컴퓨터 시스템의 효율적인 운영
→ 각 프로그램을 유기적으로 결합시켜 시스템 전체의
생산성을 향상시킬 목적으로 설계
시스템의 성능 요소
가. 처리능력
시스템 생산성을 나타내는 지표. 단위 시간당의 작업처리량
나. 신뢰도
H/W, S/W가 실패없이 주어진 기능을 수행할 수 있는 능력
고장율 = 1 / MTBF (MTBF : 평균고장간격)
다. 응답시간
사용자가 시스템에 작업을 의뢰하고 나서 어떠한 반응을 얻
을 때까지의 시간
라. 사용가능도 (= 가동율)
전체 운전시간에 대한 시스템의 정상운전시간의 비율
사용가능도 = MTBF / MTBF + MTTR (MTTR : 평균수리시간)
1. 초기 시스템 – 작업별 처리
▶ 초기 컴퓨터 : 콘솔에 의해 구동되는 큰 기계
- 입력장치 : 카드 판독기, 테이프 구동기
- 출력장치 : 라인 프린터, 테이프 구동기, 카드 펀치
→ 사용자는 통상 펀치 카드 형태로 된 작업을 준비하여 컴퓨
터 조작자에게 제출한 후, 출력으로 프로그램 결과를 받거
나, 에러 시에는 메모리나 레지스터의 덤프를 받음
▶ 초기 운영체제 : 간단한 일괄 시스템을 위한 기억장치 구성도
- 주요 업무는 제어를 한 작업에서 다음 작업으로 전달.
메모리에 상주함
- 처리 속도 향상을 위해 프로그램들을 유사한 요구를 가지는
일괄작업들로 정렬시켜 처리
→ CPU 유휴는 여전히 발생 : 기계적인 입출력 장치가 전자적
인 CPU 보다 느리기 때문
2. 모니터 – 일괄처리 시스템
준비 시간을 줄이기 위한 조치로 유사한 작업을 묶어서 처리
상주모니터 : 하나의 작업에서 다른 작업으로 진행을 자동적으
로 제어하는 프로그램
① 장점 : 컴퓨터 시스템을 효율적으로 사용할 수 있으며 자원
관리와 스케줄링이 간단하다.
② 단점 : 작업의 제출에서부터 최종 결과를 얻을 때까지의 시간
이 비교적 길다.
3. 오프라인 연산
ㆁ 입출력 장치의 느린 처리 속도를 보완하기 위함.
ㆁ 카드 판독기나 프린터와 같은 느린 입출력 장치를 자기 테이
프 장치로 대체하는 것.
4. 버퍼링 (Buffering)
ㆁ 입출력 장치의 느린 속도를 보완하는 방법
ㆁ 한꺼번에 여러 개의 레코드들을 주기억 장치에 모아 입출력
ㆁ 위와 같은 용도로 사용되는 주기억 장치 공간이 버퍼링.
ㆁ 두 개의 버퍼를 사용하여 입력하는 경우 CPU가 한쪽 버퍼의
내용을 처리하는 동안 입력 장치는 다른 쪽 버퍼에 입력한다.
5. 스풀링 (SPOOLing)
ㆁ 각 사용자들의 출력 데이터를 디스크에 모았다가 나중에 한
꺼번에 출력함으로 프린터 장치의 공유 및 프린트 처리 속도
를 보완하는 기법
ㆁ 디스크는 전송률이 높고 탐색 시간이 짧아 액세스가 빠르다.
ㆁ 한 작업의 입출력과 다른 작업의 계산 중복 가능
1.2 운영체제의 유형
– 운영체제의 유형
• 순차(Sequential) 처리
– 1940년대 말부터 1950년대 중반까지의 시스템 유형.
– 프로그래머 혹은 시스템 운영자의 직접 조작에 의한
시스템 관리.
– 문제점
» Scheduling 문제 : 시간을 정해서 작업을 수행하
기 때문에 조기에 종료되면 남는 시간이 유휴가
되고, 시간이 초과되면 작업 중지를 해야 함.
» Setup Time 문제 : 프로그램 실행을 위해 컴파일
러와 원시 프로그램을 적재하여 실행 프로그램을
생성하게 되는데 이와 같은 절차가 각 Task마다
순차적으로 이루어지기 때문에 같은 작업의 반복
으로 Setup Time이 길어짐.
• 단순 일괄처리(Batch) 시스템
– 1950년대 중반부터 1960년대 초반까지의 시스템 유형.
– 순차 처리 시스템의 단점을 부분 보완하여 관련있는 Task
들을 모아 일괄 처리함으로써 Setup Time을 줄임으로써 시
스템 성능을 향상시킨 방식.
– Monitor
» 시스템이 처리할 Task들을 자동적으로 분류함으로써
지금까지 프로그래머 혹은 시스템 운영자가 하던 Task
분류 및 적재를 자동적으로 수행하는 소프트웨어.
– Resident Monitor
» Monitor가 Task에 대한 제어를 수행하기 위해서는 항
상 실행 가능한 상태로 주기억장치에 적재되어 있어야
하기 때문에 “Resident(상주)”라는 개념을 사용.
– Resident Monitor를 위한 메모리 배치
인터럽트처리
장치 드라이버
작업 순서화
제어 언어
인터프리터
사용자 프로그램
영역
모니터
경계
– JCL(Job Control Language)
» 특수한 형태의 프로그래밍 언어로 필요한 명령을
Monitor로 전달하는데 주로 작업의 시작과 끝 등을
나타냄으로써 Setup Time을 효과적으로 처리.
– 그 밖의 특징
» 메모리 보호 : 실행 중인 사용자 프로그램이
Monitor를 포함하고 있는 메모리 지역을 변경하지
못하도록 하는 기능.
» Timer : 단일 Task가 시스템을 독점하지 못하도록
시스템 사용 가능 시간을 설정하여 제어.
» Privilidged Instruction : 일부 명령어를 Monitor만
실행할 수 있도록 특권을 부여하여 다른 Task들이
장치 혹은 작업 제어를 할 수 없도록 조치.
» Interrupt
• 다중프로그래밍 일괄처리 시스템
– 1960년대 중반의 시스템 유형.
– I/O 장치의 처리 속도는 프로세서의 처리 속도에 비해
상대적으로 매우 느리기 때문에 일괄처리하더라도 프
로세서의 유휴(Idle) 시간이 길다는 단점을 보완하여
주기억장치에 여러 개의 프로그램을 적재하여 I/O 작
업이 이루어지는 동안 프로세서는 다른 Task를 처리하
도록 하여 프로세서의 활용율을 높이도록 한 방식.
» 프로세서의 불합리한 사용 예
.한 레코드 읽기 : 0.0015sec
.100개의 명령어 실행하기 : 0.0001sec
.한 레코드 쓰기 : 0.0015sec
.전체시간 : 0.0031sec
.CPU 이용률 : 0.0001/0.0031 = 3.2%
.CPU 유휴율 : 96.8%
– 다중프로그래밍 예
실행
실행
대기
A
대기
시간
실행
실행
대기
B
대기
시간
실행
실행
대기
C
대기
시간
실행
A
실행
B
대기
실행
C
대기
실행
A
실행
B
실행
C
대기
– 다중프로그래밍 실행 특성
작업의 형태
지속시간
메모리 요구량
디스크가 필요한가?
터미널이 필요한가?
프린터가 필요한가?
프로세서 사용률
메모리 사용률
디스크 사용률
프린터 사용률
경과 시간
작업 처리율
평균 응답시간
작업1
많은 계산
5분
50K
아니오
아니오
아니오
단일프로그래밍
17%
30%
33%
33%
30 min.
6 jobs/hr
18 min.
작업2
많은 I/O
15 분
100 K
아니오
예
아니오
작업3
많은 I/O
10 분
80 K
예
아니오
예
다중프로그래밍
33%
67%
67%
67%
15 min.
12 jobs/hr
10 min.
• 시분할(Time Sharing) 시스템
– 1970년대부터 주로 사용되어 온 시스템 유형.
– 각 프로그램이 아주 짧은 시간 동안(time quantum) CPU에
의해 번갈아 처리됨으로써 짧거나 Interaction이 많은 Task
는 조기에 종료될 수 있도록 하여 시스템 성능을 향상시키
는 기술.
– 다중프로그래밍 일괄처리시스템과 시분할 시스템
다중프로그래밍 시스템 시분할 시스템
목적
CPU 사용율 극대화
응답시간 최소화
운영체제에 작업과 함께 제공
터미날에서
대한 명령어 되는 작업 제어
입력되는 명령어
소스
언어 명령어
– 원리
» 운영체제의 Overhead를 무시할 때 n명의 사용자가 각
각 1/n만큼의 CPU를 사용하는 것으로 사용자가 인지
할 수 없을 만큼 빠르기 때문에 모든 사용자는 항상 시
스템을 자신이 독점하는 것으로 생각.
분산시스템
▶ 분산시스템 : 여러 개의 컴퓨터를 통신 회선으로 연결하여 작업과 자원
을 분산시켜 처리하는 방식
① 강결합 : 프로세서들이 기억장치와 클럭을 공유
② 약결합 : 두 개 이상의 독립된 컴퓨터 시스템을 통신선을 통하여 연결
▶ 분산 시스템의 목적
1) 자원 공유 : 한 사이트의 사용자는 여러 사이트의 자원을 공유 가능
2) 연산 속도 향상 :
- 병행 수행될 수 있는 서브 연산의 분산
- 특정 사이트에 걸린 심한 부하를 부하가 적은 다른 사이트로 이동시키는
부하 공유
3) 신뢰성 : 시스템이 중복되어 있는 경우 일부 사이트의 고장을 극복
4) 통신 :
- 서로 다른 사이트에 있는 프로세스간의 정보 교환
- 사용자간의 전자우편
실시간 시스템
ㆁ 마이크로 컴퓨터와 고속 아날로그/디지털 입출력 장치의 발전과 더불어
개발되고 실용화된 시스템
ㆁ 예) 자동화 엔진 연료 주사 시스템, 과학실험, 산업 제어 시스템 등
ㆁ 고정된 시간 제약을 가지고 있어 정의된 시간을 초과하면 실패한 시스템
ㆁ 보조기억장치나 가상장치의 개념이 없다
다중처리기 시스템
▶ 여러 개의 처리기들이 컴퓨터 버스, 클록, 기억장치, 주변 장치를 공유하는 강결합 시
스템 ↔ 단일 처리기 시스템
- 처리율 증가 : 다수 처리기에 의한 오버헤드로 인해 처리기의 수에 비례하여 증가하
는 것은 아님
- 비용 절약 : 주변장치, 케이스, 전원 공급 등의 공유
- 신뢰성 증가 : 고장난 처리기를 대신하여 나머지 처리기들이 다소 느려지지만 분산
처리함
→ 단계적 성능 저하, 고장 소프트
① 대칭적 다중처리 : 각 처리기가 운영체제의 동일한 복사본을 수행
→ 여러 처리기가 방대한 자료를 동시에 처리
② 비대칭적 다중처리 : 주종 관계의 처리기들에 특정 태스크가 할당
- 주 처리기 : 시스템 제어
- 종 처리기 : 주 처리기의 지시 또는 정해진 업무 수행
6. 단일 사용자 시스템
ㆁ 하나의 컴퓨터 시스템이 한 명의 사용자에게 전용 → 개인 컴퓨터
ㆁ 최근에는 사용자 편리와 빠른 응답을 위해 다중 다스킹, 다중 사용자 환경으로 변화
• 주요 성과
– 다음의 5가지 측면에서 고찰
• Process
– 실행 중인 프로그램 혹은 프로그램이 활성화된 상태
혹은 프로세서에서 할당되어 실행될 수 있는 개체 등
으로 정의.
– 프로세스 오류
» 동기화 오류 : I/O 동작 때문에 일시 정지된 프로세
스는 상황 종류 시그널이 도착해야만 재동작을 하
는데 이 시그널이 도착하지 않는 경우.
» 상호배제 실패 : 한 순간 한 프로세스만 하나의 자
원을 점유해야 하는 상황이 지켜지지 않는 상태.
» 일정하지 않은 프로그램 연산 : 메모리 상에서 두
개 이상의 프로세스가 공간을 공유함으로써 간섭.
» 교착상태 : 둘 혹은 그 이상의 프로세스가 서로 상
대가 점유하고 있는 자원을 요구하는 상태.
• 메모리 관리
– 프로세스 분리
» 독립적인 프로세스들이 서로 다른 프로세스를 침
범하지 못하도록 분리하는 기술 제공.
– 자동 할당 및 관리
» 프로그램은 요구될 때마다 메모리 계층 구조를 따
라 동적으로 할당되어야 하고, 이러한 할당은 자동
을 수행.
– 모듈식 프로그래밍 지원
» 모듈의 정의, 작성, 삭제 그리고 크기의 동적 변경
가능.
– 보호 및 접근 제어
» 메모리의 공유 및 접근 제어가 효과적으로 이루어
져야 함.
– 장기 저장
» 정보에 대한 장기 저장 수단 제공.
• 정보 보호와 보안
– 접근 제어
» 사용자가 전체 시스템, 서브 시스템, 데이터와 시
스템 내의 다양한 자원과 객체에 대한 접근 제한.
– 정보 흐름 제어
» 시스템 내에서 데이터의 흐름과 데이터가 사용자
에게 전달되는 것 제한.
– 보증
» 접근 및 흐름 제어 메커니즘이 정해진 사양에 따라
동작하며, 요구된 대로 보호 및 보안 정책을 수행
하는지 증명.
• 스케쥴링과 자원 관리
– 공정성
» 특정 자원을 사용하고 경쟁하는 모든 프로세스들은
그 자원을 대체적으로 공정하게 접근할 수 있어야 함.
– 차등 서비스
» 운영체제는 서비스 요구가 다른 작업 클래스 간을 구
별해야 하며 운영체제는 요구 조건을 전반적으로 만
족시킬 수 있도록 할당 및 스케쥴링을 해야 함.
– 효율성
» 운영체제는 공정성과 효율성을 유지하면서 작업 처
리량을 극대화하며, 반응 시간을 최소화하고 시분할
의 경우 가능한 한 많은 수의 사용자를 동시에 처리
할 수 있어야 함.
• 시스템 구조
– Level 1
» 각종 Register, Memory Cell, Logic Gate 등의 전자회
로로 구성.
– Level 2
» Add, Subtract, Load, Store 등의 프로세서 명령어 집
합으로 구성.
– Level 3
» Procedure 또는 Subroutine 등으로 구성.
– Level 4
» Interrupt 처리 루틴 제공.
– Level 5
» 실행 중인 프로그램 즉 프로세스의 활동 단계.
– Level 6
» I/O 작업을 위한 보조기억장치의 활동.
– Level 7
» 프로세스를 위한 논리 주소 공간 생성.
– Level 8
» 프로세스들 사이의 정보와 메시지의 교환 담당.
– Level 9
» 이름이 부여된 파일을 위한 장기 Storage 제공.
– Level 10
» 표준화된 Interface를 통해 외부 장치에 접근하는
기능 제공.
– Level 11
» 시스템 자원과 객체의 외부와 내부 명칭 간의 연관
성 유지.
– Level 12
» 프로세스 지원을 위해 필요한 모든 기능 지원.
– Level 13
» 운영체제 이용에 필요한 사용자 Interface 제공.
• 최근 운영체제의 특징
– Multi Threading
• 응용 프로그램을 실행하는 프로세스를 동시에 실
행하는 Thread로 분할하는 기법
– Thread
» 작업의 Dispatch 단위인데 순차적으로 실행되며 필
요 시 프로세서가 다른 Thread를 처리할 수 있도록
Interrupt 가능. 스케쥴링과 Dispatching 관점에서 볼
때 프로세스에 해당.
– 프로세스
» 하나 또는 그 이상의 Thread와 관련 시스템 자원들
로 구성되는데 하나의 단일 프로그램을 여러 개의
Thread로 분할함으로써 프로그래머는 응용 프로그
램의 모듈화와 그와 관련된 이벤트의 타이밍을 제
어. 작업과 응용 프로그램 관점에서 볼 때 프로세스
에 해당.
– SMP(Symmetric Multi Processing)
• 특징
– 여러 개의 프로세서들로 구성되고, 이들 프로세서들은
버스나 다른 내부 연결 방식에 의해 상호 연결된 주기
억장치와 I/O 공유.
– 장점
» 성능 : 작업의 일부가 병렬 처리됨으로써 성능 향
상.
» 이용률 : 하나의 프로세서에 장애가 발생해도 시스
템 전체는 작동하므로 최소한의 이용률 유지.
» 점진적 확장 : 사용자는 성능 향상을 위해 필요할
때마다 프로세서 추가 설치 가능.
» 스케일링 : Vendor들은 시스템을 구성하는 프로세
서의 수에 따라 가격과 성능이 다른 다양한 제품
공급 가능.
1.3 운영체제의 역사 및 발전과정
• 컴퓨터 사용자와 프로그래머 관점
–
–
–
–
–
1세대:종이 테이프
2세대:펀치 카드
3세대:더미 터미널(VT100, IBM3270)
4세대(1976년 애플 컴퓨터 이후) : PC
5세대(1993년 Mosaic개발 이후):멀티미디어
PC, 인터넷과 웹(WWW)
• 1950년대 운영체제의 등장
– 1945-1952년
• 운영체제의 모든 일을 오퍼레이터라는 사람들이 직접 담
당하여 한번에 하나의 작업만 수행
• 하나의 작업이 종료되고 다음 작업이 시작할 때까지 준비
시간에 따른 자원의 이용이 낭비
– 1952년- : 운영체제가 등장 (IBM701,IBM704)
• 모든 작업을 일괄 처리(batch processing) 함
• 표준적인 입-출력 프로그램이 입-출력 제어 시스템(I/O
control system)의 제공
• 작업 제어 언어(job control language) 등장
• 제한된 오류 회복 프로그램 제공
• 1960년대 초
– OS: 하드웨어를 효율적으로 이용하기 위해
개발 -> 멀티프로그래밍 등장(처리율 높임)
– 프로세서의 이용율을 높이게 됨
– 시스템 처리 능력 증가
– Virtual memory 기술 제안
– 텍스트 에디터 기능 강화 : 프로그램과 데이
터의 입력 시간 단축
• 1960년대 중반 IBM S/360과 시분할 체제
– 시분할 체제(time-sharing system) 개념의 등장
• 여러 프로그램이 허용된 시간 양(sliced time) 동안만 프로
세서에 할당되어 수행되고, 그 할당 시간이 지나면 다음 프
로그램이 할당 시간만큼 수행되도록 하는 방식 : Unix 운영
체제의 모체가 됨
• 1960년대 말 S/W의 위기
– H/W의 엄청난 발전되었지만 운영체제를 포함한 각
종 소프트웨어는 하드웨어보다는 발전이 되지 못함
– 1968년경부터 ‘소프트웨어 공학’을 통해 S/W crisis
를 극복하기 위해 노력
• 1970년대 전반기 IBM S/370과 Unix OS
탄생
– IBM계열의 복잡 다양한 운영체제들과 Unix
계열의 간단한 미니 컴퓨터용 운영체제들이
양립한 시기
• 1970년대 후반
– 최초 PC의 등장, 구조적 소프트웨어 공학 기
술이 개발된 시기
• 1980년대
– 수많은 컴퓨터(초대형, 대형,중형,소형,워크스테이
션,PC) 등장 -> 다양한 OS 등장
– 윈도우 및 GUI 기술 등장 : 사용자 편리성 제공
• 운영체제와 사용자 간의 도형적 인터페이스 기술 가능
• 1990년대
– WWW 을 통한 ‘사이버 스페이스’ 개념 등장
– 멀티미디어 PC등장
• 1990년 (계속) : 특징
–
–
–
–
Unix의 기능 확장 및 다종화
Windows 및 GUI의 일반화 : 인간과 컴퓨터의 상호작용
MS-Windows와 NT의 대중화
서로 다른 운영체제 간의 호환성을 유지해 주는 미들웨
어 : ‘분산 운영 체제’ 와 ‘네트워크 운영체제’의 일반화
– 멀티미디어 자원의 관리 : H/W의 발전
– 보안 기술 강화 : 네트워크를 통한 보안 문제의 중요성
강화
– 객체지향 기술을 이용한 운영체제 개발 : 소프트웨어의
생산성을 높임
• 하드웨어 VS 소프트웨어
– H/W와 S/W는 기능을 수행함에 있어서 상호
호환 관계를 갖는다.
• S/W 처리 : 논리적인 처리
• H/W 처리 : 물리적인(실제적인) 처리
• 예 : 덧셈을 하는 경우, 실제 덧셈은 컴퓨터 내의
가산기 회로(H/W)에 의해 계산되지만 이는 먼저
특정 프로그래밍 언어로 프로그램(S/W)이 작성
되어야 한다.