1 / 31

Week4 : 운영체제 Chapter 3: 프로세스와 쓰레드

Week4 : 운영체제 Chapter 3: 프로세스와 쓰레드. 담당교수 : 최 윤 정. Contents. 학습목표 프로세스와 스레드의 개념 을 이해한다 . 프로세스의 상태 변화 과정 을 이해한다 . 프로세스의 생성과 종료 등 프로세스와 관련된 작업을 이해한다 . 프로세스와 스레드의 차이를 알고 스레드의 장점을 이해한다 . 내용 프로세스 개요 및 관리 스레드. 1. 프로세스 개요. 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태 .

shalom
Download Presentation

Week4 : 운영체제 Chapter 3: 프로세스와 쓰레드

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Week4 : 운영체제Chapter 3: 프로세스와쓰레드 담당교수 : 최 윤 정

  2. Contents • 학습목표 • 프로세스와 스레드의 개념을 이해한다. • 프로세스의 상태 변화 과정을 이해한다. • 프로세스의 생성과 종료 등 프로세스와 관련된 작업을 이해한다. • 프로세스와 스레드의 차이를 알고 스레드의 장점을 이해한다. • 내용 • 프로세스 개요 및 관리 • 스레드

  3. 1. 프로세스 개요 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태. • 1960년대 멀틱스시스템(Multics System) 설계자들이 처음 사용. • 이후 , Task 라는 용어와 사용되면서 다양한 정의를 가짐. • 실행중인 프로그램/ 프로시저 • 비동기적(Asynchromous) 행위 • 실행중인프로시저 • 실행중인 프로시저의 제어 추적 • 디스패치가가능한 대상 • ..

  4. 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태?? 해당 프로세스가 사용하고 있는 메모리 영역(자신의 주소 공간)이 존재한다.! - 프로세서 할당(점유) 시간과 메모리, 파일, 입출력장치 등의 자원이 필요하며, 자원은 프로세스 생성 및 실행 시 할당됨. - 현재의 활동 상태를 나타내는 프로그램 카운터와프로세서의 현재 활동(레지스터 내용) 포함. 실행 스택(Stack) : 호출된 프로시저(함수)의 복귀 주소와 지역 변수 등의 일시적인 데이터를 저장하는 영역. 실행 힙(Heap) : 텍스트(코드) 영역과는 별도로 유지되는 자유 영역. 데이터(static 정적 변수) : 프로세스 실행 중 동적으로 할당 받는 영역, 전역 또는 정적 변수 저장. 텍스트(코드) : 프로세서가 실행하는 코드 저장. [그림3-1] 메모리에 존재하는 프로세스 주소 공간 구조

  5. 프로세스는 사용자 관점에서 세그먼트(코드, 데이터, 스택 등)의 가상 주소 공간을 갖는 상태를 의미, 시스템 관점에서 실행중인 프로그램을 의미. • 처리 상태에 있는 데이터 구조로 표현 가능하다. • 스케줄러(디스패칭)에 의해 프로세서 할당. • 파일에 관련된 자원에 대한 참조(장치 관리, 메모리 관리) • 프로세스 지원과 협력에 관한 정보(교착상태, 보호, 동기화) 교환 • 프로세스 관련 연산은 생성, 종료, 보류, 자원 할당, 해제 등 사용자 관점에서의 프로세스 시스템 관점에 본 프로세스

  6. 프로세스의 종류 : 실행유형에 따라 3가지 • 운영체제 프로세스 • 커널프로세스 또는 시스템 프로세스라 부름. • 프로세스 실행 순서 제어, 사용하고 있는 프로세스가 다른 사용자나 운영체제 영역을 침범하지 못하게 감시하는 기능 담당. • 사용자 프로세스 생성, 입출력 프로세스 등 시스템 운영에 필요한 작업 수행. • 사용자 프로세스 : 사용자 코드 수행. • 병행 프로세스 • 프로세스 여러 개가 동시에 실행되며, 독립 프로세스와 협동 프로세스로 구분. • 1. 독립 프로세스 : • 프로세스 여러 개가 병행하여 수행 시 주어진 초기값에 따라 항상 같은 결과를 보여줌. • 서로 독립적으로 실행되어 다른 프로세스에 영향을 받지 않고, 데이터를 공유하지 않음. • 2. 협동 프로세스 • 다른 프로세스에 영향을 주거나 다른 프로세스에 의해 영향을 받음. • 컴퓨터 시스템의 제한된 자원을 공유하는 프로세스들이 통제되어 상호 작용해야 하는 경우 발생. • 서로 협동해야 하는 경우, 통신을 위한 수단과 동기화 기능이 필요.

  7. 프로세스 상태 • 운영체제는 프로세스 실행을 제어하는 역할을 한다. 그런데! • 프로세스가 실행되면서 상태가 변하므로 제어에 필요한 프로세스 상태를 점검해주어야 한다. • 간단 분류 : 실행과 비실행 프로세스 • 운영체제가 프로세스를 생성하면 비실행 상태로 초기화하여 실행을 기다린다. • 실행중인 프로세스가 종료되거나 인터럽트가 발생하면 비실행프로서스 중 선택된 프로세스가 실행상태로 변하고 ( 디스패치) • 인터럽트된 프로세스는 비실행 상태가 된다.

  8. 실행 프로세스의 상태 • 대부분의 프로세스는 준비나 대기(보류) 상태이며, 어느 한 순간에 한 프로세스만 실행상태가 됨. 실행 : 명령어가 실행되는 상태, 즉 프로세스가 프로세서를 점유한 상태 대기 또는 보류 : 프로세서가 이벤트(입출력 종료와 같은 외부 신호)가 일어나길 기다리는 상태 준비 : 프로세스가 프로세서를 할당 받기 위해 기다리는 상태

  9. 프로세스 상태 변화 • 시스템의 모든 프로세스는,종료되어 시스템을 떠날 때까지 준비,실행, 대기(보류) 상태로 변화되며 실행되는 과정을 반복하고, • 운영체제는 작업스케줄러,프로세서등의 스케줄러를 이용해 프로세스 상태 변화를 관리한다. • 작업 스케줄러 • 스풀러가 디스크에 저장한 작업들 중 실행할 작업을 선정, 준비 리스트에 삽입. • 다중 프로그래밍의 정도를 결정하는 핵심적인 역할 수행. • 선정한 작업에 대한 프로세스의 생성에서 종료까지의 과정 수행을 위해 상태 변화를 일으킴.

  10. 준비 프로세스는 디스패처(Dispatcher)가 프로세서를 할당하면 다시 실행상태로 변경. • 실행 프로세스가 자발적으로 프로세서 반환 전 할당된 시간이 경과하면 준비상태로 변경. • 실행 프로세스가 실행하다 입출력 명령이 발생 시 대기 (보류) 상태로 변경. • 대기 프로세스는 보류 이유가 제거되면 준비 상태로 변경.

  11. 프로세스 : 준비  실행 • dispatch(프로세스명) : 준비 → 실행 • 준비 리스트 맨 앞에 있는 프로세스(작업)가 프로세서에 할당디스패치! • 다중프로그램 운영체제에서는 실행프로세스가 프로세서를 일정시간만 사용하도록 제한 • 프로세스가 프로세서를 독점하는 것을 방지하도록 시간을 할당한다.

  12. 프로세스 : 실행준비, 실행 대기 • timeout(프로세스명) : 실행 → 준비 • block(프로세스명) : 실행 → 대기(보류) wakeup(프로세스명) : 대기(보류) → 준비 • 프로세스가 프로세서를 점유한 상태“프로세스가 실행 상태에 있다” • 운영체제는 프로세스의 독점을 방지하기 위해 인터럽트 클록(Interrupt Clock)을 둠. • 특정 프로세스가 일정 시간이 지나도(타임아웃) 프로세서를 반환하지 않으면 클록(Clock)이 인터럽트를 발생, 운영체제가 프로세서 제어권을 가짐. • 운영체제가 제어권을 가지면 실행 중인 프로세스는 준비 상태로 변화, 준비 리스트의 첫 프로세스가 실행 상태로 변경. • 실행 → 대기(보류) • 실행 프로세스가 입출력 연산 등이 필요하거나 새로운 자원 요청 등의 문제 발생 시 스스로 프로세서를 양도하고 대기 상태로 변경. • 대기(보류) 준비 • 깨움(Wake up) : 대기상태의 원인이 해결되었을 때(예: 입력) 발생

  13. 프로세스 상태 : 정리 Dispatch(프로세스명) : 준비  실행 Timeout(프로세스명) : 실행준비 block(프로세스명) : 실행 대기 wakeup(프로세스명) : 대기 준비 프로세스가 스스로 제어할 수 있는 변화는 실행 대기 상태 뿐!! 나머지는 외부 조건에 의해 발생한다. OS는 프로세스 실행을 제어하기 위해 프로세스에 대한 정보를 가지고 있어야 하며, 제어블록이라는 데이터 구조를 가진다.

  14. 프로세스 제어블록(PCB, Process Control Block) • 프로세스 식별자: 각 프로세스에 대한 고유 식별자 지정. • 프로세스 상태 : 생성, 준비, 실행, 대기, 중단 등의 상태 표시. • 프로그램 카운터 : 프로그램 실행을 위한 다음 명령의 주소 표시. • 레지스터 저장 영역 : 누산기, 인덱스 레지스터, 범용 레지스터, 조건 코드 등에 관한 정보로 컴퓨터 구조에 따라 수나 형태가 달라짐. • 프로세서 스케줄링 정보 : 프로세스의 우선순위, 스케줄링 큐에 대한 포인터, 그 외 다른 스케줄 매개변수를 가짐. • 계정 정보 : 프로세서 사용시간, 실제 사용시간, 사용상한시간, 계정 번호, 작업 또는 프로세스 번호 등. • 입출력 상태 정보 : 특별한 입출력 요구 프로세스에 할당된 입출력장치, 개방된(Opened) 파일의 목록 등. • 메모리 관리 정보 : 메모리 영역을 정의하는 하한 및 상한 레지스터(경계 레지스터) 또는 페이지 테이블 정보. [그림3-7] 프로세스 제어 블록(PCB) • 프로세스는 운영체제 내에서 프로세스 제어 블록이라 표현하며, 작업 제어 블록이라고도 함. • 프로세스를 관리하기 위해 유지되는 데이터 블록 도는 레코드의 데이터 구조. • 프로세스 식별자, 프로세스 상태, 프로그램 카운터 등의 정보로 구성. • 프로세스 생성 시 만들어지고 메인 메모리에 유지, 운영체제에서 한 프로세스의 존재를 정의. • 프로세스 제어 블록의 정보는 운영체제의 모든 모듈이 읽고 수정 가능.

  15. 프로세스교환 실행중인 프로세스가 인터럽트되면OS 는 다른 프로세스를 실행상태로 바꾸고 제어권을 넘겨준다. 제어권을 넘겨줄 때, 프로세서의 레지스터 내용은 저장해두어야 한다. 프로세스 교환은 인터럽트와 트랩, 시스템호출로 나타낸다. * 프로그램 : 디스크에 저당된 파일 내용으로 정적인 상태이며, 프로세스 여러 개로 생성될 수도 있다. * 프로세스: 현재 사용되는 자원에 대한 정보를 가지며, 실행되는 과정에서 여러 개의 프로세스로 파생될 수도 있는 능동적인 개체.!

  16. 2. 프로세스 관리 : 프로세스 구조 [그림3-9] 프로세스 계층 구조 예(유닉스 시스템) • 실행 중 프로세스 생성 시스템을 호출, 새로운 프로세스를 생성 가능. • 이때 프로세스 생성 순서 저장, 부모/자식 관계를 유지하며 계층적으로 생성됨. • 부모 프로세스(Parent Process) : 생성하는 프로세스. • 자식 프로세스(Child Process) or 서브 프로세스(Sub Process) : 생성되는 프로세스. • 유닉스 시스템의 일반적인 프로세스 계층 구조 (그림 3-9) • 처음 부팅 시 식별자(PID, Process ID)가 0인 첫 번째 프로세스 Swapper 생성. • 이어서 Init(PID=1), Pagedeamon(PID=2) 생성. • Swapper(PID=0), Pagedeamon(PID=2)를 운영체제(커널)프로세스라 하며 운영체제 모드에서만 실행. • 모든 사용자 프로세스는 fork() 명령을 통해 계층적으로 Init의 자식 프로세스로 생성됨.

  17. 프로세스 관리: 부모 프로세스/자식 프로세스 • 자식 프로세스 생성 시 필요한 자원을 운영체제로부터 직접 또는 부모 프로세스의 자원 일부 사용 가능. • 부모 프로세스는 자식 프로세스에 자원을 나눠주거나 일부 자원 공유 가능. • 자원의 일부만 사용하도록 제한하면 시스템에 부담을 주는 것을 방지 가능함. • 프로세스 생성 시 획득하는 다양한 물리적, 논리적 자원 외에도 약간의 초기화 데이터가 부모 프로세스에서 자식 프로세스로 전달되는 경우도 있음. • 새로운 프로세스 생성 시 실행과 관련해 다음 두 가지 경우가 가능함. • 부모 프로세스와 자식 프로세스가 동시에 실행됨. • 부모 프로세스는 자식 프로세스들이 모두 종료될 때까지 기다림. • 새로운 프로세스의 주소 공간은 다음 두 가지 경우가 가능함. • 자식 프로세스가 부모 프로세스의 주소 공간을 복사. • 유닉스는 각 프로세스마다 정수로 된 고유한 프로세스 식별자를 가짐. • 새로운 프로세스는 fork() 명령에 의해 생성, 주소 공간은 부모 프로세스의 주소 공간을 복사함. • 부모 프로세스와 자식 프로세스의 정보 교환이 쉬움. • 자식 프로세스가 별도의 프로그램을 적재.

  18. 부모 프로세스와 자식 프로스세스가 돌아가는 환경을 구현해보면서 실습해 봐도 좋겠습니다. 시스템 프로그래밍 : ecf자료를 보면서 코딩해봅니다.

  19. 프로세스 관리 : 종료 • 프로세스가 명령 실행 후 종료되고 운영체제에 프로세스 삭제 요청 • 일괄 처리 환경 : 작업 종료를 의미하는 신호로 인터럽트 발생 또는 시스템 호출로 중지명령 전달, 프로세스 완료. • 대화형 환경 : 사용자가 로그오프(Log-off)하거나 터미널을 닫을 때 또는 오류에 의해 프로세스 종료. • abort 시스템 호출을 이용한 프로세스 종료. • 종료되는 프로세스를 생성한 부모 프로세스만 호출 가능. • 부모 프로세스가 자식 프로세스의 생존권을 가져 다른 프로세스가 임의로 작업을 중단시킬 수 없음. • 자식 프로세스 종료 시 자식 프로세서의 신원(Identity)이 부모 프로세스로 전달. • 부모 프로세스는 아래의 이유로 자식 프로세스 종료 가능 • 자식 프로세스가 할당된 자원을 초과하여 자원을 사용할 때. • 자식 프로세스에 할당된 작업(Task)이 더 이상 없을 때.

  20. 프로세스 관리 : 제거, 중단-재시작 • 제거 • 프로세스를 파괴하는 것. • 제거 시 프로세스에 속한 자원을 시스템에 돌려주고 해당 프로세스는 시스템 리스트나 테이블에서 사라지며, 프로세스 제어 블록 회수. • 프로그램은 디스크에 저장됨. • 중단 및 재시작 • 중단되는 원인 : • 다중 프로그래밍에서 중단은 자원 부족(대기) 상태를 의미하기도 함. • 다중 프로그래밍 환경에서는 자원의 이용률과 시스템 효율 향상을 위해 자원을 동적으로 할당. • 교착상태 발생 시 문제 생김. • 중단 : 할당된 자원을 기다리는 상태. • 대기 : 자원을 할당 받기 위해 기다리는 상태. • 해결방법 : • 1.새로운 프로세스를 생성하여 실행하기 • 2. 이미 실행중인 프로세스를 중단시켰닥 다시 실행하기.

  21. [그림3-10] 중단과 재시작을 추가한 프로세스 상태 변화

  22. 컨텐스트스위칭(Context Switching) • 프로세스 교환 • 실행 중인 프로세스가 인터럽트되면 운영체제가 다른 프로세스를 실행 상태로 변경, 해당 프로세스에 제어를 넘겨주는 과정에서 실행 중인 프로세스로부터 제어를 인수한 운영체제가 또 다른 프로세스에 제어를 넘겨주기 위해 발생. • 인터럽트 처리 루틴을 실행한 후 현재 실행 중인 프로세스가 재실행될 수 있으므로 대부분의 운영체제는 프로세스 교환으로 인터럽트가 발생하지 않음. • 트랩은 시스템이 치명적인 오류인지를 판단, 치명적 오류일 경우 프로세스를 종료하면서 프로세스 교환 발생. • 컨텐스트스위칭(문맥 교환) • 프로세스를 다른 프로세스로 교환하기 위해 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 일련의 과정. • 프로세스가 “준비→실행”, “실행→준비”, “실행→대기”상태로 변할 때 발생. • 오버헤드가 발생하며 오버헤드는 메모리 속도, 레지스터 수, 특수 명령어의 존재에 따라 다르므로 시스템마다 다름.

  23. 인터럽트와 트랩 • 인터럽트(Interrupt) • 현재실행되는프로세스와 별도로 외부에서 발생되는 여러 종류의 이벤트(입출력 동작의 종료 등)에 의해 발생. • 제어가 인터럽트 처리 루틴으로 넘어간 후에도 기본 시스템 관리 작업을 처리, 인터럽트 형태에 따라 관련된 운영체제 루틴으로 분기. • 대표적인 인터럽트 예 • 입출력 인터럽트 : 입출력 동작이 발생한 사실을 확인 후 이벤트를 기다리는 프로세스를 준비 상태로 변경, 실행할 프로세스를 결정. • 클록 인터럽트 : : 현재 실행 주인 프로세스의 할당 시간을 조사하여 실행 중인 프로세스를 준비 상태로 변경, 다른 프로세스를 디스패치하여 실행 상태로 변경. • 트랩(Trap) • 부적절한 파일 접근 또는 현재 실행 중인 프로세스에 의해 발생되는 오류나 예외 상황으로 인해 발생.

  24. 3. 스레드 [그림3-12] 스레드 구조 • 프로세스에서 실행 제어만 분리한 실행 단위. • 경량 프로세스(LWP, Light Weight Process)라고도 부름. • 중량 프로세스(HWP, Heavy Weight Process)는 스레드를 하나 가진 작업. • 프로세서를 사용하는 기본 단위이며, 명령어를 독립적으로 실해할 수 있는 하나의 제어 흐름. • 작업 == 스레드의 그룹 환경 • 같은 그룹의 스레드와 코드, 주소 공간, 운영체제의 자원(파일, 신호) 등을 공유한다.

  25. 스레드의 장점 [그림3-14] 단일 스레드 프로세스와 다중 스레드 프로세스 • 사용자에 대한 응답성증가 • 프로세스의 자원과 메모리 공유 가능 • 경제성 : 한 프로세스의 자원을 공유하므로 프로세스를 생성하는 것으로 오버헤드를 줄일 수 있음 • 다중 프로세서 구조 활용 가능 [그림3-13] 프로세스와 다중 스레드 • 프로세스에 포함된 스레드들은 공통의 목적 달성을 위해 병렬로 수행. • 자원을 공유하여 한 프로세스에서 동시 작업 가능. • 시스템 성능과 효율 향상. • 하나의 프로세스가 서로 다른 프로세서에서 프로그램의 다른 부분을 동시에 실행 가능. • 응용 프로그램 하나가 비슷한 작업들을 여러 개 수행.

  26. 단일 스레드와 다중 스레드 모델 [그림3-15] 프로세스 관리 면에서 살펴본 단일 스레드와 다중 스레드 프로세스 • 단일 스레드 프로세스 모델 • 프로세스를 하나의 스레드, 스레드가 가진 레지스터와 스택으로 표현. • 다중 스레드 프로세스 모델 • 프로세스를 각각의 스레드와 고유의 레지스터, 스택으로 표현, 프로세스 주소 영역을 모든 스레드가 공유. • 프로세스의 모든 스레드는 해당 프로세스의 자원과 상태를 공유, 같은 주소 공간에 존재하며 동일한 데이터에 접근.

  27. 스레드의 상태 [그림3-18] 스레드 상태 변화 • 대기 - 스레드가 이벤트를 기다릴 때, 즉 입출력 작업 등이 완료될 때까지 대기(보류) 상태. - 자신의 정보(프로그램 카운터, 스택 포인터 등)를 실행 스택에 저장. • 준비 - 스레드가 프로세서에 의해 실행될 수 있는 상태. - 스레드를 대기시킨 이벤트 발생 시 해당 스레드는 준비 리스트에 삽입됨. • 실행 - 스레드가 프로세서를 점유하여 실행 중인 활성화 상태. • 종료 - 스레드가 작업을 종료하면 자원을 해제, 레지스터 문맥과 스택 할당 제거.

  28. 스레드의 구현방법 : 사용자 수준 • 사용자 수준 스레드 • 커널스레드를 지원하지 않는 운영체제에서 사용. • 사용자 수준 스레드 여러 개가 커널스레드(프로세스) 하나로 매핑되는 방식. • 다중 스레드 프로세스에 대해 프로세서(실행 문맥) 하나를 할당하므로 다대일스레드매핑이라칭함. • 사용자 수준(공간)에서 스레드 관리가 효율적으로 이루어지므로 스레드와 관련된 모든 과정을 응용 프로그램이 수행. • 응용 프로그램은 사용자 수준 스레드 관리를 위한 루틴으로 구성된 스레드라이브러리 를이용, 다중 스레드로 프로그래밍 가능. • 응용 프로그램은 기본적으로 스레드 하나에서 시작, 해당 스레드에서 실행을 시작함. [그림3-19] 다대일 스레드 매핑과 사용자 수준 스레드

  29. 혼합형 스레드 [그림3-21] 솔라리스 2 스레드 • 사용자 수준 + 커널 수준의 스레드를 혼합한 형태 • 스레드 생성은 사용자 영역에서, 여러 개의 사용자 수준 스레드에 여러 개의 커널스레드가매핑되는다대다스레드 모델. • 사용자 수준 스레드 생성 시 커널 수준 스레드를 생성, 성능 감소. • 시스템 호출 시 다른 스레드가 중단되는 문제를 해결하기 위한 방법. • 다대다 모델 구현 운영체제 : 솔라리스(Solaris)

  30. SUMMARY • 프로세스 개념 • 운영체제의 주 기능은 프로세스의 생성과 종료. • 프로세스는 실행 중인 프로그램으로, 실행되는 프로세스는 독립적 혹은 협조적일 수 있음. • 협조적 프로세스는 논리적 주소 공간을 직접 공유 또는 파일을 통해서만 데이터 공유 가능. • 프로세스 상태 • 프로세스 상태는 프로세스의 현재 활동에 의해 정의되며, 각 프로세스는 생성, 준비, 실행, 대기, 종료 상태로 구분, 실행하면서 상태 변경. • 프로세스 제어 블록(PCB)에 의해 운영체제에서 표현되며, 프로세스의 일시 정지(서스펜드) 상태를 이용하여 다중 프로그래밍 환경에서 프로세스 유휴 시간 발생을 해결 가능함. • 문맥 교환 • 프로세스 전환 시 이전 프로세스 상태 레지스터 내용을 보관, 또 다른 프로세스의 레지스터를 적재하는 문맥교환 과정을 거침.

  31. SUMMARY • 프로세스와 스레드 • 운영체제는 프로세스를 자원의 소유, 스레드를 실행 단위로 개념을 분리. • 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유, 자원의 생성과 관리의 중복성을 최소화하여 수행 능력 향상. • 스레드 상태 • 준비, 실행 대기, 종료 상태로 구분. • 한 프로세스에 있는 스레드는 순차적으로 실행, 자신의 정보를 위한 프로그램 카운터와 스택을 각각 가짐. • 사용자 수준 스레드와커널 수준 스레드 • 사용자 수준 스레드: 스레드 사이에 이전의 커널이 개입하지 않아 빠름. • 커널 수준 스레드: 같은 프로세스의 스레드를 동시에 스케줄링 가능, 한 프로세스의 스레드가 대기 상태가 되면 커널이 같은 프로세스에서 다른 스레드를스케줄할 수 있음. • 혼합형 스레드 • 사용자 수준 스레드 생성 시 커널 수준 스레드를 생성. • 성능 감소, 스레드 수가 제한되는 일대일 방식(커널 수준)과 어떤 스레드가 시스템 호출 시 다른 스레드가 중단되는 다대일 방식(사용자 수준)의 문제를 해결하기 위한 방법.

More Related