Skip to content

운영체제 12회#66

Merged
102092 merged 2 commits intomainfrom
sigrid
Nov 3, 2021
Merged

운영체제 12회#66
102092 merged 2 commits intomainfrom
sigrid

Conversation

@sigridjineth
Copy link
Copy Markdown
Contributor

학습한 내용

  • 데드락
  • Context-Switching

Comment on lines +85 to +89
## 쓰레드 중심의 Context-Switching은 어떨까?
### 의의
* 스레드는 실행에 필요한 최소한의 정보만을 가지고 자신이 속해 있는 프로세스의 기억장치나 파일과 같은 실행환경을 공유하여 프로세스의 생성과 문맥교환 등의 오버헤드를 줄일 수 있다.
* 병행성 증진: 단일 프로세스에서 다수의 스레드 생성 및 수행
* 오버헤드 감소: 실행 환경의 공유를 통해 오버헤드 줄임
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@@ -0,0 +1,107 @@
# Context-Switch란 무엇인가?
## 정의
* Running 상태에 있는 프로세스 또는 쓰레드가 사용하는 Context(각 Task가 사용하는 CPU 레지스터의 값)을 메모리의 특정 영역에 저장한 후, 새롭게 수행할 Task의 Context를 TCB 또는 Stack에서 CPU의 레지스터 영역으로 복사하여 새로운 Task가 수행되도록 하는 일련의 작업을 의미한다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q1) TCB는 무엇이고 어떤 역할을 하고 있나요?

Comment on lines +5 to +11
## Context란 무엇인가?
* Context: 각 Task가 사용하는 CPU 레지스터의 값이다.
* 만약 프로세스라면?
* 텍스트(Text) 영역 : 프로그램의 코드 부분
* 데이터(Data) 영역 : 프로그램의 전역 변수 부분
* 스택(Stack) 영역 : 프로그램의 지역 변수 부분
* 힙(Heap) 영역 : 프로세스의 동적 메모리 할당 영역
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q2) Context라 하면 결국에는, 어떤 Task를 수행하기 위해 필요한 레지스터 값들을 의미하는걸까요?

Comment on lines +9 to +12
## 예시 1
![](https://i.imgur.com/MEXzKoF.png)
* 쓰레드 T0이 리소스 1에 대한 Lock이 걸려 있는 상태이지만, 해당 쓰레드가 모든 일을 끝마치려면 리소스 2에 대한 자원이 필요한 상태이다.
* 쓰레드 T1이 리소스 2에 대한 Lock이 걸려 있는 상태이지만, 해당 쓰레드가 모든 일을 끝마치려면 리소스 1에 대한 자원이 필요한 상태이다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 한 눈에 알아볼 수 있어서 좋네요!

Comment on lines +55 to +62
## 데드락, 어떻게 해결할 것인가
## 데드락을 예방 Prevention 하기
* Not allowing the system to get into a deadlocked state. 위의 4가지 조건을 모두 충족시키지 않으면서 가능하다.
* 자원의 상호 배제 조건 방지 : 한 번에 여러 프로세스가 공유 자원을 사용할 수 있게 한다. 다만, 추후 동기화 문제가 생길 수 있다.
* 점유 대기 조건 방지 : 프로세스 실행에 필요한 모든 자원을 한꺼번에 요구하고 허용할 때까지 작업을 보류해서, 나중에 또다른 자원을 점유하기 위한 대기 조건을 성립하지 않도록 한다.
* 비선점 조건 방지 : 이미 다른 프로세스에게 할당된 자원이 선점권이 없다고 가정할 때, 높은 우선순위의 프로세스가 해당 자원을 선점할 수 있도록 합니다.
* 순환 대기 조건 방지 : 자원을 순환 형태로 대기하지 않도록 일정한 한 쪽 방향으로만 자원을 요구할 수 있도록 합니다.
* 데드락 예방(Prevention)은 시스템의 처리량이나 효율성을 떨어트리는 단점이 있다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q3) application 레벨 에서 데드락이 발생할 때는, 보통 어떻게 해결하는게 좋을까요? 시그리드의 생각을 듣고 싶습니다.

참고 : https://happyer16.tistory.com/entry/JPA-%EC%97%90%EB%9F%AC-Deadlock-found-when-trying-to-get-lock-try-restarting-transaction

@102092 102092 merged commit 1bc354a into main Nov 3, 2021
@sigridjineth sigridjineth deleted the sigrid branch November 6, 2021 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants