What got you here won't get you there

Runtime Execution, State Control, Flow Control, Sync & Async 본문

Computer Science

Runtime Execution, State Control, Flow Control, Sync & Async

optimy 2021. 6. 17. 13:35
Program & Timing JavaScript Timing
Language code (Lint & IDE) ES2021, TypeScript (Lint & IDE)
Machine language (Compile) Transpiler (Compile)
File File & deploy
Load Browser load (Browser), Browser parsing (Compile)
Run (Runtime) Run (Runtime)
Terminate Browser close

Runtime Execution


폰 노이만 구조
컴파일 언어 Runtime Details
자바스크립트 Runtime Details

 


State Control


Directive Reference

b와 c가 같은 레퍼런스 참조
b와 c가 다른 레퍼런스 참조


Indirective Reference

b와 c가 target을 통해 a 참조
b를 통해 target을 바꿔도 b와 c는 같은 값 참조

런타임에 추가적인 메모리 연산을 함으로써 참조간의 컨텍스트가 깨지지 않게 함

Flow Control


Sync flow control

Sync Flow : 메모리에 적재된 명령이 순차적으로 실행됨

Sync Flow Control : Goto를 통해 명령의 위치를 이동함

Sub Flow : 함수 등을 통해 별도의 명령셋을 여러번 실행함

Blocking : Sync Flow가 실행되는 동안 다른 일을 할 수 없는 현상

Blocking 줄이기

 

sync flow를 짧게 하기

다른 쓰레드에 syncflow를 떠넘기기

다른 쓰레드의 작업이 완료되면 원래 쓰레드에 보고해야함

Non Blocking : Sync Flow가 납득할 만한 시간 내에 종료되는 것


Sync & Async


Sync - 서브루틴이 즉시 값을 반환함

Async - 서브루틴이 다른 수단으로 값을 반환함

Promise, callback function, iterations

Async 단점

호출 결과가 즉시 반환되지 않으므로 현재의 sync flow가 종료됨

그 결과 현재의 어휘공간 내의 상태를 결과시점에 사용할 수 없음

요청 시의 상태를 별도로 결과시점에 전달할 부가장치 필요

Sync의 장점 + Async의 장점

sync로직으로 async를 사용할 수 있게 함

하지만 sync flow가 어긋나므로 이전 sync flow의 상태를 기억해 이어줄 장치 필요

상태를 기억하고 이어주는 장치 - Continuation

이를 활용하는 프로그래밍 스타일 - Continuation Passing Style

Comments