해결된 질문
작성
·
311
2
답변 1
1
안녕하세요!
말씀해주신 것처럼 컴퓨터 시각에서 보면 운영체제가 알아서 프로세스 스케줄링을 해줍니다.
운영체제가 인프런 강의, 파이썬 프로그램, 게임 프로그램을 메모리에 올려서 프로세스로 만들고 각각의 실행 우선순위를 아주 작은 타임 슬라이스로 쪼개서 스위칭하면서 작업을 진행합니다. 사용자 입장에서는 강의를 들으면서 파이썬 프로그램을 돌리는 것이 동시적으로 느껴지게 되는 것이죠.
파이썬 프로그램이 블로킹이 되건 여러 CPU 코어를 사용하건 스레드(사용자수준)를 사용하건 운영체제는 신경쓰지 않습니다. 예를들어 게임을 하다가 게임이 모종의 이유로 다운되었을때 바탕화면에 가도 브라우저 등이 잘 동작하는 것처럼 말이죠.
사용자 수준과 운영체제 수준은 구분되어 있습니다. 물론 파이썬 프로그램과 인프런 강의에서 사용되는 메모리(RAM)에서 파이썬 프로그램이 전부 다 써버리면 인프런 강의에 영향을 끼치겠지만 단순 파이썬 프로그램이 블로킹이 되거나 동시성/병렬성으로 돌아간다고 해도 인프런 강의 프로그램과는 별개로 돌아가게 됩니다.
이제 파이썬 프로그램 입장에서 보면 만약에 async await 키워드가 붙은 경우에 코루틴 기반일 경우는 싱글 프로세스에서 싱글 스레드로, 멀티 스레드 기반일 경우에 멀티 스레딩으로, 멀티 프로세스 기반일 경우에 멀티 프로세싱으로 돌아가게 됩니다.
파이썬 프로그램이 멀티 프로세싱으로 개발된다면 파이썬 프로세스가 쪼개진다는 것보다 추가 자원(스레드, 프로세스 등)을 더 사용한다는 표현이 맞습니다!
좋은 질문 감사합니다 :)
친절한 답변 감사합니다~!
이해가 될듯 말듯 한데, 조금만 더 고민해보면 될것같습니다~!