Multimedia
: 미디어가 여러개 섞여 있는 데이터 (텍스트, 그래픽, 음성, 영상 등)
Video server가 있고, 그 서버의 내용을 빠르게 전송할 수 있는 network가 필요하다.
High data rate
: 데이터 양이 매우 많다.
real-time playback
: real-time을 요구한다.
Analog 방식을 사용하고, 노이즈에 민감하다.
sin(아날로그) 신호를 디지털 신호로 변환한다.
변환 방식은 2가지가 존재한다.
이미지를 압축하여 블록 단위로 저장하는 방식
예전에는 RGB 신호를 사용했지만, 현재는 YIQ 신호를 사용한다.
640 * 480
이미지에서, Y는 640 * 480
해상도, I,Q는 320 * 240
해상도로 저장JPEG 인코딩 과정
- 블록 분할
: 이미지를 8 bit * 8 bit 블록 단위로 분할- 주파수 성분 분할
: 각 블록을 구성하는 픽셀값들의 명암을 주파수 성분으로 변환- 주파수의 세기 저장
: 모든 주파수 세기를 다 저장하기에는 너무 많기 때문에, 일부만 저장한다.
낮은 주파수 성분(전체 윤곽)은 중요, 높은 주파수 성분(디테일)은 중요하지 않다.
DCT coefficient / Quantization table = Quantized coefficient
Quantized coefficient에서 0이 아닌 것만 저장한다.
동영상을 JPEG의 연속으로 처리허여 차이점만 저장하는 방식
MPEG의 구성요소는 다음과 같다.
Intracoded Frame
: 독립적으로 JPEG 이미지처럼 압축되는 프레임
Predictive Frame
: 이전 프레임과의 차이점만을 저장하는 프레임
Bidirectional Frame
: 앞 뒤 프레임과의 차이점을 저장하는 프레임
MPEG의 특징
MPEG은 비디오의 재생 순서와 다르게 데이터를 디코딩한다.
예를 들어, 1번과 3번 프레임을 먼저 디코딩한 후, 이 정보를 사용하여 2번 프레임을 재구성한다.
오디오 압축은, 아날로그 데이터를 주파수 성분으로 분해하고 중요한 성분만 저장한다.
Threshold of audibility (가청 주파수)
Real-Time Scheduling의 특징은 다음과 같다.
각 프로세스는 Periodic하다.
: 일정 주기마다 한 번씩 실행해줘야 한다.
각 프로세스마다 실행하는 시간이 정해져 있다.
Real-Time Schedling 방식은 2가지가 존재한다.
실행 주기가 짧을수록 작업에 높은 우선순위를 부여하는 방식
또는,Rate = 1/주기
이므로 Rate가 높을수록 우선순위를 높게 주는 방식이라 말 할 수도 있다.
RMS의 유효성 검사를 위해서는 schedulability Test가 필요하다.
모든 Task가 deadline을 미스하지 않고 아무 문제 없이 실행할 수 있을지 판단하는 과정이다.
수식을 통한 테스트
프로세스의 Utilization 값의 총합이 특정 값보다 작으면, 반드시 Scheduling이 가능하다.
Utilization = 실행 시간 / 실행 주기
프로세스가 1개인 경우Utilizaion < 1
이면 Test 통과
프로세스가 2개인 경우Utilizaion 총합 < 0.828
이면 Test 통과
프로세스가 3개인 경우Utilizaion 총합 < 0.779
이면 Test 통과
예제를 통한 테스트
프로세스(Task) A, B, C가 존재한다.
- A는 30ms마다 한 번씩 실행해야 한다. 한번에 10ms 실행한다.
- B는 40ms마다 한 번씩 실행해야 한다. 한번에 15ms 실행한다.
- C는 50ms마다 한 번씩 실행해야 한다. 한번에 5ms 실행한다.
위의 경우, 테스트 통과
프로세스 주기들의 최소 공배수까지 테스트를 실행해봐야 한다!
⚠️ Real-Time system에서는 우선순위가 최고이다!
우선순위 높은 프로세스가 생기면 무조건 Context Switching. (위의 그림에서 100ms 대를 살펴보자)
Deadline이 빠른 작업부터 실행하는 방식
Real-Time System에서는 Priority Inversion이 발생할 수 있다.
Priority Inversion은 이전 포스팅을 참고하자.
pull server
: client가 요청을 하면 데이터를 보내준다.
여러 데이터를 받으려면 여러번 요청을 보내야 한다.
push server
: 한 번 요청을 보내면, 지속적으로 데이터를 보내준다.
서버에 존재하는 영화 하나를 1000명의 client가 보고있다면, 1000개의 스트림이 필요하다.
왜냐하면, 1000명의 클라이언트가 시청하고 있는 장면이 다르기 때문이다.
어떻게 하면 스트림 수를 줄일 수 있을까?
영화의 런닝타임이 2시간인 경우
➜ 영화를 5분 단위로 잘라서, 24개의 스트림을 만든다.
➜ 각 클라이언트는 24개의 스트림 중 하나를 선택해서 시청한다.
⚠️ client가 5분 단위 스트림 말고, 특정 시간의 스트림을 원하는 경우?
셋톱박스를 사용한다.
셋톱박스는 이전 스트림을 캐싱해서 저장하고 있다.
User1는 조금씩 느리게 플레이, User2는 조금씩 빠르게 플레이해서 스트림을 맞춘다.
결국 24개 스트림으로 merge하게 된다.
Disk에 파일 형태로 video, audio, text를 저장해야한다.
멀티미디어를 위한 File Organization Strategy는 블록의 크기로 분류할 수 있다.
블록의 크기를 작게 설정하는 전략
블록의 크기를 크게 설정하는 전략
Frame Index 크기는 크다.
Block Index 크기는 작다.
📚 Modern Operating Systems, Third Edition - Andrew S. Tanenbaum