IT/CS

개발 CS 지식 기술면접 질문 정리 (2)- Iterator, 컴파일러, 인터프리터, 프로세스, 스레드 등

Eri_n 2022. 5. 23. 12:20
반응형

5) Iterator

: 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어나갈 때 사용하는, 일종의 포인터와 비슷한 도구

 

6) 컴파일러 VS 인터프리터

 

컴파일러

- PLRuntime 이전에 기계어로 해석하는 작업 방식. 런타임 이전에 Assembly 언어로 변환하기에 구동 시간이 오래 걸리지만, 구동 후에는 매우 빠르게 작동. ( C, C++)

- OS 및 빌드 환경에 종속적임.

- 구동 시 코드와 함께 시스템으로부터 메모리를 할당받으며 할당받은 메모리를 사용.

 

인터프리터

- 런타임 이후에 Row 단위로 해석하며 프로그램을 구동시킴.

- PL을 기계어로 바꾸지 않고 중간 단계를 거친 뒤, 런타임에서 즉시 해석하기 때문에

실제 실행시간은 느림.

- 단 런타임에 실시간 디버깅 및 코드 수정이 가능.

- 메모리는 필요할 때 할당하여 사용.

 

7) 프로세스, 스레드

프로세스: 운영체제로부터 자원을 할당받는 작업의 단위, 실행중인 프로그램.

스레드: 프로세스가 할당받은 자원을 이용하는 실행의 단위

멀티스레드

- 하나의 프로세스에서 다수의 실행 단위로 구분하여 자원의 생성과 관리의

중복성을 최소화하여 효율을 높임.

 

멀티스레드 vs 멀티 프로세스

- 멀티스레드는 자원을 덜 소모하는 대신 하나의 스레드가 비정상적인 오류를 일으키면

다른 스레드도 종료될 수 있다는 점과 동기화 문제가 있음.

- 멀티 프로세스는 자원을 공유하지 않기에 서로간 통신이 멀티 스레드보다 불편,

CPU 자원을 더 많이 소모함.

 

8) 가비지 컬렉터(GC) 동작원리

- 가비지: 정리되지 않은 메모리, 유효하지 않은 메모리 주소

 

GC 과정: Mark and Sweep

GC가 스택의 모든 변수 또는 Reachable 객체를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾는 과정 (Mark)

=> 이 과정에서 Stop the world 발생 (GC 실행을 위해 JVM이 애플리케이션 실행을 멈춤)

 

이후 Mark 되어있지 않은 객체들을 힙에서 제거하는 과정 (Sweep)

 

 
반응형