동기와 비동기 & 프로세스와 스레드

JungHoon Han·2023년 4월 14일
0

CS 지식

목록 보기
1/9
post-thumbnail

동기(Synchronous) & 비동기(Asynchronous)

  • 동기
    • 코드가 작성된 순서대로 실행되는 방식
    • 한 라인이 실행될 때까지 다음 라인으로 넘어가지 않음
  • 비동기
    • 코드가 순차적으로 실행되지 않음
    • 코드가 실행되는 동안 이벤트 루프가 다음 코드를 실행하도록 대기
# 동기적 코드 예시

console.log('1');
console.log('2');
console.log('3');

// ------ 결과 ------

1
2
3

# 비동기적 코드 예시

console.log('1');
setTimeout(() => {
    console.log('2');
}, 1000);
console.log('3');

// ------ 결과 ------

1
3
2

프로세스(Process) & 스레드(Thread)

프로세스와 스레드는 컴퓨터에서 실행되는 작업의 단위이다.
프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행되며, 스레드는 프로세스 내에서 실행되어 프로세스가 할당받은 자원을 공유함.

  • 프로세스
    • 운영체제로부터 자원을 할당받은 작업의 단위
    • 각각 독립된 메모리 영역을 할당 (최소 1개)
    • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없음
    • 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 함
  • 스레드
    • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
    • 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유
    • 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행
  • Code : 실행 명령을 포함하는 코드들
  • Data : Static 변수 혹은 Global 변수
  • Heap : 동적 메모리 영역
  • Stack : 지역변수, 매개변수, 반환 값 등 일시적인 데이터
profile
Node.js 주니어 개발자

0개의 댓글