CS/운영체제

[운영체제] 14. 스레드 스케줄링

2024. 10. 21. 21:49
반응형

 

그림과 같이 스레드가 구현되어 있다고 해보자.

(이 구현은 user level 스레드를 보여주고 있다. 런타임 시스템과 그 내부에 스레드 테이블이 있기 때문이다.)

 

이때 각각의 프로세스에게는 50ms 의 퀀텀이 주어졌고, 각 스레드는 CPU burst 마다 5ms의 시간이 소모된다고 해보자.

 

그러면 커널이 먼저 실행할 프로세스를 고르고, 그 다음에 런타임 시스템이 실행할 스레드를 골라서 굴리므로 프로세스 A의 스레드들이 A1 A2 A3 A1 A2 A3 이런식으로 돌아간다.

유저 레벨 스레드는 스레드 스위칭이 빠르므로, thread_yield 와 같은 프로시저를 사용하여 빠르게 스레드를 교체하며 돌리는 것이 가능하고, 성능도 좋다. (다만 라운드 로빈과 같이 정해진 퀀텀을 정해두고 돌리는 것은 힘들다.)

 

이때 스레드를 돌리는 것은 같은 프로세스 안에 있는 스레드에 대해서만 가능하다.

그 아래에서 보는 것처럼 A1 B1 A2 B2 와 같은 식으로 프로세스를 넘나드는 실행 순서 제어는 유저 레벨 스레드 구현에서는 할 수 없다.

 

 

 

이번엔 커널 레벨로 구현한 스레드를 보자.

커널 레벨 스레드에서는 커널이 직접 실행할 스레드를 선택하므로 하나의 프로세스 안에 있는 스레드만 골라 실행하는 것도 가능하고, 프로세스를 넘나들면서 스레드를 선택하여 실행하는 것도 가능하다.

 

이때는 지난 글에서 정리했듯 하나의 스레드가 I/O 등을 이유로 blocked 상태에 빠지더라도 프로세스 전체가 Blocked 되지는 않는다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 16. 페이지 교체 알고리즘  (0) 2024.12.05
[운영체제] 15. 메모리 관리  (4) 2024.12.03
[운영체제] 13. 스레드의 구현 방법  (0) 2024.10.21
[운영체제] 12. 스레드  (0) 2024.10.21
[운영체제] 11. 스케줄링 (5) - Policy vs. Mechanism  (0) 2024.10.21
'CS/운영체제' 카테고리의 다른 글
  • [운영체제] 16. 페이지 교체 알고리즘
  • [운영체제] 15. 메모리 관리
  • [운영체제] 13. 스레드의 구현 방법
  • [운영체제] 12. 스레드
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
에버듀
Blog. 에버듀
에버듀
전체
오늘
어제
  • 분류 전체보기 (586) N
    • 개인 프로젝트 (43)
      • [2020] 카카오톡 봇 (9)
      • [2021] 코드악보 공유APP (22)
      • [2022] 유튜브 뮤직 클론코딩 (9)
      • 간단한 프로젝트 (3)
    • 팀 프로젝트 (22)
      • [2020] 인공지능 숫자야구 (4)
      • [2022] OSAM 온라인 해커톤 (10)
      • [2024] GDSC 프로젝트 트랙 (6)
      • [2025] 큰소리 웹 페이지 (2)
    • 알고리즘 (PS) (107)
      • BOJ (101)
      • Programmers (5)
      • 알고리즘 이모저모 (1)
    • CS (312)
      • 자료구조 (19)
      • 어셈블리 (41)
      • 멀티미디어응용수학 (7)
      • 컴퓨터 구조 (29)
      • 알고리즘 분석 (4)
      • 컴퓨터 네트워크 (38)
      • 프로그래밍언어론 (15)
      • HCI 윈도우즈프로그래밍 (26)
      • 기초데이터베이스 (29)
      • 운영체제 (23)
      • 오토마타 (24)
      • 문제해결기법 (11)
      • 블록체인 (22)
      • 소프트웨어공학 (12)
      • 기계학습심화 (12)
    • 자기계발 (35)
      • 동아리 (7)
      • 자격증 (2)
      • 코딩테스트, 대회 (8)
      • 생각 정리 (17)
      • 머니 스터디 (1)
    • WEB(BE) (5)
      • express.js (1)
      • flask (0)
      • Spring & Spring Boot (4)
    • WEB(FE) (2)
      • html, css, js (1)
      • React.js (1)
    • Tool & Language (6)
      • Edit Plus (1)
      • Git (1)
      • Python3 (2)
      • Java (2)
    • Infra (12)
      • AWS (1)
      • Oracle Cloud (8)
      • Firebase (2)
      • Network (1)
    • Android (18)
      • Java (6)
      • Flutter (12)
    • Window (2)
      • Visual Studio 없이 WPF (1)
      • MFC (1)
    • 독서 (13) N
      • Inside Javascript (7)
      • Database Internals (5) N
      • 한 글 후기 (1)
    • 인턴 (8)
      • 델파이 (7)
      • Oracle (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.1.4
에버듀
[운영체제] 14. 스레드 스케줄링
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.