EEYatHo 앱 깎는 이야기

CS ) 쓰레드와 프로세스 - EEYatHo iOS 본문

CS

CS ) 쓰레드와 프로세스 - EEYatHo iOS

EEYatHo 2021. 4. 4. 04:06
반응형

 

 

프로그램 (Program)


  • 파일시스템에 존재하는 실행 파일
  • 어떤 작업을 수행하기 위해 실행할 수 있는 파일
  • 저장장치에 저장되어 있는 정적인 코드 덩어리

 

 

 

프로세스 (Process)


정의

  • 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
  • OS 로부터 시스템 자원을 할당받는 작업의 단위

 

Detail. 특징

  • 프로세스는 최소 1개의 쓰레드를 가짐 (메인 쓰레드)
  • 각 프로세스는 별도의 주소 공간에서 실행
  • 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.
    ( ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용 )

 

 

 

쓰레드 (Thread)


정의

  • 프로세스 내에 포함되어있는, 여러 실행 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 실행의 단위

Detail. 특징

  • 쓰레드는 독립된 Stack만 가지고, 자신이 포함된 프로세스의 Code, Data, Heap 영역을 다른 쓰레드들과 공유함.
    • 함수 콜 스택 관리를 통한 독립적인 실행 흐름이 필요하기에 Stack을 가짐
    • Code, Data, Heap 은 다른 쓰레드와 공유하기에, 동시 접근을 주의해야함
  • 쓰레드가 프로세스 자원을 변경하면, 다른 이웃 쓰레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다.

 

 

프로세스 vs 쓰레드


  • 프로세스다른 프로세스들과 자원을 공유하지 않는다
  • 쓰레드다른 쓰레드들과 자원을 공유한다

 

 

 

하나의 애플리케이션이 멀티 태스킹을 지원하는 방법


  • 멀티 프로세스
  • 멀티 쓰레드

 

 

 

멀티 프로세스


  • 여러 프로세스를 가지고 하나의 애플리케이션을 운영
  • 하나 프로세스가 죽어도 다른 프로세스에 영향이 가지 않음 = 높은 안정성
  • 프로세스간 독립된 자원을 사용하기에 설계와 디버깅이 쉬움 = 크리티컬 섹션 관리를 하지 않아도됨

 

 

 

멀티 쓰레드


  • 쓰레드간 통신이 프로세스간 통신보다 빠름 ( 프로세스는 IPC 통신을 해야하고, 쓰레드는 공유하고 있는 자원을 통해서 통신가능 )
  • 쓰레드간 전환시 Stack 만 전환하면 되기에, Context-Switching 이 빠름

 

Comments