강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

수뼈님의 프로필 이미지
수뼈

작성한 질문수

그림으로 쉽게 배우는 운영체제

멀티프로그래밍과 멀티프로세싱

유니프로그래밍과 멀티프로세싱이 어떻게 공존할 수 있는 건가요?

해결된 질문

작성

·

117

3

멀티프로세싱이라는 게 CPU가 여러 개의 프로그램 시분할 처리로 돌아가며 처리하는 것이라고 이해했습니다. (프로그램이 메모리에 올라가면 프로세스가 되므로) 멀티프로세싱이 가능하려면 메모리에 프로세스 여러 개가 올라와 있어야 하는 게 아닌가요? 메모리 - 저장장치를 오가면서 메모리에 올라와 있는 프로세스를 전환함으로써 동시에 여러 개를 처리하는 것처럼 보일 뿐이지, 멀티프로세싱이라 할 수 있는 건가 좀 의문입니다.

답변 2

3

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 수뼈님!
먼저 영상으로 혼란 드려서 죄송합니다.

인프런 AI 인턴의 답변대로 메모리 - 저장장치를 오가며 처리하는 부분은 멀티프로세싱이 아니라 멀티태스킹입니다.
멀티프로세싱은 여러 개의 프로세서(CPU)가 여러 프로세스를 처리하는 내용인데 영상에서 잘못 안내 해드려 혼란을 드렸습니다.
다시 한 번 혼란을 드려서 죄송합니다.
내용을 수정하여 빠른 시일 내로 재업로드 하겠습니다.😥

수뼈님의 프로필 이미지
수뼈
질문자

아...!!!! 어쩐지 ChatGPT도 멀티프로세싱을 여러 개의 프로세서(CPU)가 여러 프로세스를 처리하는 걸로 설명하길래 할루시네이션이라 생각했는데 아니었군요!! 오류를 찾았다고 하니 워밍업 클럽을 헛듣고 있는 건 아니구나 싶어서 괜히 뿌듯합니다 ㅎㅎㅎ

감자님의 프로필 이미지
감자
지식공유자

질문보고 영상을 봤는데 아찔했습니다...
지금 서둘러서 영상 다시 만들고 있습니다!
오류를 찾아주셔서 감사합니다. 🙇‍♂🙇‍♂

수뼈님의 프로필 이미지
수뼈
질문자

혹시 후속 질문 가능할까요?

다시 정리해 보면
멀티프로그래밍 (Multiprogramming): 여러 개의 프로그램을 메모리에 올려놓고, CPU가 하나씩 번갈아 실행하는 방식

멀티태스킹 (Multitasking): CPU가 여러 개의 작업을 빠르게 전환해서 동시에 실행되는 것처럼 보이게 하는 방식

멀티프로세싱 (Multiprocessing): 여러 개의 CPU를 사용하여 여러 작업을 실제로 동시에 실행하는 방식인데

그럼 발전 순서가 멀티태스킹 -> 멀티프로그래밍 -> 멀티프로세싱인 건가요? CPU를 늘리는 것보단 램을 늘리는 게 시기적으로 더 빨랐을 것 같아서 이렇게 추론해 봤습니다.

감자님의 프로필 이미지
감자
지식공유자

발전 순서로 본다면 멀티프로그래밍 -> 멀티태스킹 -> 멀티프로세싱입니다.
멀티태스킹은 멀티프로그래밍이 조금 더 업그레이드된 방식입니다. 👏

감자님의 프로필 이미지
감자
지식공유자

영상을 새로 업로드 했습니다 🙂
멀티프로그래밍이 단순히 램을 늘리는 방식이 아니라 램의 크기도 커졌지만, 메모리 침범 이슈와 이전에 작업했던 프로세스로 돌아가야 해서 이전 정보도 저장해주는 작업이 추가되어야 하는데 결과적으로 멀티프로세싱이 더 늦게 나온 추론은 맞추신 것 같습니다!

0

안녕하세요, 인프런 AI 인턴입니다. 수뼈님!

질문해주신 내용을 살펴보니 유니프로그래밍과 멀티프로세싱의 공존에 대한 이해가 혼란스러우신 것 같습니다. 운영체제에서 이 두 가지 개념은 조금 다르게 다뤄집니다.

유니프로그래밍과 멀티프로세싱의 차이점:

  1. 유니프로그래밍(Uni-programming): 이는 한 번에 하나의 프로그램만 메모리에 올려놓고 실행하는 방식입니다. 따라서 한 번에 하나의 프로세스만 처리할 수 있습니다. CPU가 현재 실행 중인 프로세스가 종료될 때까지 대기하거나, I/O 등으로 인해 기다려야 하는 시간이 발생합니다.

  2. 멀티프로세싱(Multiprocessing): 이는 여러 프로세스가 동시에 실행되는 것처럼 보이게 하는 방식입니다. 실제로는 CPU의 시분할(time-sharing) 방식으로 각 프로세스에 CPU 시간을 할당합니다. 이는 메모리에 다수의 프로세스가 로딩되고, CPU가 빠르게 전환되면서 실행해주는 방식을 통해 구현됩니다. 결과적으로 사용자나 개발자는 여러 프로세스가 동시에 실행되는 것처럼 인식하게 됩니다.

프로세스가 메모리와 저장장치 사이를 오가며 작동하는 것은 멀티태스킹(multitasking)의 일환입니다. 멀티프로세싱과 혼동할 수 있지만, 본질적으로는 같은 목표를 위해 상호작용합니다. 이 과정에서 CPU 스케줄러는 프로세스의 상태를 관리하며, 이 때 하드디스크에 저장된 데이터를 다시 메모리에 올리거나 이전 상태로 복구하는 작업을 수행할 수 있습니다.

관련하여 더 자세한 내용을 확인하고 싶다면, 아래 답변 링크를 참조해보시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

수뼈님의 프로필 이미지
수뼈

작성한 질문수

질문하기