들어가기 전 키워드
실행 단위 : CPU core에서 실행하는 하나의 단위로 프로세스와 쓰레드를 포괄하는 개념
프로세스 : 하나의 쓰레드만 가지고 있는 단일 쓰레드 프로세스
동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
Context Switching : 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업
프로세스의 메모리 영역과 PCB 블럭
프로세스 | 쓰레드 | |
---|---|---|
개념 | 운영체제로부터 자원을 할당받은 작업의 단위 | 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 |
작동 방식 | 한 가지 프로세스밖에 실행을 못하므로 여러 개의 프로세스를 실행할 때 모든 자원을 짧은 텀으로 전환해서 실행한다. | 코드, 데이터, 힙 영역은 공유한다. → 각 쓰레드는 스택부분만 전환해서 실행한다. |
강제종료 된다면? | 한 프로세스에 문제가 생겨도 독립적이기 때문에 영향을 덜 받는다. | 한 쓰레드에 문제가 생기면 전체 프로세스에 영향이 간다. |
공유 자원 | 별개의 메모리 영역(코드, 데이터, 힙, 스택)을 확보한다. → 독립적 | 코드, 데이터, 힙 영역을 공유한다. → 각 쓰레드는 스택 부분만 별도로 가지고 있다. |
Context Switching | Context Switching 비용이 크다. | Context Switching 비용 적다. |
동기화 작업 | 독립적이기 때문에 동기화 작업 필요하지 않다. | 공유 자원에 대해 접근 시 동기화 작업이 필요하다. |
https://www.youtube.com/watch?v=1grtWKqTn50
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
표와 사진으로 깔끔한 포스팅이네요!! 내용 잘 보고 갑니다 ㅎㅎ