문제: Starlette과 비동기, 동시성
2025. 5. 7. 00:03ㆍ문제: 고급 웹프로그래밍
문제
- 하나의 작업을 여러 CPU/코어로 동시에 처리하는 것을 __컴퓨팅이라 한다
- 여러 컴퓨터(노드)가 협력해 작업을 나눠 처리하는 것을 __ 컴퓨팅이라 한다
- 병렬 컴퓨팅은 분산 메모리를 사용한다 (o,x)
- 각 CPU가 여러 작업을 전환하며 처리하는 컴퓨팅을 뭐라 하는가?
- 프로세스란 운영체제가 관리하는 실행 중인 프로그램의 인스턴스로 __ + __ + __ + __ + __을 가진 독립된 작업 단위
- 프로세스는 독립적인 메모리 공간을 가지며 다른 프로세스와 메모리 공간을 공유한다(o,x)
- 멀티프로세싱에 대해 서술하시오
- 멀티프로세싱은 멀티코어 CPU를 활용해 진짜 병렬 실행이 가능하다 (o,x)
- 파이썬의 multiprocessing은 OS-level 프로세스 생성. 스케줄링은 전적으로 python이 담당한다(o,x)
- Global Interpreter Lock에 대해 서술하시오
- 파이썬에서 multiprocessing은__ 에 사용하고, threading은__ 에 사용함
- 프로세스 내부에서 실행되는 흐름의 단위를 뭐라 하는지 작성하시오
- __는 하나의 프로세스 안에서 여러 작업을 동시에 실행할 수 있게 해준다
- 멀티 스레딩(multi-threading)은 메모리를 공유하지만, GIL(Global Interpreter Lock) 때문에 Python에서는 CPU 연산에 비효율적이다 (o,x)
- 그린스레드는 OS 레벨에서 스케줄링되는 스레드로 CPU병렬이 가능하다 (o,x)
- __은 작업 완료 후 실행할 함수를 미리 등록해두는 방식
- 파이썬의 __ 함수는 yield 키워드를 통해 함수 상태를 일시 중단 또는 재개할 수 있는 이터레이터
- async는 비동기 함수를 정의하고, await는 awaitable 객체를 실행하며 논리적 동시성을 제공한다 (o,x)
- asyncio는 동기 이벤트 루프 라이브러리다 (o,x)
답
- 병렬
- 분산
- x: 병렬 컴퓨팅은 공유 메모리를 사용하고 분산 메모리는 분산 컴퓨팅이 사용한다
- 동시 컴퓨팅
- 메모리, 자원, 코드, 데이터, 스택
- x: 프로세스는 독립적인 메모리 공간(코드 영역, 데이터 영역, 힙, 스택), 다른 프로세스와 메모리 공간을 공유하지 않음
- 하나의 프로그램이 여러 개의 프로세스(Process) 를 생성하여 병렬로 실행. 각각 독립된 메모리 공간을 가지므로 GIL의 영향을 받지 않음
- o
- x: 파이썬의 multiprocessing은 OS-level 프로세스 생성. 스케줄링은 전적으로 OS가 담당
- Python 인터프리터가 "한 번에 하나의 스레드만 실행되도록" 강제하는 락
- CPU-bound, I/O-bound
- 스레드
- 스레드
- o
- x : 그린스레드는 OS가 아닌 유저 레벨(사용자 공간)에서 스케줄링되는 스레드로 가짜 스레드/가벼운 스레드라 할 수 있으며 실제 CPU 병렬성은 없다
- 콜백
- 제너레이터(generator)
- o
- x: 비동기 이벤트 루프 라이브러리로 싱글 스레드에서 수천 개 작업을 논리적으로 동시에 실행 가능함.
반응형
'문제: 고급 웹프로그래밍' 카테고리의 다른 글
문제: FastAPI의 라우팅 (0) | 2025.05.07 |
---|---|
문제: API (0) | 2025.05.07 |
문제: 종합 1 (1) | 2025.05.06 |
문제: 도커 (0) | 2025.05.06 |
문제: GitHub (0) | 2025.05.06 |