-
- 동기 (Synchronous)와 비동기 (Asynchronous) 코드 실행 방식에 대해 설명해보세요.
- 프로세스 (Process)와 스레드 (Thread)의 차이점은 무엇인가요?
동기 / 비동기
더보기동기식 실행은 코드의 순차적 종료가 보장된다
앞서 실행된 코드, 함수가 종료되지 않으면 다음 코드가 실행되지 않음
그래서 먼저 실행된 함수의 리턴값을 받아서 다음 코드에서 활용이 가능함.
반면에 비동기는 시작은 순차적으로 되지만 종료는 그렇지 않기 때문에,
앞선 함수가 종료되기 전에 이후의 함수가 실행되는 경우가 많다,
앞서 실행된 함수가 리턴값을 반환해주기 전에 다음 코드에서 그 리턴값을 호출한다면, undefined로 담겨버림
그럼 비동기는 병렬성을 가진것인가? 그렇게 보일 뿐, 그렇지는 않다.
단일스레드인 자바스크립트는 근본적으로 병렬처리가 불가능하다.
동시에 처리되는 것 처럼 보이게 할 뿐임. (동시성)
프로세스 / 스레드
더보기프로세스와 스레드는 둘 다 실행 단위임.
프로세스는 개념적으로
메모리와 자원을 독립적으로 할당받아 실행되는 프로그램의 인스턴스다.
이게 뭔소린가 하면. 프로세스와 스레드의 차이점을 비교하면 알 수 있음.
우선
프로세스 내부에, 작은 실행 단위인 스레드가 존재한다
라는 것을 알고 비교해야함.
프로세스 스레드 메모리와 자원 독립적.
타 프로세스와 공유 X
프로세스마다 독립된 메모리주소 할당비 독립적.
스레드마다 별도의 Stack을 가지지만,
메모리와 데이터는 타 스레드와 공유오류 발생 시 독립적이기에 타 프로세스에 영향 X 해당 프로세스 전체가 영향을 받기 떄문에 타 스레드에 영향을 미침. 서로간의 통신 IPC(Inter Process Communication)를 사용. 운영체제가 제공해주는 거임 코드영역과 데이터영역을 공유하기 때문에 그냥 가능. 간단하고 빠름 간단히 말해서,
프로세스는 독립, 스레드는 공유