GiYeong

멀티 프로세스 / 멀티 스레드 본문

CS/운영체제

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

gy2710 2022. 7. 24. 15:06

멀티 프로세스

하나의 응용 프로그램을 여러 프로세스로 구성하여, 각 프로세스가 하나의 작업을 처리하도록 하는 것

장점

  • 여러 자식 프로세스 중에서 하나의 자식 프로세스에 문제가 발생해도, 다른 자식 프로세스들에 영향을 끼치지 않는다. 

단점

  • Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소도되는 등의 오버헤드가 발생한다.
  • 프로세스들이 각각의 독립된 메모리 영역을 할당받아 공유하는 메모리가 없기 때문에, Context Switching이 발생하면 캐쉬에 있는 모든 데이터를 초기화하고 다시 캐쉬 정보를 불러와야한다.
  • 프로세스간 통신이 어렵고 복잡하다.
Context Switching
멀티 프로세스 환경에서 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것.
즉, CPU에 실행할 프로세스를 교체하는 것.
어떤 하나의 프로세스를 실행중인 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존 프로세스의 상태/레지스터 값(Context)를 PCB(Process Control Block)에 저장하고 새로운 프로세스의 상태/레지스터 값을 PCB에서 읽어 교체하는 작업을 Context Switching이라고 한다.

Context
CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보들로서 PCB에 저장된다.

PCB
프로세스의 상태값들을 저장하는 메모리의 별도 공간으로, Process ID(PID), 레지스터 값(PC, SP 등), Scheduling Info(프로세스 상태), Memory Info 등을 저장한다.

Context Switching 작동 순서
1. 스케줄러가 A 프로세스의 실행을 중단하고 B 프로세스를 실행할 것을 요청
2. A 프로세스에서 Stack의 데이터 위치를 가리키고 있는 SP(Stack Pointer) 값과 다음 실행해야하는 코드의 주소값인 PC(Program Counter) 값을 커널의 자료구조인 PCB에 저장
3. A 프로세스가 ready 또는 block 상태로 바뀌고, B 프로세스가 ready 에서 running 상태로 바뀌며 B 프로세스의 PCB에서 SP 값과 PC 값을 찾아 덮어 씌운 후, CPU에서 B 프로세스를 실행 -> dispatch

 

멀티 스레드

하나의 응용 프로그램을 여러 개의 스레드로 구성하고, 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것.

 

장점

  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들기 때문에 자원을 효율적으로 관리할 수 있다.
  • 스레드 간 데이터를 주고 받는 것이 간단해지고, 시스템 자원 소모가 줄어든다.
  • 스레드 가이의 작업량이 작아 Context Switching이 빠르다.
  • 스레드는 프로세스 내의 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.

단점

  • 설계할 때 주의해야 한다.
  • 디버깅이 어렵다.
  • 단일 프로세스 시스템에서는 효과가 미미하다.
  • 프로세스 밖에서 스레드 각각을 제어할 수 없다.
  • 자원 공유의 문제(동기화 문제)가 발생한다.
  • 하나의 스레드에 문제가 발생하면, 전체 프로세스가 영향을 받는다.

 

'CS > 운영체제' 카테고리의 다른 글

기아상태(Starvation)  (0) 2022.07.27
교착상태(Deadlock)  (0) 2022.07.27
Thread Safe  (0) 2022.07.27
동기 / 비동기  (0) 2022.07.24
프로세스 / 스레드  (0) 2022.07.24
Comments