mini_me
우당탕탕 코드 프로젝트
mini_me
전체 방문자
오늘
어제
  • 분류 전체보기 (30)
    • 알고리즘 (4)
    • 자료구조 (5)
    • 운영체제 ( OS ) (7)
    • JSP (6)
    • 스프링 (5)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 디렉티브 태그
  • ci/cd
  • grafana
  • mst
  • 자바스크립트
  • load teet
  • smoke test
  • SQLD
  • Oracle Cloud
  • graph algorithm
  • leetcode
  • 그리디 알고리즘
  • jenkins
  • 그래프 알고리즘
  • Clone Graph
  • dockerhub
  • docker
  • 데이터 모델링
  • 알고리즘
  • spanning tree
  • trie
  • 연결리스트 # 열혈 자료구조 #자료구조
  • influxdb
  • K6
  • 부하테스트
  • 자동화
  • 백엔드
  • #연결리스트 #자료구조 #연결 리스트 #전공 공부
  • Greedy Algorithm
  • Database 생성 및 권한

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mini_me

우당탕탕 코드 프로젝트

운영체제 ( OS )

[운영체제] -Nachos 프로젝트 - KThread.join()구현

2021. 5. 22. 20:29

Thread Join?

쓰레드 조인은 쓰레드 간의 동기화를 위해 사용된다.

예를 들어 A쓰레드와 B쓰레드가 존재한다고 해보자. 

쓰레드 B가 쓰레드 A가 종료된 다음에 실행될 필요가 잇을 때, 

쓰레드 B는 쓰레드 A에 조인하게 되어 쓰레드 A가 완전히 다 끝난 다음에 수행된다.

쓰레드 C가 있을 때, 쓰레드 C는 쓰레드 A와 B가 모두 다 끝난 상태에서(컴파일이 모두 끝난 상태)에서 실행해야 올바르게 링킹이 되기 때문에 A,B쓰레드가 모두 실행된 뒤에 실행되어야 한다.

쓰레드 조인은 이를 보장할 수 있는 툴이다.

 

Thread.join을 구현하기 위해서는 어떤 것이 필요할까

Thraedjoin은 기다려야하는 쓰레드가 Threadjoin을 호출한다. 왜 기다려야하는 쓰레드가 Threadjoin을 호출할까?

왜냐면 쓰레드 조인은 쓰레드 간의 동기화를 위해 사용되는 함수니깐 동기화가 필요한 쓰레드가 Threadjoin을 호출해서

동기화를 해야겠지 

그럼 Thradjoin함수를 호출하는데 이때 호출하는 함수 안의 파라미터는 누굴까?

-> C가 작업을 끝나기 기다리고 있는 쓰레드 A와 쓰레드B이다.

A.join

B.join

 

상대 쓰레드 에게 자기 이름(C)를 적어 놓는다.

왜? 너네 쓰레드 실행 다 끝났으면 알려달라고 할려고

 

그리고 나서 다른 쓰레드를 Ready 상태로 바꿔서 자기는 sleep상태로 빠진다.

그니깐 다른 쓰레드는 실행가능한 상태로 두고 자기는 sleep상태로 빠져야되는거다.

왜? 만약에 다른 쓰레드를 실행가능한 상태로 안두면 시스템이 이제는 더이상 실행가능한 스레드가 없구나라고 판별할 수 도 있기 때문이다.

 

그럼 뭐를 구현해야 할 까? : 나를 기다리는 다른 쓰레드가 나한테 와서 적어놓을 자료구조 필요

그 자료구조는 초기화할 필요가 있다면 초기화해줘야 한다.

내가 작업을 다 완료했다면 위에 언급된 자료구조 뒤져보고 나를 기다리는 놈이 또 있으면 그 놈을 Ready상태로 만들어줘야한다.

왜냐면 나를 기다리는 그놈이 block된 상태에서 벗어나 자기 일을 수행할 수 있기 때문이다.

 

그럼 여기서 나를 기다리는 다른 쓰레드가 나한테 와서 적어놓을 자료구조는 뭘로 설정할까?

쓰래드 리스트를 저장해야하는 자료구조를 설정해야 한다..

많은 사람들이 vetor로 했는데 나는 다르게 ArrayList로 구현해볼려고 한다.

정한 자료구조는 KThread()에서 초기화를 해준다.

 

 

 

반응형

'운영체제 ( OS )' 카테고리의 다른 글

[운영체제 ] 6주차 정리본  (0) 2021.04.26
[운영체제 ] 5주차 정리본  (0) 2021.04.26
[운영체제 ] 3장 정리본  (0) 2021.04.26
[운영체제] Thread 정리본  (0) 2021.04.26
[운영체제] [ 1주차 내용 정리 전 필기본]  (0) 2021.03.25
    '운영체제 ( OS )' 카테고리의 다른 글
    • [운영체제 ] 6주차 정리본
    • [운영체제 ] 5주차 정리본
    • [운영체제 ] 3장 정리본
    • [운영체제] Thread 정리본
    mini_me
    mini_me

    티스토리툴바