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

·2023년 4월 14일
0

데일리 과제

목록 보기
2/15

동기 (Synchronous)와 비동기 (Asynchronous) 코드 실행 방식에 대해 설명해보세요.

동기는 하나의 태스크가 끝날 때 까지 기다렸다가 다음 태스크가 실행된다.

비동기는 한번에 여러 태스크가 동시에 병렬적으로 실행된다.

동기

  • 코드를 실행시키고 그 결과값을 받을 때 까지 기다린 후 다음 코드를 실행하는 처리방식을 말한다.
  • 동기식에서 결과를 기다리는 과정을 blocking이라고 한다.

비동기

  • 코드를 실행시키고 그 결과값을 언제 받을지 모른 상태로 다음 코드를 실행시킨다.
  • 비동기식에서 결과를 기다리지 않는 것을 non-blocking이라고 한다.

특징

  • 어떤 함수를 실행시키고 결과를 얻기 전이라도 다음 코드로 넘어간다.
  • 그 결과를 받아주는 함수를 콜백함수라고 한다.

왜 비동기처리를 사용할까?
시간이 오래 걸리는 코드를 비동기 처리를 전혀 하지 않으면, 다음 코드에 문제가 발생할 수 있음

비동기 처리의 종류

  • promise
    Promise 를 활용할 시에는 .catch() 문을 통해 에러 핸들링이 가능하다.
    Promise의 .then() 지옥의 가능성

  • async/await ⭐
    async/await 은 에러 핸들링 할 수 있는 기능이 없어 try-catch() 문을 활용해야 한다.
    코드가 길어지면 길어질수록, async/await 를 활용한 코드가 가독성이 좋다.
    async/await 은 비동기 코드가 동기 코드처럼 읽히게 해준다. 코드 흐름을 이해 하기 쉽다.

프로세스 (Process)와 스레드 (Thread)의 차이점은 무엇인가요?

프로세스와 스레드의 차이점은 프로세스는 자원을 공유하지 않지만(자신만의 고유 공간과 자원을 할당받아 사용) 스레드는 자원을 공유한다는 점이다.

프로세스

정의

  • 컴퓨터에서 연속적으로 실행하고 있는 컴퓨터 프로그램
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
  • 운영체제로부터 시스템 자원을 할당받는 자원의 단위
  • 프로그램의 실행된 부분

특징

  • 각 프로세스는 별도의 주소 공간에서 실행되며 기본적으로 다른 프로세스의 자원에 접근할 수 없다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간 통신(IPC)를 사용해야 한다.
    ex. 파이프, 파일, 소켓 등을 이용한 통신 방법

스레드

정의

  • 프로새스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 최소 실행 단위

특징

  • 프로세스 내에서 각 필요한 Stack만 할당받고 Code, Data, Heap 영역은 공유해서 각 스레드가 공유한다.
  • 같은 프로세스 내 스레드끼리 자원(Heap 등)을 공유하며 실행된다.
profile
개발자가 되는 과정

0개의 댓글