반응형

OS 3

[Javascript & Node] 자바스크립트 메모리 구조에 대해서 알아보자. (가비지 컬렉션 까지)

1. 메모리 구조 자바스크립트 엔진이 가지는 세 가지 메모리 공간이다. Code Area, Call Stack, Heap을 시각화한 모습으로, 하나로 묶어 프로그램의 주소 공간이라고 한다. (1) Code Area : 실행할 JS 코드를 저장한다. (2) Call Stack : 실행 중인 함수를 추적하며 계산을 수행하고, 지역 변수를 저장한다. 변수들은 LIFO 형식으로 저장된다. 또한 원시 타입들이 이 곳에 저장된다. 1) 변수 식별자(이름) 저장 2) 스코프 체인 및 this 관리 3) 코드 실행 순서 관리 등을 수행 (3) Heap : 참조 타입(객체 등)들이 할당되는 곳이다. Heap의 메모리 할당은 LIFO 정책을 따르지 않고 랜덤하게 배치된다. 또한, 메모리 누수를 방지하기 위해 JS 엔진의 ..

[운영체제] 데드락(Deadlock)에 대해서 알아보자.

오늘은 OS의 데드락(Deadlock)에 대해서 알아보는 시간을 갖도록 하겠다. (1) 개념 - 데드락은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 즉, 프로세스가 자원을 얻지 못해서 다음 일을 처리하지 못하는 상태이다. 교착 상태라고도 말하는데 보통 시스템적으로 한정된 자원을 여러 곳에서 동시에 사용하려고 할 때 발생한다. 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다. ex) 프로세스 1이 리소스 1을 사용하고 있고, 리소스 2를 사용하기 위해 요청했으며 프로세스 2가 리소스 1을 사용하기 위해 요청했고, 리소스 2를 사용하고 있다면 프로세스 1 -> 리소스 1(사용 - Lock) / 리소스 2(요청 - ..

[운영체제] 프로세스와 스레드에 대해서 알아보자.

오늘은 기술면접 단골질문인 프로세스와 스레드에 대해서 알아보는 시간을 갖도록 하겠다. 프로세스와 스레드의를 이해하기 위해서는 프로그램/프로세스/스레드의 자세한 개념을 이해할 필요가 있다. 차근차근 알아보자. ① 프로그램 (Program) (1) 정의 - 어떤 작업을 위해 실행할 수 있는 파일 - 파일이 저장장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 한마디로 설치는 되어있지만 실행되지 않은 상태라고 생각하면 될것같다. ② 프로세스 (Process) (1) 정의 - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 객체) - 운영체제로부터 시스템 자원을 할당받는 단위 - 오류로 인해서 종료가 될 때 다른 프로세스의 영향을 ..

반응형