개인 공부

동기/비동기/스레드/프로세스/코루틴

송현호 2023. 8. 16. 00:34

1.

 

1) 동기(Synchronous) : 순서대로 작업(프로세스)을 수행하며 1개의 프로세스 끝내면 다음 프로세스로 넘어가는 방식, 동기라는 단어의 뜻처럼 요청과 결과를 동시에 처리하기 때문에 요청에 의한 결과가 나올때 까지는 다른 작업은 대기상태가 된다.

 

2) 비동기(Asynchronous) : 요청에 대한 결과가 나와야 다음 프로세스로 넘어가는 동기와는 다르게 비동기는 요청과 결과가 동시에 나오지 않는다, 여러 작업을 각자의 스레드가 가져가서 작업의 순서나 완료여부와 상관없이 진행하기 때문에 이러한 방식을 비동기적이라고 부른다.

 

2.

 

1) 프로세스 : 운영체제로 부터 자원을 할당받은 작업의 단위로 컴퓨터에서 실행중인 프로그램의 인스턴스이다. 프로세스는 다음의 영역으로 나뉜다.

 

(1)코드 영역 : 실행중인 프로그램의 코드

(2)데이터 영역 : 프로그램에서 사용하는 전역변수, 정적변수, 동적할당된 메모리등을 저장

(3)스택 영역 : 지역변수, 매개변수, 함수의 호출정보를 저장, 함수의 호출이 발생되면 할당되고 코드가 끝나면 소멸함

(4)힙 영역 : new등을 이용해 동적으로 할당된 메모리가 저장됨, 

 

 

2) 스레드(Thread) : 스레드는 프로세스내에서 실제로 작업을 실행하는 주체를 의미하며 프로세스 내에서 동작한다, 이 중 한개의 스레드를 가진 경우가 단일 스레드 2개 이상의 스레드를 가진 경우를 멀티스레드라고 한다. 이러한 스레드는 2가지의 종류가 있는데

 

(1) User-Level Thread : 프로세스 내에서 관리되는 스레드로 운영체제가 스레드를 인식하지 못하기 때문에 하나의 스레드가 중단될 경우 다른 스레드도 같이 중단됨

 

(2) Kernel-Level Thread : 운영체제에서 관리하는 스레드로 커널이 스레드를 관리하기 때문에 다른 스레드가 중단되더라도 프로세스 내의 스레드를 계속 실행시켜주는 특징이 있음

 

3)코루틴 : 코루틴은 실행을 일시 중단하고 다시 시작하는 컴퓨터 프로그램 구성요소 중 하나로 공동 멀티태스킹을 위한 서브루틴을 일반화한다. https://chaosmoney8.tistory.com/43

 

3. 스레드와 코루틴의 차이

 

프로세스가 다른 프로세스에게 CPU의 제어권을 넘겨주는데 이전 프로세스의 상태를 저장하고 다른 프로세스를 적재하는 작업을 문맥교환이라고 한다. 멀티스레드 환경에서 스레드또한 이러한 교체작업에 비용이 발생하는데 코루틴은 스레드가 아닌 함수를 통해 작동하기 때문에 다루기 쉽고, 스레드의 문맥교환보다 낮은 비용이 발생한다는 장점이 있다. 때문에 이러한 코루틴을 경량 스레드(Light-weight thread)라고도 부른다.

 

 

 

 

 

참고 사이트 - 

 

https://ko.wikipedia.org/wiki/%EB%AC%B8%EB%A7%A5_%EA%B5%90%ED%99%98

 

문맥 교환 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. -->

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으

ko.wikipedia.org

https://planek.tistory.com/47

 

비동기 vs 동기

개요 동기 비동기 동시성 여러 종류 음식을 하나씩 조리함. 여러 종류 음식을 동시에 조리함. 일치화 손님이 올때까지 기다리다 같이 먹음. 손님을 기다리지 않고 먹음. 동기 방식 각 함수의 실

planek.tistory.com

 

https://velog.io/@haero_kim/Thread-vs-Coroutine-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EA%B8%B0

 

🤔 Thread vs Coroutine 전격 비교

비슷해보이는 두 녀석의 차이점을 파헤쳐보자!

velog.io

https://joonikiwoogi.tistory.com/64

 

동기 vs 비동기, Blocking vs Non Blocking (feat. Coroutine)

회사에서 이메일 프로젝트를 하던중 비동기적으로 이메일을 발송을 해야한다는 요구사항이 있었다. 처음 이메일 서비스를 만들어 볼 뿐더러 동기와 비동기에 대한 개념이 온전치 못하였어서

joonikiwoogi.tistory.com

https://noapps-code.tistory.com/98

 

[Kotlin] 코루틴 / 비동기 프로그래밍

/* 본 게시물은 'Do it 코틀린 프로그래밍 | 황영덕 지음' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [쾌락코딩 - 코틀린 코루틴 개념익히기] :https://wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%

noapps-code.tistory.com

https://keykat7.blogspot.com/2022/01/android-coroutine.html

 

[Android] 동기와 비동기, 그리고 Coroutine

알고리즘, 코딩 테스트, C++, java, 파이썬, AI, 백준, 기업 코딩 테스트, 자료구조, 프로젝트, codeforces, unity, android

keykat7.blogspot.com

+ 시나공 정보처리기사 책