본문 바로가기
javascript

[프로그래밍 기초] 자바스크립트 런타임, 코어와 쓰레드

by jinbro 2017. 6. 12.
[런타임이란]
- 프로그래밍 언어가 구동되고 있는 환경
- 자바스크립트 런타임
1) 웹브라우저 : 웹 자원에 접근하기위한 클라이언트 사이드 계층 구조(런타임)
2) node.js :  자바스크립트 런타임, V8엔진 등장(속도 향상, 크롬 브라우저의 V8 기반 nodejs를 특정 모듈을 사용해 웹서버 구축)
    - 이벤트 기반 비동기 I/O 처리 서버
=> 클라이언트 요청을 이벤트로 처리 : 이벤트 큐 -> 이벤트 루프 -> 응답
=> 이벤트 루프(싱글쓰레드)가 큐에 담긴 이벤트 처리 후 응답, 긴 I/O 경우 별도 쓰레드풀(worker)에서 처리 후 큐에 리턴, 루프 처리

- 런타임 구성 : 런타임 라이브러리 / 런타임 환경으로 구성됨
1) 런타임 라이브러리 : 프로그램(js)을 관리하기위한 특정 컴파일러, 가상머신이 사용하는 기본 코드의 라이브러리, 프로그램
2) 런타임 환경 : 프로그램이 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태


[코어와 쓰레드]
- 코어 : CPU에 내장된 처리회로의 핵심 부분, cpu 당 1코어가 당연했으나 요즘은 멀티코어(듀얼, 쿼드, 헥사, 옥타) 
- 멀티코어 : 싱글 코어라면 2번 처리해야할 것을 듀얼 코어는 1번에 끝낼 수 있음
=> 소프트웨어가 싱글코어 연산 처리 작업만 지원한다면 오히려 싱글코어가 빠를 수 있음

프로세스 : 프로그램이 실행되기위해 메인 메모리(램)에 저장된 상태
1) OS는 효율적인 프로세스 관리를 위해 프로세스 제어 블록을 같이 생성하는데, 이것이 쓰레드
2) OS가 A라는 프로세스 수행 도중 B 프로세스를 수행할 때 수행 도중이었던 프로세스의 정보를 쓰레드가 가짐
3) 프로그램은 디스크에 저장된 파일과 같은 수동적인 개체, 프로그램이 메인 메모리에 적재되어 처리를 시작할 때 프로세스가 됨

- 쓰레드 : 데이터의 실행 흐름(통로), 코어가 일을 수행할 때(프로세스 내 존재) 팔과 다리의 역할
1) 싱글쓰레드라면 코어가 처리를 할 때 하나의 길로 송 수신을 한다는 것
2) 4코어 8쓰레드 : 1코어당 2쓰레드로 처리, 송수신 길이 다른 것


[기타 - 자바스크립트 단점]
- 스크립트 언어로서 실행될 때까지(코드 수행) 에러 확인을 하기가 어렵다는 단점

- 동적 언어의 단점 : 동적 타이핑, this 바인딩 등 - 타입스크립트로......?!




댓글