프로세스 vs 쓰레드

정하윤·2022년 9월 13일
0

  • Date 영역 : 전역변수

  • Heap 영역 : 동적 할당된 메모리 공간 저장

  • Stack 영역 : 지역 변수 ,매개 변수 등 들어감

  • 부모 프로세스 내에서 별도의 동작을 하기 위해서 Code 영역, Heap 영역, Date 영역은 공유하지만 또 다른 별도의 main Code 영역과 A thread Stack 영역을 만들어서 이루어진 것이 쓰레드 이다

커널 레벨 쓰레드

  • 스케줄러가 쓰레드들의 정보들을 관리 해줌
  • 위의 사진 같은 경우 스케줄러가 쓰레드 A , 쓰레드 B , 쓰레드 C 는 완전히 대등하다.
  • 만약 쓰레드 A 가 I/O 상태에 빠져서 자신의 실행을 포기하면 스케줄러가 쓰레드 B 나 쓰레드 C 에게 실행의 우선 순위를 넘겨주게 된다.

유저 레벨 쓰레드

  • 스케줄러가 프로세스들의 정보들을 관리 해주고 그안에서 쓰레드가 동작하는 형태
  • 위의 사진 같은 경우 프로세스 A와 나머지 프로세스 1개가 대등하므도 프로세스 A의 안데 쓰레드 A와 쓰레드 B가 대등하고 나머지 프로세스 1개 안의 쓰레드 C가 쓰레드 A와 쓰레드 B 보다 2배더 높은 시간을 할당받을 수 있다.
  • 만약 쓰레드 A 가 I/O 상태에 빠져서 자신의 실행을 포기하면 스케줄러는 프로세스 A 가 실행을 포기한다고 인식을하고 쓰레드 B는 실행을 해야하는 상황임에도 불구하고 남은 프로세스에게 우선 순위를 넘겨주게 된다.
  • 위와 같이 단점이 많지만 속도가 커널 레벨 쓰레드 보다 빠르다.

0개의 댓글