프로세스
- 자원 소유의 단위
- 메인메모리, IO장치, 파일시스템
- 스케줄링의 단위
- 문맥교환은 프로세스 사이에 발생하며 다음 실행될 프로세스를 선택
- Thread 라고 정의
멀티 쓰레드
- OS가 하나의 프로세스 내에서 여러 쓰레드를 지원하는 것.
- 여러 process가 동시에 실행될 수 있으면서, 각 process 내에 여러 thread가 함께 존재하는 것이다.
- 멀티쓰레딩 환경에서 프로세스는 보호의 단위, 자원할당의 단위로도 정의된다.
- 스케줄링의 단위는 프로세스가 아닌 쓰레드가한다.
- 각쓰레드는 문맥교환 수행을 위해 독립된 Program counter를 보유한다.
- 독립된 stack을 보유한다. 하지만 heap, data,text같은 메모리영역은 프로세스내 다른 쓰레드 와 공유한다.
- process에게 할당된 stack memory 영역을 여러 thread들이 나누어 사용하고, 나머지 memory 영역은 process 단위로 공유하는 것이다. 따라서 기본적으로 memory 등의 모든 자원은 process 내의 모든 thread들이 공유한다고 볼 수 있다.
이점 : 성능 향상에 큰 도움이 된다. 쓰레드 만드는게 비용이 더 적다.
프로세스/쓰레드
유사점 - 문맥교환 단위. Program Counter 보유.
차이점 - 프로세스는 pcb가 관리, 쓰레드는 tcb가 관리.
- 프로세스는 다른 프로세스의 자원에 접근할 수 없지만, 쓰레드는 다른 쓰레드의 자원에 접근가능하다.
- 프로세스단위의 문맥교환 후에는 메모리 주소공간이 달라지지만 쓰레드 단위의 문맥교환 후에는 메모리 주소공간의 변화가 없다.
쓰레드의 상태
- 쓰레드 상태는
- 생성 - 새로운 프로세스가 생성되면 이 프로세스를 위한 쓰레드도 함께 생성
- 블록 - 쓰레드가 어떤 사건을 기다리는 상태. 자신의 사용자 레지스터,프로그램 카운터, 스택포인터 저장
- 비블록 - 쓰레드를 블록시킨 사건이 발생했을때 그 쓰레든느 준비큐로 이동
- 종료
사용자 수준 쓰레드 / 커널 수준 쓰레드
- ULT는 각 thread가 모두 사용자 주소 공간에 위치하기 때문에 dispatch를 할 때에 kernel mode로 변경될 필요 없이 user mode에서 모두 수행 가능하다.
- KLT는 dispatch를 할 때마다 kernel mode로 변경되어야만 한다
- ULT는 운영 체제에 종속적이지 않고 어떠한 kernel의 변경 없이도 원활히 수행될 수 있는 반면, KLT는 운영 체제에 따라 존재하지 않을 수도 있다는 차이점
- KLT는 어떤 응용이라도 다중쓸레드로 프로그래밍되며, 단일 프로세스내에서 지원된다. 커널에 의한 스케줄링은 쓰레드를 기반으로 이뤄진다.
사용자 수준 쓰레드 / 커널 수준 쓰레드 장단점
ULT 장점
- 커널모드의 특권이 요구되지 않는다.
- 쓰레드 관리를 위해 커널모드로 전환되지 않는다.
- 커널의 변경불필요하고 어떠한 운영체제에서도 적용 가능하다.
ULT 단점
- 일반 OS에서 대부분의 시스템콜은 해당쓰레드 블록시킨다.
- 다중처리의 장점을 살릴 수 없다.
- , ULT의 경우에는 하나의 thread에서 system call을 호출할 경우 같은 process 내의 모든 thread들이 함께 block이 된다는 치명적인 단점. KLT의 경우에는 한 thread가 block된다고 하더라도 다른 thread들은 자유롭다.
KLT 장점
- 커널은 여러 처리기에서 같은 프로세스 내의 여러 쓰레드를 동시에 스케줄 가능
- 커널 루틴 자체가 다중 쓰레드로 구성 ㄱ나ㅡㅇ
KLT 단점
- 같은 프로세스 내의 한 쓰레드에서 다른 쓰레드로 제어를 넘길때 커널로의 모드 전환이 필요
ULT와 KLT 결합 방법
- Solaris
- 쓰레드 생성은 완전히 사용자 공간에서
- 한 응용쓰레드들이 다수처리기에서 병렬로 수행될 수 있고 전체프로세스를 블록시키지 않는다.
'Operating System' 카테고리의 다른 글
[Operating System] Semaphore (0) | 2023.01.01 |
---|---|
[Operating System] Page Replacement (0) | 2023.01.01 |
[Operating System] Segmentation (0) | 2022.12.31 |
[Operating System] Paging Mechanism (0) | 2022.12.31 |
[Operating System] Address and Memory (0) | 2022.12.29 |