멀티 스레드와 멀티 프로세스

itonse·2023년 12월 27일
0

CS 스터디

목록 보기
20/56

멀티 프로세스

멀티 프로세스는 하나의 응용 프로그램이 여러 개의 프로세스를 동시에 실행할 수 있게 하는 운영체제의 기술입니다.
ex) 멀티 프로세스 예시: 크롬 브라우저의 멀티 탭

💡동시성: 여러 작업이 짧은 시간 간격으로 번갈아가며 수행되어, 마치 동시에 수행하는 것처럼 보이는 것

멀티 프로세스는 다양한 구조 유형들이 존재 합니다.

그 중 하나인 부모-자식(계층) 구조

  • 이 구조에서는 하나의 부모 프로세스가 여러 자식 프로세스를 생성함으로써 다중 프로세스 구조를 형성합니다.
  • 부모 프로세스와 자식 프로세스 모두 고유한 프로세스 ID(PID)를 가지고 있으며, 부모 프로세스는 이 PID를 통해 자식 프로세스들을 관리하고 제어할 수 있습니다.


장점

  • 하나의 프로세스가 에러가 나더라도, 다른 프로세스에 영향을 주지 않아서 프로그램의 안정성을 확보할 수 있습니다.

단점

  • 독립된 메모리 영역이기 때문에 작업량이 많게되면 Context Switching이 빈번하게 일어나게 되는데,
    이 때 오버헤드가 발생할 수 있습니다.
  • 이로 인해 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지합니다.
  • 프로세스간에 자원 공유가 필요할 경우 복잡한 통신 기법인 IPC(프로세스 간 통신)를 사용하는데, 이는 성능 저하나 오버헤드를 발생시킬 수 있습니다.



멀티 스레드

하나의 프로세스 내에는 여러 개의 스레드가 존재할 수 있으며, 이 중 단 하나만 있는 경우를 싱글 스레드라고 하고, 두 개 이상 존재하는 경우를 멀티스레드 구조라고 합니다.

멀티 프로세스의 예로 크롬의 멀티 탭을 들었었는데, 멀티 스레드의 예시로는 크롬의 단일 탭 내에서 네트워크 요청 처리, 사용자 인터페이스의 I/O 작업, 자바스크립트 이벤트 루프 관리 등과 같은 다양한 작업들이 여러 스레드에 의해 동시에 처리되는 것을 들 수 있습니다.

장점

  • 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠르다는 장점이 있습니다.
  • 스택 영역을 제외한 메모리 영역을 공유함으로써, 메모리 사용량을 줄이고 자원 활용도를 높입니다.

단점

  • 멀티 스레드 구조에서 여러 개의 스레드가 공유 자원에 동시에 접근할 수 있는데, 이때 동기화 문제가 발생할 수 있습니다.
    • Race Condition(경쟁 상태): 여러 스레드가 동시에 같은 자원(예: 메모리, CPU 시간)에 접근하려 할 때 발생하는데, 이는 성능 저하로 이어질 수 있습니다.
    • Dead Lock(교착 상태): 스레드가 동시에 상대방이 사용 중인 자원을 요청하면서 서로가 서로를 기다리는 상태인 데드락이 발생할 수 있는데, 이는 시스템을 멈추게 할 수도 있습니다.
  • 하나의 스레드의 문제가 생기면 해당 프로세스 전체에 영향을 미칠 수 있습니다.

💡 멀티 스레드에서 동시 접근 제어: 뮤텍스 사용

멀티 스레드 환경에서 뮤텍스는 공유 자원에 대한 동시 접근을 제어하는 역할을 합니다.
한 스레드가 특정 자원을 사용할 때 다른 스레드의 접근을 차단함으로써, 데이터의 무결성을 보장하고 Race Condition을 예방할 수 있습니다.



ref.
Inpa Dev 멀티 프로세스 vs 멀티 스레드 비교 완전 총정리
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/main/OS
https://soopeach.tistory.com/252

0개의 댓글