cs/운영체제
3강-2. Process2
Tomato_Coffee
2023. 11. 3. 10:53
Thread
Thread : 프로세스 내부에 cpu 수행 단위가 여러 개 있는 경우
- 프로세스 하나에서 공유할 수 있는건 최대한 공유한다. (프로세스 상태, 각 종 자원)
- 단, cpu 수행과 관련된 정보는 별도로 관리한다.(프로그램 카운터, 레지스터, stack 공간)
같은 일을 하는 프로세스를 여러개여러 개 하고 싶으면, pc 만 여러 개를 두면 된다.(cpu 수행 단위를 여러 개 둔다.)-> thread
아래 이미지 참고
Thread를 사용할 때 장점.
예시 : 네이버 웹 화면을 띄울때, 스레드를 하나만 사용할 때는 화면이 전부 완성할 때까지는 창이 안 떠서 답답하다.
그러나 여러개의 스레드를 사용하게 되면 화면이 들어온 데이터를 즉각 반영해서 화면에 띄어준다.
- 스레드를 사용하면 자원 낭비를 줄일 수 있다.
- 하나에 프로세스에 스레드를 여러개 두면 성능향상, 자원 절약을 할 수 있다.
- 병렬성 장점.
위 이미지 중 binary용어 부분은 무시하자.
스레드 사용시 장점 정리
1. 응답성( ex : 멀티 스레드 웹-> 네트워크를 요청(i/o)한 스레드만 블록, display 하는 스레드는 continue)
2. 자원 공유
3. economy - 빠르다는 의미임. 스레드간에 cpu switching은 오버헤드가 적다.
4. MP Architecture : Multiprocessor architecture-> 병렬적으로 일을 할 수 있다.(ex : 행렬 연산을 효율적으로 할 수 있다.)
스레드 구현
- Kernel Threads
- 스레드가 여러개 있다는 사실을 운영체제가 알고 있다.
- 하나의 스레드에서 다른 스레드로 cpu가 넘어가는 것도 커널이 cpu 스케줄링하듯이 넘겨준다.
- User Threads
- 프로세스 안에 스레드가 여러개 있다는 사실은 운영체제는 모른다.
- 유저 프로그램이 라이브러리의 도움을 받아서 스레드를 관리한다.