IT recording...

[OS] 5. 쓰레드 본문

Operating System

[OS] 5. 쓰레드

I-one 2022. 4. 24. 01:34

[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]

운영체제

운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net


[그림과 함께 편하게 보려면 여기로]

https://adorable-aspen-d23.notion.site/OS-5-4b20a20380534fd0ad8d1d29a5d43dae

 

[OS] 5. 쓰레드

1. 쓰레드

adorable-aspen-d23.notion.site

1. 쓰레드

1. 쓰레드란?

  • 프로세스의 실행 단위→ 프로세스는 하나만 띄워놓고 프로세스마다 다른 부분의 코드를 실행할 수 있게 해주자
  • ex) 웹 브라우저 여러 개 띄우기, 한글 프로그램 파일 여러 개 띄우기
  • : 동일한 일을 하는 작업이 여러 개 있다고 했을 때 별도의 프로세스로 만들면 주소 공간을 여러개 차지해서 메모리 낭비가 된다.

프로세스 쓰레드

운영체제로부터 자원을 할당받는 작업의 단위 프로세스가 할당받은 자원을 실행하는 단위
  • Thread state
    • 프로세스와 동일하게 Ready, Running, Block을 가진다.
  • Thread Context Switching
    • 실행 상태가 변할 때마다 쓰레드 문맥 교환을 수행한다.
    • 프로세스 문맥교환보다 비용이 저렴하다.

2. 쓰레드가 공유하는 것들

  • 공유 VS Thread 별도
    • 공유
      • 주소공간, 프로세스 상태, 프로세스가 사용하는 각종 자원들(=task)
        • code, data, OS resources
    • 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프로그램이 스스로 관리
Comments