<원티드 프리온보딩 6월 챌린지 AI 세션 3일차 현직자 이야기>에서 나온 내용 참고하여,
[기본 질문에서 나올 수 있는 꼬리 질문들 공부]
(GPT3.5 내용이라 틀린 내용 있을 수 있음. 추후 검증 필요)
> 프로세스와 스레드 차이
실행 중인 프로그램을 프로세스라고 하고, 스레드는 프로세스 내에서 실행되는 기본 단위이다.
> 멀티프로세싱과 멀티스레딩의 차이
멀티프로세싱은 독립적인 프로세스를 여러 개 사용하여 작업을 병렬로 처리하는 방식이고,
멀티스레딩은 한 프로세스 내에서 여러 스레드를 사용하여 작업을 병렬로 처리하는 방식이다.
파이썬에서, CPU-bound 작업은 멀티프로세싱이 더 적합하고, I/O-bound 작업은 멀티스레딩이 더 적합하다.
왜냐하면 파이썬 인터프리터는 GIL (Global Interpreter Lock)을 사용하여 동시에 하나의 스레드만 실행되도록 제한하는데,
CPU-bound 작업 (연산 집중적 작업)은 멀티스레딩의 성능 향상이 제한적일 수 있어 멀티프로세싱에 더 적합하고,
I/O-bound 작업 (입출력 집중적 작업)을 하는 동안에는 GIL이 해제되기 때문에, 여러 스레드가 동시에 실행될 수 있어서 멀티 스레딩을 통해 성능 향상을 기대할 수 있다.
> 파이썬 GIL
GIL은 파이썬 인터프리터가 동시에 하나의 스레드만 실행하도록 제한하는 매커니즘이다.
멀티스레딩 환경에서 안전한 메모리 관리 및 객체 접근을 보장하기 위해 스레드 실행을 제한한다.
이는 race condition을 방지하는데 유용하지만 CPU-bound 작업에서의 성능 저하를 초래할 수 있다.
GIL은 뮤텍스의 일종
> I/O-bound의 경우 멀티스레딩 외에 취할 수 있는 다른 전략
I/O-bound 작업은 파일 읽기/쓰기, 네트워크 요청 등과 같은 입출력 작업에 많은 시간이 소요되는 작업이다.
I/O-bound의 성능을 향상시키기 위한 방법으로,
I/O 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있는 비동기 프로그래밍 방법이 있다.
asyncio는 파이썬 표준 라이브러리로, 이벤트 루프를 사용하여 비동기 작업을 처리한다.
코루틴(coroutine)은 asyncio 모듈의 도구 중 하나로, 실행 중에 일시 중단하고 다른 작업으로 전환한 다음 나중에 재개할 수 있는 특수한 함수이다. `async def`로 정의되며, `await` 키워드를 통해 비동기 작업을 처리한다.
'Computer Science > Operating System' 카테고리의 다른 글
개발자 맥북 어떤 사양으로 사야할까? (1) | 2024.06.11 |
---|---|
[OS] 3. Fundamental Concepts (0) | 2024.05.09 |
[OS] 2. History of Computers and Operating Systems (0) | 2024.05.09 |
[OS] 학부 과정 복습 (0) | 2024.05.08 |