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






친절한 답변 감사합니다~!
이해가 될듯 말듯 한데, 조금만 더 고민해보면 될것같습니다~!