프로세스와 쓰레드의 차이
프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다.
쓰레드는 프로세스 내의 실행 단위이다. 한 프로세스 안에서 주소나 자원 공유들을 위해 CODE, DATA, HEAP을 공유하고 쓰레드마다 스택을 할당 받는다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩 이라고 한다.
스택을 독립적으로 할당하는 이유는 각 쓰레드마다 독립적인 함수 수행이 가능해야 하기 때문에 최소한의 스택을 할당해 독립적인 함수 수행을 보장한다. (PC REGISTER 포함)
멀티 쓰레드의 장점
1. 경량화
2. 좋은 성능
3. 병렬성
4. 응답성
5. 프로세스 context switch 와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다.
멀티 쓰레드의 단점
1. 메모리 공유 시 충돌 현상이 있어 동기화 문제 해결 필요
2. 병목현상이 발생하여 성능이 저하될 가능성이 높다.
암달의 법칙
병렬 처리 가능한 멀티 코어나 프로세서가 N개 있다고 N배의 성능 향상이 되지 않는다.
자바 쓰레드
JVM가 운영체제의 역할을 한다. 자바에는 프로세스가 존재하지 않고 스레드만 존재하며, 자바 스레드는 JVM에 의해 스케줄되는 실행 단위 코드 블록이다. 쓰레드 스케줄링은 전적으로 JVM에 의해 이루어진다.
'기술면접 > 운영체제' 카테고리의 다른 글
운영체제 6장 정리 동기화 Race Condition Mutex Lock Semaphore (0) | 2022.01.19 |
---|---|
운영체제 5장 정리 CPU 스케쥴링 (0) | 2022.01.19 |
운영체제 3장 정리 메모리 (0) | 2022.01.19 |
운영체제 2장 정리 Opreating System Architecture (0) | 2022.01.19 |
운영체제 1장 정리 인터럽트 (0) | 2022.01.19 |
댓글