Process & Thread

YongJunCha·2021년 5월 9일
0

swift

목록 보기
1/18
post-thumbnail

Process ?

  • OS로 부터 자원을 할당받는 작업의 단위
  • 각각의 독립된 영역(Code, Stack, Heap, Data)을 할당 받음
  • 프로세스간 변수나 자원에 접근할 수 없음
  • 만약 접근하고 싶다면 IPC를 통해 접근해야 함 (파일 과 소켓)

Multi Process ?

  • 하나의 프로그램에 여러개의 프로세스를 두고 프로세스 마다 한 가지 기능을 하게 함

Good ?

  • 서로의 자원과 자료구조에 접근할 수 없음
  • 독립된 구조이고 침투의 가능성이 없어 안정성이 좋다.

Bad ?

  • 프로세스가 바뀔 때 마다 메모리 영역을 넓혀줘야 해서(Context Switching) CPU의 부담도 커지고 오버헤드가 발생한다.

Thread ?

  • 한 프로세스 내의 실행의 흐름
  • 프로세스 내에서 동작하기 때문에 메모리 영역을 독립적으로 받지 못 함.
  • Code, Data, Heap 영역은 공공으로 사용한다.
  • Stack의 영역은 독립된 영역을 할당받는다.
    LIFO : Last In First Out 마지막에 들어온 것이 처음 나가게 되는데Stack을 공유하게될 시 섞인채로 순서대로 나와서 흐름이 엉망이될 수 도 있기 때문이라고 한다.

Multi Thread ?

  • 하나의 프로그램에 여러개의 쓰레드를 만들어 쓰레드 마다 한 개의 작업을 하게 만든 것.

Is it good?

  • Code, Data, Heap의 영역을 공유하기 때문에 Context Switchin이 빠름
  • 새로운 프로세스를 생성하는 것이 아니므로 생성과 소멸도 빠르다.
  • 쓰레드간 통신 방법이 훨씬 간단함.

Bad?

  • 설계 난이도
  • 자원 공유가 장점이자 단점, 접근이 가능해서 내용이 바뀔 수 있다.
  • 하나의 쓰레드가 영향을 받으면 전체 쓰레드가 영향을 받는다.

0개의 댓글