-
[운영체제] 04. 스레드CS/OS 2023. 5. 16. 00:06
04. 스레드
프로세스의 문맥교환 문제 -> 스레드 등장
오늘 날 실질적 실행 단위 : 스레드 , 함수하나 = 쓰레드
스레드 : 프로세스보다 더 작은 실행단위, 운영체제가 작업 스케쥴링 하는 단위
pthread_t = tid; pthread create(id, attribute, function_pointer, argument)
- 프로세스는 스레드의 컨테이너 , 프로세스는 스레드들의 공유공간 (모든 스레드는 프로세스의 코드,데이터,힙 공유)
- 쓰레드의 주소공간은 프로세스 주소공간 내 형성
- side- by - side 형태
스레드 사적 공간 1. 스레드 코드 2. 스레드 스토리지(TLS) 3. 스레드 스택
공유공간 1. 프로세스 코드 2. 프로세스 데이터(로컬 스토리지 제외) 3. 프로세스 힙
스레드는 스케쥴링 될때 실행 !
프로세스는 운영체제가 응용프로그램 적재하는 단위, 스레드는 실행단위
PCB 정보 - 환경 context
TCB 정보 - 실행 context
Thread Control Block : TCB 스레드 상태 정보 저장
PC에 현재 실행중인 코드주소, SP에 현재 실행중인 스레드의 스택
다른 프로세스에 속한 스레드로의 스위칭 < 동일한 프로세스에 속한 쓰레드 스위칭
1. 추가적인 메모리 오버헤드 1.context 저장 및 복귀
2. 추가적인 캐시 오버헤드 2. TCB 리스트 조작
3. 캐시 Flush와 채우기 시간
프로세스 종료
1. 스레드 exit() 호출
2. main 스레드 종료
3. 모든 스레드 종료
스레드 종료
1. 해당 스레드_exit() 호출 시
2. 메인에서 해당 스레드_exit() 호출 시
스레드 조인 : 부모스레드 자식스레드 종료 대기
스레드 양보: 자발적으로 자신의 실행 중단, 다른 스레드 스케쥴링 하도록 지시
멀티 쓰레드 모델
Kernel- level -thread
1. 커널 스레드 : 커널이 직접 생성하고 관리 , 응용프로그램의 시스템콜로 생성
TCB : 커널이 커널공간에 생성, 소유 -> 커널에 의해 스케쥴
스레드 주소공간 : 사용자 공간
2. 순수레벨 스레드 : 부팅부터 커널 돕기위해 생성됨
스레드 주소공간 : 커널공간
user-level-thread
3. 사용자 스레드 : 라이브러리에 의해 구현된 일반적 스레드 , 응용프로그램이 라이브러리 호출로 생성
U-TCB : 스레드 라이브러리가 사용자공간에 생성 , 소유 -> 스레드 라이브러리에 의해 스케쥴
스레드 주소공간 : 사용자 공간
커널은 유저레벨 스레드 존재 모름 , 하나의 프로세스로 인신
스레드 장점
1. 병렬 실행으로 성능 향상
2. 응답성 우수 (사용자 인터페이스)
3. 시스템 자원 사용 효율성 (프로세스에 비해 생성 유지시 메모리, 자원 적게 사용)
4. 응용프로그램 구조 단순화 (작업- 함수로 ..)
5. 작성 쉽고 효율적 통신
-------------------- 공간적인 측면이었음
운영체제가 하는 일 : 컴퓨터라는 하드웨어 잘 쓰기 위해서
효율 안정 확장 편리
한정된 자원으로 여럿 사용 - 다중프로그래밍
폰노이만 구조에 의해 프로그램은 프로세스가 되어야함 (메모리에 적재)
요약 : 메모리에 어떻게 잘 올리고, 어떻게 빠르게 바꾸는지 - 공간
언제 누구를 처리할지 - 스케쥴링 문제
'CS > OS' 카테고리의 다른 글
[운영체제] 05. 스케쥴링 (1) 2023.05.16 [운영체제] 03. 프로세스 (1) 2023.05.16 [운영체제] 02. 컴퓨터 아키텍쳐 (0) 2023.05.16 [운영체제] 01. OS (0) 2023.04.17