IT recording...
[OS] 5. 쓰레드 본문
[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]
[그림과 함께 편하게 보려면 여기로]
https://adorable-aspen-d23.notion.site/OS-5-4b20a20380534fd0ad8d1d29a5d43dae
1. 쓰레드
1. 쓰레드란?
- 프로세스의 실행 단위→ 프로세스는 하나만 띄워놓고 프로세스마다 다른 부분의 코드를 실행할 수 있게 해주자
- ex) 웹 브라우저 여러 개 띄우기, 한글 프로그램 파일 여러 개 띄우기
- : 동일한 일을 하는 작업이 여러 개 있다고 했을 때 별도의 프로세스로 만들면 주소 공간을 여러개 차지해서 메모리 낭비가 된다.
프로세스 쓰레드
운영체제로부터 자원을 할당받는 작업의 단위 | 프로세스가 할당받은 자원을 실행하는 단위 |
- Thread state
- 프로세스와 동일하게 Ready, Running, Block을 가진다.
- Thread Context Switching
- 실행 상태가 변할 때마다 쓰레드 문맥 교환을 수행한다.
- 프로세스 문맥교환보다 비용이 저렴하다.
2. 쓰레드가 공유하는 것들
- 공유 VS Thread 별도
- 공유
- 주소공간, 프로세스 상태, 프로세스가 사용하는 각종 자원들(=task)
- code, data, OS resources
- 주소공간, 프로세스 상태, 프로세스가 사용하는 각종 자원들(=task)
- Thread 별도로 존재
- PC, register(CPU수행단위), stack
- 공유
- 스택을 쓰레드마다 독립적으로 할당하는 이유?
- 스택 : 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위한 메모리 공간
- 스택을 독립적으로 갖는다는 것은 **독립적인 함수 호출(실행 흐름)**이 가능함을 의미한다.
- 쓰레드마다 PC Register를 독립적으로 할당하는 이유?
- PC : 다음 명령어를 가리킴
- Thread Context Switching에 의해 쓰레드가 선점당하면, 어디까지 수행했는지에 대한 정보를 저장해야 한다.
3. 쓰레드의 장점
1. 응답성(Responsiveness)
- 다중 스레드의 경우 스레드 하나가 blocked상태일 때도 동일한 태스크 내의 다른 스레드가 CPU를 받아서 응답할 수 있다.(running) ⇒ 처리율 향상과 성능 향상
- ex) 네이버 화면 클릭했을 때, 네이버 웹서버에서 이미지를 불러오는 동안에(blocked) 텍스트 읽어오는 스레드가 running되어 글을 보여주는 것 → 빠른 응답 가능
- 일종의 비동기식 입출력
2. 자원 공유(Resource Sharing)
- 쓰레드는 프로세스의 메모리, 자원 등을 공유하므로 커널의 도움 없이 상호간의 통신이 가능하다.
- 메모리 낭비를 막는다.
3. 경제성 (Economy)
- 쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드 전환시간(context switching)이 짧다.
4. CPU가 여러 개 있는 경우
- Utilization of MP(multiprocessor) architectures
- 각 쓰레드는 다른 프로세서들에서 Parallel(병렬적)으로 실행 가능하다.
4. 쓰레드 종류
1. 커널 쓰레드
- 커널이 쓰레드가 여러개라는 것을 알고 있음
- 커널이 CPU스케줄링을 통해 CPU사용권을 넘겨줌
2. user 쓰레드
- 커널은 쓰레드가 여러개임을 모름
- 커널이 보기에는 프로세스 내에 스레드가 한 개처럼 보임
- User프로그램이 스스로 관리
'Operating System' 카테고리의 다른 글
[OS] 7. 프로세스 동기화, 임계구역 - (1) (0) | 2022.04.24 |
---|---|
[OS] 6. CPU 스케줄링 (0) | 2022.04.24 |
[OS] 4. 프로세스 시스템콜, 협력 - (3) (0) | 2022.04.24 |
[OS] 3. 프로세스 스케줄링 - (2) (0) | 2022.04.24 |
[OS] 2. 프로세스란? - (1) (0) | 2022.04.24 |
Comments