스레드란 무엇?
스레드는 하나의 프로세스 위에서 동시에 동작하는 여러 작업들이라고 보면된다(작업의 단위)
멑티 스레드
위 그림처럼 두개 이상의 스레드가 있는 것을 멀티 스레드라고 한다
- 저렇게 진행이 중간에 끊기는 이유는
스레드는 프로세스 내에서 자원을 공유하는데
스레드가 동시에 진행되게 되면
동일한 자원에 동시에 손을 대서 원하는 동작을 안할수가있다
그래서 동시성을 제한해서 구현해야함
예) 하나의 버튼을 한 스레드당 10번씩 누를 때 예상 값은 20이 카운트 되길 원했는데, 동시에 눌린 경우가 있어서 카운트가 15인경우
스레드의 자원 공유
스레드는 프로세스의 4가지 메모리 영역 중,
stack영역 만을 독립적으로 갖고
나머지 3개의 메모리 영역은 다른 스레드와 공유하게된다
독립적인 stack을 가지고 있다는 것의 의미
stack은 함수 호출 시 생성되고, 함수가 끝나면 소멸됨
스택은 함수 호출과 관련된 지역 변수, 리턴 주소, 함수 인자 등을 저장하는 메모리 공간
stack을 독립적으로 가졌다는 것은 각 스레드가 각자의 함수를 호출한다고 봐도 된다
공통의 자원(변수)에 접근 할 때에만 동기화(다른 스레드가 자원을 건들고 있으면 다른 스레드는 기다리는것)
를 시켜줘서 실행 흐름을 컨트롤하고
그 이외에는 각 스레드별 실행 흐름을 독립적으로 가지고 있다
👩💻 완전히 정복하는 프로세스 vs 스레드 개념
한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아
inpa.tistory.com
'Operating System' 카테고리의 다른 글
메모리 (0) | 2024.10.20 |
---|---|
데드락(deadlock)이란 (0) | 2024.10.15 |
프로세스 (0) | 2024.10.15 |
[linux] curl 명령어 (0) | 2024.07.24 |
리눅스 및 패키지관리자 종류 (yum,rpm,apt,dpkg) (0) | 2023.03.29 |