고도고도
🍎🍏
고도고도
전체 방문자
7,922
오늘
2
어제
26
  • 분류 전체보기 (149) N
    • 🔨 프로젝트 (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • 💻 개발 (43) N
      • TIL (16)
      • Android (6)
      • Kotlin (4)
      • Flutter (9) N
      • Node.js (5)
      • Error (3) N
    • ✏️ 알고리즘 (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • ✍️ 코테 준비 (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • 📚 CS (6)
      • Operating System (6)
    • ⛹️ 라이프 (50)
      • 2020 겨울방학 모칵코(팀) (13)
      • 2020 겨울방학 모각코(개인) (13)
      • 2021 여름방학 모칵코(팀) (8)
      • 2021 여름방학 모각코(개인) (7)
      • 코딩 테스트 (1)
      • 회고 (7)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인

인기 글

  • [TIL] 22.03.13
    2022.03.13
    [TIL] 22.03.13
  • [문자열 / Kotlin] 2020 KAKAO⋯
    2022.03.11
    [문자열 / Kotlin] 2020 KAKAO⋯
  • [TIL] 22.03.20
    2022.03.20
    [TIL] 22.03.20
  • [퍼듀 일기] 어느덧 한 달째
    2022.03.01
    [퍼듀 일기] 어느덧 한 달째
  • [퍼듀 일기] 적응 완료
    2022.03.05
    [퍼듀 일기] 적응 완료

최근 글

  • [Flutter] ModalBottomSheet가⋯
    2022.08.09
    [Flutter] ModalBottomSheet가⋯
  • [Error / Gradle] The current⋯
    2022.08.09
    [Error / Gradle] The current⋯
  • [Flutter / Dart] What is Equa⋯
    2022.08.06
    [Flutter / Dart] What is Equa⋯
  • [Flutter] BLoC 패턴으로 자동⋯
    2022.07.26
    [Flutter] BLoC 패턴으로 자동⋯
  • [Flutter / Dart] What is Sing⋯
    2022.07.21
    [Flutter / Dart] What is Sing⋯

최근 댓글

  • 잘보고 갑니다~
    개갓세
  • 좋은 글이네요
    날인로세
  • 잘 보고 갑니다^^
    프로퍼티
hELLO · Designed By 정상우.
고도고도

🍎🍏

📚 CS/Operating System

[OS] 3. Threads

2021. 4. 19. 17:55

본 게시글은 PC버전에 최적화 되어 있습니다.

 

Operating Systems, Internals and Design Principles (9th Ed.), William Stallings, Pearson, 2017

충남대학교 컴퓨터공학과 최훈 교수님의 '운영체제 및 실습'을 참고하였습니다.

1. Processses and Threads

쓰레드는 프로세스 내부의 실행 단위. 쓰레드를 가벼운 프로세서라고도 부르기도 함.

하나의 프로세스에 여러 개의 쓰레드가 존재할 수 있다. -> 멀티쓰레드

하나의 프로세스는 최소한 하나의 쓰레드를 가지고 있어야 함.

 

Thread

프로세스는 Code, Data, Stack, Register Context를 갖고 있지만

쓰레드는 Register Context와 Stack으로 구성.

그림에서 보이는 것처럼 쓰레드는 프로세스의 자원을 공유.

 

Single Thread에는 MS-DOS와 옛날 버젼의 UNIX

Multi Thread는 그냥 최근 OS 대부분 ㅇㅇ...

 

Multiple Processes VS Multiple Threads

여러 프로세스로 나누는 것보다 하나의 프로세스에서 멀티쓰레드로 구성하는 것이 효율적이다.

1. 프로세스 생성보다 쓰레드 생성이 더 빠름.

2. 종료 역시 더 빠름.

3. 문맥 전환 과정 역시 더 빠름.

4. IPC 할 필요가 없어서 더 빠름. Why? 하나의 프로세스에서 일어나는 일이므로

IPC = Inter Process Communication -> Message Sending, Shared Memory

5. 하나의 프로세스 내부에서 일어나므로 커널을 호출할 필요가 없음.

 

그냥 장점 투성

 

Multi-Threading

멀티 프로그래밍과 유사하다.

기존의 쓰레드가 Block이 되면 다른 쓰레드에서 이를 이어받아 수행 -> time slice를 최대한 효율적으로 이용.

그렇다면 데이터는? 위에서 말했듯이 Date, Code 영역은 공유. 그래서 Context Switch없이 바로 바로 수행이 가능.

1) User-Level Thread VS Kernel-Level Thread

1. 유저레벨 쓰레드

유저가 직접 생성하고 관리하는 쓰레드. 커널입장에서는 Single 쓰레드 형태.

장점 : 인터럽트가 발생할 때 커널 레벨 스레드보다 오버헤드가 적다.

단점 : 커널 입장에서 Single로 인식하므로 여러 개의 쓰레드 중에 하나만 Block 되어도 Block으로 인식.

 

2. 커널레벨 쓰레드

장점 : 1:1이므로 멀티 프로세서 환경에서 매우 빠르게 동작한다. 커널이 직접 관리하므로 안정성이 좋다.

단점 : Mode Change 과정이 연속적으로 일어나므로 성능 저하가 발생한다.

저작자표시비영리변경금지

'📚 CS > Operating System' 카테고리의 다른 글

[OS] 6. I/O Management andDisk Scheduling  (0) 2021.04.20
[OS] 5. Concurrency : Deadlock and Starvation  (0) 2021.04.20
[OS] 4. Concurrency : Mutual Exlusion and Synchronization  (0) 2021.04.19
[OS] 3. Threads  (0) 2021.04.19
[OS] 2. Process Description and Control  (0) 2021.04.19
[OS] 1. Operating System Overview  (0) 2021.04.19
    '📚 CS/Operating System' 카테고리의 다른 글
    • [OS] 5. Concurrency : Deadlock and Starvation
    • [OS] 4. Concurrency : Mutual Exlusion and Synchronization
    • [OS] 2. Process Description and Control
    • [OS] 1. Operating System Overview
    고도고도
    고도고도
    좋아하는 것을 하자\n 스위프트 찍먹중\n 광고 없는 블로그
    댓글쓰기
    다음 글
    [OS] 4. Concurrency : Mutual Exlusion and Synchronization
    이전 글
    [OS] 2. Process Description and Control
    • 이전
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 다음