Coroutine - 프로세스 vs 스레드 vs 코루틴

Posted by RoadtoS7 on August 04, 2021 · 1 min read

프로세스

  1. 프로세스는 운영체제로부터 독립된 자원을 할당받는다.

  2. 프로세스 내의 스레들들이 프로세스 내의 자원을 공유한다.

스레드

  1. 프로세스 내의 실행단위

  2. 한번에 하나의 명령어만 실행할 수 있다.

  3. 프로세스의 리소스를 공유하고 수정할 수 있다.
    하지만 로컬 스토리지 (Thread Local Storage, TLS)라는 자신만의 저장소도 가지고 있다.

  4. 스레드는 블락되면 더이상 명령어를 실행하지 못한다.

코루틴

  1. “경량화된 스레드”, “가벼운 스레드” 라고 불린다.

  2. b) 스레드처럼 프로세서가 실행할 수 있는 명령어 묶음을 가지고 있기 때문이다.

  3. 스레드와 비슷한 라이프 사이클을 가지고 있다.

  4. 코루틴은 스레드 안에서 실행된다.

  5. 하나의 스레드는 한번에 하나의 코루틴만 실행한다.

  6. 스레드와의 가장 큰 차이점: 빠르고, 더 적은 자원을 사용해서 생성할 수 있다.
    • b) 코틀린은 정해진 개수의 스레드 풀을 생성하여, 코루틴을 스레드들에게 할당한다.
    • 따라서 코루틴의 수가 증가하더라도 실행시간이 크게 증가하지 않는다.
  7. 코루틴이 일시 중단되면, 실행중인 스레드는 다른 코루틴은 실행한다.

  8. 코루틴이 시작된 스레드와, 중지했다가 실행을 재개하는 스레드가 다를 수 있다.
    • b) 코틀린(프레임워크)이 실행 가능한 스레드로 코루틴을 이동시키기 때문이다.