DOM, Virtual DOM
돔이란 Document Oject Model(문서 객체 모델)의 줄임말로, 자바스크립트가 getElementbyId()와 같은 함수를 이용하여 html문서의 각 요소들을 접근하고 사용할 수 있도록 하는 객체모델이다.
트리구조로 되어있어 이해하기 쉬운 장점이 있는 반면, 거대한 DOM 트리 속에서 돔에 직접 변화를 줄 때 생기는 속도 문제와 DOM을 제대로 찾기 위해 코드 분석시 거대한 HTML을 들여다봐야 하는 단점이 존재한다.
반면 가상 돔의 경우 실제 돔에 접근하여 조작하는 대신, 이것을 추상화시킨 자바스크립트 객체를 이용해 사용한다. 가상 돔을 이용해 한번만 돔 수정을 하고 한번만 렌더 트리를 만들어 내게 함으로서 불필요한 렌더링 횟수를 줄일 수 있다.
스케쥴링
스케쥴링이란?
스케줄링의 넓은 의미는 자원을 효율적으로 사용하기 위해 자원을 사용하는 순서를 결정짓는 작업으로 CPU 를 잘 사용하기 위해 프로세스를 잘 배정해야 한다.
-
CPU는 한정된 자원으로 최대한 성능을 이끌어내기 위해서는 CPU를 적절하고 효율적으로 사용해야 한다.
-
OS는 실행 대기중인 프로그램(프로세스)들에게 CPU 자원 배정을 적절히 하여 시스템의 성능을 끌어올릴 수 있다.
-
공통 배정조건 : 오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓
- 오버헤드 : 프로세스가 필요한 자원보다 더 많이 사치부리며 사용하지 않도록
- 사용률 : 프로세스가 최대한 자원을 많이받고 빨리 처리하도록
- 기아 현상 : 프로세스가 자원할당을 못받아서 배고픈상태로 대기하지 않도록
-
목표에 따른 배정조건 :
1. 배치 시스템 : 가능하면 많은 일을 수행. 시간(time) 보단 처리량(throughout)이 중요
2. 대화형 시스템 : 빠른 응답 시간. 적은 대기 시간이 중요
3. 실시간 시스템 : 실시간(time) 즉, 최소 응답시간(dead line) 이 중요!
스케쥴링의 종류
선점 스케쥴링
OS가 나서서 CPU사용권을 '선점'하고, 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세스에게 분배하는 방식
- 가장 자원이 필요한 프로세스에게 CPU를 분배하며 상황에 따라 강제로 회수할 수도 있습니다.
- 따라서 빠른 응답시간을 요하는 대화식 시분할 시스템에 적합하며 긴급한 프로세스를 제어할 수 있다.
선점 스케쥴링 종류
- 우선순위 스케쥴링
- 정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리
- 우선 순위가 낮은 프로세스가 무한정 기다리는 기아 현상 발생 가능
- Aging 방법으로 기아현상 문제 해결 가능
- 라운드 로빈
- FCFS에 의해 프로세스들이 보내지면 각 프로세스는 동일한 시간의 Time Quantum 만큼 CPU 할당
- 정해진 시간 할당량 만큼 프로세스를 할당한 뒤, 작업이 끝난 프로세스는 준비완료 큐(순환 큐)의 가장 마지막에 가서 재할당을 기다리는 방법 (회전식)
- 시간 할당량이 중요한데, 너무 작으면 빈번한 문맥 전환(Context Switching)이 발생하고, 너무 길면 FCFS와 다를 바 없어진다.
- 다단계 큐
- 준비완료 큐를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식 메모리 크기, 우선순위, 유형 등 프로세스의 특성에 따라 하나의 큐에 영구적으로 할당된다. 따라서 큐와 큐 사이에도 스케쥴링이 필요하다.
- 고정 우선순위의 선점형 방식으로 구현되며, 따라서 우선순위에 따른 큐의 스케쥴링은 절대적이다.
비선점 스케쥴링
어떤 프로세스가 CPU를 할당받으면 그 프로세스가 종료되거나, 입출력 요구가 발생하여 자발적으로 중지될 때 까지 계속 실행되도록 보장하는 방법입니다.
- 순서대로 처리되는 공정성이 있고, 다음에 처리해야할 프로세스와 상관없이 응답시간을 예상할 수 있습니다.
- 선점방식보다 스케쥴러 호출 빈도가 낮고, 문맥교환에 의한 오버헤드가 적습니다.
- 일괄처리 시스템에 적합하며 자칫 CPU사용시간이 긴 프로세스가 다른 프로세스들을 대기시킬 수 있으므로 처리율이 떨어질 수 있다는 단점이 있습니다.
비선점 스케쥴링 종류
- FCFS
- 큐에 도착한 순서대로 CPU 할당
- 실행 시간이 짧은 게 뒤로 가면 평균 대기 시간이 길어짐
- 따라서 먼저 도착한 프로세스의 버스트 타임에 따라서 평균 대기시간의 편차가 큼
- SJF
- 수행시간이 가장 짧다고 판단되는 작업 먼저 수행
- FCFS 보다 평균 대기 시간 감소, 짧은 작업에 유리
- CPU버스트 타임이 가장 짦은, 최단작업을 우선 스케쥴링 하는 알고리즘
- 만약 CPU버스트 시간이 동일하다면 FCFS방식을 따름.
- 다만 선점형인 경우에는 위와같이 진행이 되지만 비 선점형일 경우엔 최소잔여시간우선 법칙을 따른다.
- HRN
- 우선순위를 계산하여 점유 불평등 보완(SJF 단점 보완)
- 우선순위 = (대기시간 + 실행시간) / (실행시간)