728x90
반응형
SMALL
1.프로세스(Process)
현재 실행중인 프로그램을 말한다.
※프로그램
어떤 작업을 처리하기위한 일련의 명령어 모음
평소에는 디스크에 저장되어있다가 사용자가 실행 시 RAM에 올라오고(로드), 메모리에 저장된 명령어가 CPU를 차지함으로써 실행한다.
쉽게말해, CPU를 점유하면서 실행중인 프로그램이다.
1.1프로그램이 프로세스가 되는 과정
여기서 핵심은 프로그램은 하나지만 프로세스는 여러개일 수 있다.
Ex) 구글 크롬의 경우 프로그램은 하나다. 하지만 크롬창 여러개 띄우고 동시에 작업이 가능하다.
그 이유로는 크롬프로그램이 memory에 여러번 올라와서 여러개의 프로세스로 존재하기 때문이다.
2.스레드(Thread)
- 프로세스 내에서 작업을 처리하는 단위이다.
- 프로세스가 할당받은 자원을 이용해 작업을 처리한다.
- 프로세스는 최소 하나 이상의 스레드를 가지는데 이 스레드를 메인 스레드라고 부른다.
- 멀티스레드 한 프로세스에 여러 스레드가 존재하고 둘 이상의 스레드가 동시 작업처리하는 방식
2.1스레드의 자원 사용방법
스레드가 프로세스의 자원을 어떻게 이용할까?
이를 이해하기 위해 프로세스의 메모리 구조를 살펴봐야한다. 각 프로세스는 코드,데이터,힙,스택 영역으로 나뉘어 저장이 된다.
여기서 스레드가 여러개일 때 프로세스의 메모리 구조는 어떻게 될까?
다른 영역을 전부 공유하지만 스택영역만은 공유하지 않는다.
다음과 같이 Stack은 공유하지 않고 코드, 데이터, 힙 영역은 모두 공유하게 된다.
※멀티 스레드에서 Stack만 자원을 공유하지 않고 따로 나뉘는 이유는?
- Stack은 각 스레드의 개인 작업공간이기 때문이다.
- 스택은 함수 호출과 지역 변수를 저장하는 공간이다.
- 만약 스택을 공유하면 서로의 지역 변수에 접근할 수 있어 데이터가 꼬이고 충돌이 발생할 수 있다.
장점 성능향상과 자원을 효율적으로 사용가능
단점 자원을 공유하여 동기화 문제 야기
728x90
반응형
LIST