PPID (부모 프로세스) - 선행 프로세스라고도 하며, 자식 프로세스 생성 가능 - fork() 호출을 통해 자식 프로세스 생성 - 부모 프로세스는 여러 개의 자식 프로세스를 실행하여 다수의 작은 작업들을 동시에 처리
자식 프로세스 - 부모 프로세스가 처리 중인 파일 등을 공유 - 부모 프로세스에서 fort()하여 생긴 프로세스 - 프로그램에서는 부모 프로세스의 복사로 부모와 교신하면서 프로세스 진행
init - 부팅되면서 가장 먼저 실행되는 프로세스는 init, init의 PID는 1 - init 프로세스는 파일 시스템의 구조 검사 - 파일 시스템의 마운트하고 서버 데몬을 실행하며, 사용자 로그인을 기다리고 사용자를 위한 셸을 실행하는 역할 - /etc/initab : 처음 수행해야할 작업들을 설정하는 파일, 시스템의 상태에 따라 해당하는 런레벨에서 init 프로세스가 수행해야할 파일을 지정
2.2 프로세스 관련 명령어
ps 명령어 : 현재 작동하는 프로세스 목록, 프로세스의 현재 상태 출력
kill 명령어 : 현재 작동하는 프로세스 종료
top 명령어 : 실시간 프로세스 모니터링
2.3. 프로세스 상태
프로세스의 상태 종류 : 생성, 준비, 실행, 대기, 종료
new : 프로세스가 생성된 상태
ready : 프로세스가 생성된 후 프로세서에 할당되기를 기다리는 상태
running : 프로세서에 할당되어 CPU를 차지하고 있는 상태
wait : 프로세스가 특정 이벤트를 기다리는 상태 → 프로세서에 할당되어 있지만 프로세서의 클락을 낮추거나 일시적으로 멈춤으로써 에너지 소비를 줄일 수 있는 상태
terminated : 프로세스 종료된 상태
프로세스의 상태 전이
Dispatch (ready -> running)
여러 프로세스들 중 한 프로세스를 선정하여 CPU에 할당하는 과정
Interrupt (running -> ready)
할당된 CPU 시간이 지나면 Timeout Interrupt 가 발생하여 CPU를 다른 프로세스에게 양도하고 자신은 ready 상태로 전이되는 과정
Block (running -> waiting)
I/O 등의 자원 요청 후 즉시 할당받을 수 없어, 할당받을 때까지 기다리기 위해 running에서 waiting 상태로 전이되는 과정
I/O 처리는 CPU가 아닌 I/O 프로세스가 담당하기 때문에 block이 발생함
Wakeup (waiting -> ready)
필요한 자원이 할당되면 프로세스는 waiting에서 ready 상태로 전이되는 과정
2.4. 프로세스의 구성
2.4.1. 프로세스 메모리
운영체제는 프로세스마다 고유의 가상 메모리 공간 제공
프로세스 메모리 공간은 다시 코드, 데이터, 스택, 힙 영역으로 세분화
text section instruction(text section) - 컴파일된 기계어가 저장되는 영역 - compile time에 크기 결정
data section - 사전에 선언된 데이터가 저장되는 영역 - compile time에 크기 결정 - 내부 data&bbs 영역으로 구분 •initalized data section → 초기화된 전역 변수가 저장되는 영역 (DATA) •uninitialized data section→ 초기화되지 않은 전역 변수가 저장되는 영역 (BBS)
heap - new, delete, malloc, free 등을 호출하여 데이터를 저장 & 관리하는 영역 - runtime에 크기가 결정
stack - 매개변수, 지역변수, return 주소 등과 같은 데이터를 저장하는 영역 - 컴파일러에 의해 run time 도중 크기가 결정되며, 함수가 호출 & 종료되는 시점에 생성 & 제거
2.4.2. PCB (Process Control Block)
PCB는 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조
운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스
운영체제에서 프로세스는 PCB로 나타냄
PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료 구조
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨
프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면, 진행하던 작업 내용들을 모두 정리하고 CPU를 반환 필요
진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떠한 작업을 해야하는지 알 수 없는 상태에 빠짐
프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장하고, 다음에 다시 CPU를 점유하여 작업을 수행해야 할 때 PCB로부터 해당 정보들을 CPU에 넘겨와서 계속해서 하던 작업을 진행할 수 있음
PCB는 다른 프로세스들이 쉽게 접근할 수 없고, kernel 영역에 저장
PCB 저장 정보 : process state, PID, PPID, CPU registers, program counter, CPU scheduling 정보, Memory 관리 정보, accounting 정보, I/O 상태 정보
넷플릭스와 같은 유료 콘텐츠 사업자의 입장에서 가장 우려되는 부분은, 서비스하는 콘텐츠가 불법으로 유출되어 유료 가입자의 수가 줄거나 성장이 둔화되는 것
콘텐츠 불법 유출을 막기 위해서 넷플릭스를 비롯한 여러 OTT 서비스들은 'DRM'과 '워터마킹'이라는 기술을 이용해 콘텐츠를 보호
2. DRM이란?
디지털 권리 관리(Digital Rights Management, DRM)는 저작권자가 그들이 배포한 디지털 자료의 사용을 제어하고, 의도한 용도로만 사용하도록 제한하는 데 사용되는 모든 기술을 지칭하는 용어
주로 전자책, 음원, 동영상 등의 디지털 콘텐츠를 인증된 사용자가 인증된 기간 동안만 사용 가능하도록 통제 → 정당한 비용을 지불하지 않은 불법적인 사용을 방지하기 위해 사용
DRM의 기능
콘텐츠의 암호화 및 복호화
암호 키 관리
원본 콘텐츠는 DRM 패키징이라는 과정을 거쳐 암호화된 상태로 사용자에게 전달 → 콘텐츠 암호화에 사용된 암호 키 정보가 없이는 해당 콘텐츠를 복호화해 재생할 수 없음
넷플릭스를 예로 들면, 넷플릭스 iOS/Android 앱에서는 '저장' 기능을 통해 일부 TV 프로그램 및 영화 콘텐츠를 모바일 기기에 다운로드하고 나중에 오프라인 상태에서도 시청할 수 있도록 지원
다운로드되는 영상 콘텐츠는 DRM이 적용되어 암호화 되어있기 때문에, 해당 파일들을 별도로 복사해 배포하더라도 권한이 없는 사용자가 일반적인 동영상 플레이어로 재생하는 것은 불가능
콘텐츠 사용 권한을 가진 사용자에게는 '암호 키'와 '사용 권한 정보'가 콘텐츠와 별도로 전달 → DRM 라이선스(암호 키 + 콘텐츠 사용 권한 정보)를 안전하게 전달하고 관리하는 것이 DRM 솔루션의 핵심 기술
3. DRM과 웹 브라우저 지원
'화면이 있는 모든 기기에 넷플릭스 서비스를 제공한다'는 것이 넷플릭스의 비전 선언문
넷플릭스 서비스는 다양한 클라이언트 기기들을 지원
PC와 노트북 사용자들을 위하여 웹 브라우저를 지원하는 것은 대부분의 온라인 동영상 콘텐츠 서비스에 매우 중요한 사항
DRM이 적용된 비디오 콘텐츠를 웹 브라우저에서 재생하기 위해서는 다양한 기술이 필요 → 관련된 동영상 스트리밍, DRM 및 웹 표준 기술의 발전에 따라 여러 변화를 거쳐왔음
3.1. 과거 - 싱글 DRM과 플러그인
넷플릭스가 온라인 콘텐츠 서비스를 시작한 2000년대 초반부터 약 10여 년 간, 대부분의 콘텐츠 서비스들은 특정 DRM 업체가 제공하는 단일 DRM 솔루션을 적용해 콘텐츠를 보호
마이크로소프트 PlayReady, 구글 Widevine Classic, 어도비 Access, 인터트러스트 Marlin, 잉카엔트웍스 Netsync DRM 등의 다양한 DRM 솔루션들이 콘텐츠 서비스 업체의 선택에 따라 사용
다양한 DRM 솔루션을 싱글 DRM'솔루션이라고 하며, 모두 플러그인 방식 브라우저 지원이라는 공통의 문제점 발생
ActiveX 컨트롤 설치 경고 메시지
ActiveX 컨트롤 보안 경고는 대부분의 인터넷 사용자들에게 익숙할 정도로 많은 보안 솔루션에서 웹 콘텐츠와 애플리케이션 보안을 위해 사용
기존의 단일 방식 DRM 솔루션들도 웹 브라우저에서 재생되는 오디오/비디오 콘텐츠를 보호하기 위해 플래시와 같은 별도의 브라우저 플러그인을 사용해야 했음
각종 보안 이슈와 성능 등의 문제로 웹 브라우저들의 플러그인 지원이 중단되어 플러그인 방식의 DRM 솔루션은 시장에서 사라져 가고 있음
3.2. 현재 - 멀티 DRM, 플러그인으로부터의 해방
HTML5 표준에는 플러그인 문제를 해결하기 위한 여러 규격들이 추가됨
인크립티드 미디어 익스텐션(Encrypted Media Extension, 이하 EME) 규격은 웹 브라우저 상에서 실행되는 HTML / Javascript 기반 웹 애플리케이션이 콘텐츠 보호 시스템(DRM)과 상호 작용할 수 있게 하는 API를 제공해 암호화된 오디오와 비디오를 재생할 수 있도록 함
EME 규격과 미디어 소스 익스텐션(Media Source Extension, 이하 MSE) 규격을 통해 기존에는 별도의 플러그인으로 지원되던 DRM 콘텐츠의 재생이 웹 브라우저 자체적으로 지원
멀티 DRM이라는 용어가 사용되는 이유
크롬, 사파리, IE/엣지 등 각 브라우저마다 서로 다른 DRM을 기본 지원
마이크로소프트의 IE와 엣지 브라우저는 마이크로소프트에서 제공하는 PlayReady DRM을 지원
구글 크롬은 구글의 DRM인 Widevine Modular DRM을 지원
애플의 사파리는 FairPlay Streaming이라는 애플의 DRM을 지원
모질라 재단의 파이어폭스 브라우저는 크롬과 동일하게 Widevine Modular DRM을 지원
윈도우, 맥 OS 등 다양한 환경의 PC 사용자들에게 편리한 서비스를 제공하기 위해서는 기본적으로 PlayReady, Widevine Modular, FairPlay Streaming 이렇게 세 가지 서로 다른 DRM을 콘텐츠에 적용해야함
각 DRM에서 지원되는 스트리밍 방식에도 차이가 있음
PlayReady와 Widevine → MPEG-DASH
FairPlay DRM → HLS(HTTP Live Streaming)
브라우저 별 지원 DRM과 콘텐츠 형식
멀티 DRM 콘텐츠는 웹 브라우저뿐만 아니라 스마트폰, 태블릿, 스마트 TV 등 멀티 DRM을 지원하는 다양한 모바일 및 OTT 클라이언트 기기에서도 사용
멀티 DRM 적용으로 대부분의 사용자 환경을 지원할 수 있으며, 넷플릭스와 같이 멀티 DRM이 지원되지 않는 오래된 기기들까지 지원하기 원하는 경우에는 기존 방식의 DRM도 함께 사용
3.3. 미래 - CMAF을 통한 멀티 DRM의 콘텐츠 단일화
멀티 DRM을 통해 플러그인 없이 브라우저를 지원 가능 → 하나의 원본 콘텐츠를 두 가지 서로 다른 스트리밍 포맷으로 준비해야 하는 불편함 발생
MPEG-CENC(Common Encryption) 규격에 따라 PlayReady와 Widevine DRM은 하나의 DASH 콘텐츠에 적용되지만, FairPlay DRM은 별도로 HLS 콘텐츠가 필요
DASH/HLS 두 벌 콘텐츠가 필요한 문제점을 해결하기 위해, 단일 콘텐츠로 모든 브라우저와 플랫폼을 지원하는 CMAF(Common Media Application Format) 규격이 발표.
CMAF 단일 콘텐츠가 현실화되기 위해서는 각 DRM과 플랫폼에서의 지원이 필요 → 마이크로소프트와 애플, 구글 등 관련 업체들의 협력에 의해 대부분의 문제점들이 해결
2019년 현재 시점에도 CMAF을 지원할 수 없는 클라이언트 기기들(구 버전 안드로이드 단말 등)이 시장에 존재하기 때문에, CMAF 단일 콘텐츠를 실제 서비스에 적용하기 위해서는 아직 더 많은 시간이 필요
DRM 콘텐츠의 단일화 외에도 CMAF의 주요 장점으로는 'Chunked Transfer Encoding'이라는 기술을 통한 'Ultra Low Latency' 기능
Low Latency
스포츠 중계와 같이 실시간으로 스트리밍 되는 라이브 콘텐츠에 가장 중요한 요소
최근 라이브 OTT 서비스 업계에서는 CMAF Low Latency 기술이 화두가 되고 있음
DRM은 Digital Rights Management의 줄임말로 우리말로는 ‘디지털 저작권 관리’라고 해석
저작권자가 배포한 디지털 자료(문서, 파일 등)나 하드웨어의 사용 제한
특정 자료를 저작권자가 의도한 용도로만 사용하도록 제한하는데 사용되는 모든 기술(복사 방지, 기술보호 장치 등)
DRM이란
디지털 환경에서 콘텐츠를 만들어낸 지적 재산권 보호와 창작물을 사용하고자 하는 사용자의 의무와 권리를 보호하기 위한 기술
오프라인에서 내가 만든 제품이 있다고 하면 수공예품이건 공장에서 생산된 물건이건, 구매자의 손에 전달되기까지 유통 구조를 거치게 되고 더 나아가 판매한 제품에 대한 관리도 됨
온라인을 이용하게 될 때, 유사한 절차를 거치게 되는데, 만약 지적 재산권이 문제가 되지 않는다면 일반적인 온라인 마켓을 이용
창작한 콘텐츠에 대한 보호∙판매∙운영을 위해서는 DRM 솔류션 제품이 포함된 서비스를 사용
서비스를 제공하는 업체에서는 보통 원본 콘텐츠의 불법 유통 막기 위해 콘텐츠 보호 처리를 우선함
창작한 원본 콘텐츠가 예를 들어 도서, 책, 음반, 영화 필름과 같이 아날로그 콘텐츠인 경우, 디지털 콘텐츠로 변환하는 작업을 하게 되고, 다음으로 디지털 콘텐츠를 DRM 처리하여 변환하는 작업을 함 → 작업 과정을 패키징(packaging) 한다고 하며 패키징 하는 도구는 패키저(packager)
패키징 과정에서 불법 복사를 차단하기 위해 암호화와 불법 유통 시 복제 경로를 감지하기 위해 소유자의 정보를 삽입하는 워터마크 같은 기술이 콘텐츠에 적용되며, 저작권자가 설정한 콘텐츠 사용 규칙(라이선스 정보)이 라이선스 서버에 포함함
콘텐츠 사용 규칙은 콘텐츠 구매자에게만 해당하는 것이 아니라 콘텐츠 온라인 유통방법에 따라 서비스 제공자에 대한 유통 규칙이 포함될 수 있음
패키징은 시점을 기준으로 보통 두 가지 방법으로 구분
사용자가 콘텐츠를 요청한 시점에 진행하는 방법(on-the-fly packaging)
콘텐츠 크기가 비교적 작은 경우 예를 들어 문서파일이나 음원 파일 같은 경우에는 실시간 패키징
사전에 패키징을 해 놓는 방법(pre-packaging)
동영상이나 게임 설치 프로그램과 같이 콘텐츠 크기가 큰 경우에는 사전에 패키징
DRM 절차
보호된 콘텐츠를 구매한 고객이 사용하기 위해서는 단말 기기에 DRM 복호화 모듈이 존재해야함
DRM 복호화 모듈의 역할은 서버로부터 사용자 인증과 라이선스 정보를 발급받아 콘텐츠를 복호화하는 것
사용자가 콘텐츠를 사용하려는 시점에 DRM 콘텐츠 모듈은 인증서버를 통해 사용자 인증을 하게 되고 라이선스 서버를 통해 콘텐츠 사용 권한(지불 여부 확인) 여부 등을 판단하여 권한이 있는 경우 라이선스 정보를 제공
라이선스 정보에는 콘텐츠를 복호화 하기 위한 키와 콘텐츠 사용 권리 중 제약 조건이 일반적으로 포함
제약 조건의 주요 항목으로 권리 유효 횟수나 권리 유효기간 정보가 존재하는데, 사용자가 콘텐츠를 사용할 수 있는 횟수나 사용 만료 일자 정보를 의미
정보를 받아 DRM 클라이언트 모듈은 복호화를 하게 되며 사용자는 콘텐츠를 사용할 수 있게 됨
해당 콘텐츠를 웹 브라우저 상에서 볼 수 있는 환경이라면 웹 브라우저에서 지원하는 플러그인 형태로 DRM 클라이언트 모듈이 내장된 뷰어가 온라인 업체에서 제공될 것이며 그것을 받아 DRM 콘텐츠를 사용