컴퓨터 공학 & 통신

[개념 정리/운영체제] 멀티 프로세싱 & 멀티 스레딩

왈왈디 2023. 7. 26. 16:56
728x90

멀티 프로세싱

여러 개의 프로세스.

멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다.

서로 다른 프로세스를 동시에 진행할 수도 있고,

같은 프로세스를 병렬적으로 수행할 수도 있다.

 

멀티 스레딩

프로세스 내 작업을 멀티 스레드로 처리하는 기법이다.

스레드끼리 서로 자원을 공유하고

프로세스보다는 가볍기 때문에 효율성이 높다는 장점이 있다.

하지만 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐

스레드로 이루어진 프로세스에 영향을 줄 수 있다는 단점이 있다.

 

대표적인 예시로, 브라우저

멀티 프로세스이자 멀티 스레드 아키텍처를 가진 소프트웨어이다.

 

browser process, renderer process, GPU process, plugin process 등

멀티 프로세스 구조를 가지면서,

renderer process 내에 main thread, worker threads, compositor thread, raster thread 등을 갖는

멀티 스레드 구조를 함께 가진다.

 

아래는 간단하게 멀티 프로세스/ 멀티 스레드 web scraping을 구현해볼 수 있는 파이썬 코드다.

improt os
from multiprocessing import Process
import requests

def f(name):
    x = requests.get('https://w3schools.com/python/demopage.htm')
    print('pid of parent:', os.getppid())
    print('pid of %s : %d' %(name, os.getpid()))
    print(x.text)
    
if __name__ == '__main__':
    print('pid of main:', os.getpid())
    
    p1 = Process(target=f, args=("프로세스 1",))
    p2 = Process(target=f, args=("프로세스 2",))
    p1.start(); p1.join()
    p2.start(); p2.join()

* 여러개의 스레드 또는 프로세스를 만든 상태를 멀티 스레드, 멀티 프로세스라고 하며, 

이를 기반으로 작업하는 것을 멀티 스레딩, 멀티 프로세싱이라고 한다.

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌

728x90