[TIL][Thur] PintOS Threads Keywords

2023. 11. 23. 23:09· 공부기록/OS
목차
  1. [WEEK07] 정글 끝까지(PintOS) - Threads
  2. 개념 초벌구이

[WEEK07] 정글 끝까지(PintOS) - Threads

오늘의 학습: 공부 키워드 학습 및 간단 정리(초벌구이)

오늘의 할 일: EC2 연결 및 open ssh 사용해보기(vscode)

 

개념 초벌구이

다 처음 보는 개념들이라 검색하고 서적을 읽는 데에만 시간이 꽤 갔다. 

Process, Thread

실행단위, thread는 그 안에서 실행되는 자원을 공유하는 별개의 흐름. 내게 가장 잘 와닿았던 비유는 프로세스는 집, 스레드는 방이라는 비유였다. 

 

CPU Scheduling 알고리즘 

운영체제가 합리적으로 CPU 자원을 process에게  thread에게 주기 위한 전략.

정확히는 CPU에서 어떤 기준/알고리즘으로 최대한 효율적으로 작업을 처리할 것인가.

 

  • thread에게 :
    • 처음엔 process라고 이해했는데, 이건 현재 pintOS에서만 thread에게라고 이해하면 된다고 한다. 왜냐하면 현재 pintos는 다중 thread가 아니라, 1 prcoess에 1 thread이기 때문이다.

 

Race condition

여러 thread가 동시에 공유자원을 handling하려다보니까 경쟁상태Race condition(이건 조건보다는 상태로 이해하는게 더 빠르다!)에 걸림. 마트에서 남은 물건이 하나 있는데 두 소비자가 한번에 잡으려 하는 상황으로 비유해서 생각했다. 

두 개 이상의 프로세스가 공통된 자원을 두고, 어느 한 프로세스가 끝난 뒤에 다른 프로세스가 다루는 것이 아닌 두 프로세스가 동시에 병행적으로 다루려고 할 때 발생하며, 프로세스 간 데이터의 접근 순서에 따라 실행 결과가 예측한 것과 달라질 수 있다. 

 

i  = 100 일 때, 함수 A는 i +5 를, 함수 B는 i -2 를 실행한다. 이 때, A와 B가 동시에 병행적으로 값을 처리할 때 이런 일이 발생할 수 있다. 

106: A가 실행되고 B가 실행될 때 / B가 실행되고 A가 실행될 때(각각 끝나고 그 다음에 가져간다고 칠 때)

101: A가 103를 가지고 실행하여 108을 넣었으나, 그 연산 도중 B가 103을 가지고 가 연산 이후 101을 리턴하여 A를 덮어씌움

108: B가 103을 가지고 실행하여 101을 넣었으나, 그 연산 도중 A가 103을 가지고 가 연산 이후 108을 리턴하여 값을 덮어 씌움 

i A ( i +5 ) B ( i -2 ) 예측한 i  최종 i
100 실행 X 105 105
105 (동시 실행) X 실행 103 103
103 실행 실행 106
(103->108->106)
?
106 or 101 or 108 

 

Semaphore와 Mutex

semaphore는 청기백기. binary와 바이너리가 아닌 값이 있다.  

Mutex는 lock을 걸어서 접근을 방지함. 오로지 0과 1만 사용, binary semaphore라고 하기도 함.

 

Deadlock

교착상태의 일종. 

thread A와 thread B가 각자 a와 b의 프로그램의 Lock 을 가지고 있을 때를 thread A(a), thread B(b)라고 가정하자. 이때 Thread B는 프로그램 a가 끝나기를 기다리고 Thread A는 프로그램 b가 끝나기를 기다린다. 즉, thread A와 B가 서로 일이 끝나 lock a와 lock b를 반환하기를 기다리는데 둘 다 계속 서로가 끝나기를 기다리기 때문에 영원히 멈추고 있는 게 된다. 이 상태를 데드락이라 한다. 

(표현을 좀 더 수정해야 함!)

 

Context Switching

user 단에서 application이 실행 권한(?)을 가지고 있다가 kernel 로 권한을 넘길 때, 혹은 이 반대의 경우에. 

Thread에서 다른 thread로 바뀔 때 

어떤 cpu가 점유하고 있는 process a가 다른 process b로 바뀔 때

문맥 전환이라고 칭한다. 

(표현을 좀 더 수정해야 함)

 

*kernel, mode bit is 1

 

Multi-Level-Feedback-Queue

 

FCFS 기법 등 스케쥴링 순서가 있음.

starvation(기아)상태가 발생.

이것을 보완하기 위해 multi level queue가 나옴

Multi-Level_queue를 보완하기 위해 나온 스케쥴링 기법

 

'공부기록 > OS' 카테고리의 다른 글

[TIL / WIL] [Project 1] MLFQS + Advanced Scheduler in PintOS  (0) 2023.12.04
[TIL][Project 1] Priority Donation  (0) 2023.12.04
[TIL][Project 1] Priority Scheduling , Synchronization + pintOS  (0) 2023.11.27
[TIL][Project 1] process & thread in PintOS + Alarm Clock  (0) 2023.11.25
[TIL][Project 1] 이해하기: interrupt frame, idle, 그리고 busy waiting  (0) 2023.11.24
  1. [WEEK07] 정글 끝까지(PintOS) - Threads
  2. 개념 초벌구이
'공부기록/OS' 카테고리의 다른 글
  • [TIL][Project 1] Priority Donation
  • [TIL][Project 1] Priority Scheduling , Synchronization + pintOS
  • [TIL][Project 1] process & thread in PintOS + Alarm Clock
  • [TIL][Project 1] 이해하기: interrupt frame, idle, 그리고 busy waiting
J융
J융
Recording of development
J융
Develop day by day
J융
전체
오늘
어제
  • 분류 전체보기 (67)
    • 공부기록 (63)
      • CS (8)
      • OS (15)
      • Algorithm (19)
      • Web (3)
      • HTML&CSS (6)
      • Electron (1)
      • JavaScript (5)
      • Network (0)
      • C (2)
      • Python (3)
      • Git (1)
    • 개발일기 (3)
      • Alice기록 (0)
      • Krafton Jungle 기록 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 정글공부키워드
  • cs기초
  • 앨리스트랙
  • 엘리스AI트랙
  • Web
  • JS기초
  • 개발일기
  • 비전공자개발자
  • 기술면접대비
  • vm
  • fe
  • #cs기초
  • CG
  • 수강후기
  • cs지식
  • 부트캠프
  • os
  • 알고리즘
  • 크래프톤정글
  • pintos

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
J융
[TIL][Thur] PintOS Threads Keywords
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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