일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- 삼성소프트웨어멤버십
- NarwalFreo
- 하이퍼바이저
- 갤럭시탭S8울트라
- 고려대학교
- 패턴 인식
- BAM
- 신경회로망
- 삼성
- SSM
- hopfield network
- 인공지능
- Friendship
- 삼성전자 소프트웨어멤버십 SSM
- 멤버십
- 파이썬
- 패턴인식
- 증강현실
- 가상화
- 나르왈프레오
- 구글 앱 엔진
- 신경망
- Google App Engine
- Bidirectional Associative Memory
- Neural Network
- 빅데이터
- 물걸레자동세척로봇청소기
- 동아리
- 물걸레로봇청소기추천
- Today
- Total
정보공간_1
[3기 강남 정준호] Work-Queue Working Flow 본문
주제: Work Queue 동작 과정
안녕하세요 강남 멤버십 19-2 정 준호 입니다. 어느 덧 이제 봄이네요^^ 환절기 감기 조심하세요 :)
이전 포스팅에선 Scheduler의 동작 괴정에 대하여 기술하였습니다.
다음 과정으로 스케쥴러와 Work Queue의 동작 과정을 설명 하고자 합니다
* SMP 와 MP Boot
* Scheduler
* Work Queue 동작 과정
* 키보드와 마우스 디바이스 드라이버
* Console & Shell
* Testing
전 포스팅에서는 스케쥴러가 Task를 어떻게 MP 환경에서 수행되는지에 대하여 기술 하였습니다.
이제 스케쥴러가 어떤 Task를 어떻게 가져 갈 것인지를 결정 하여야 합니다.
본 설명은 4-Core와 1개의 Single Queue로 동작하고 있으며 Single Queue에 동작에 대하여 설명 드리겠습니다.
* CPU <-> Sche. <-> Work_Queue 간의 시퀀스 다이어그램
전 포스팅의 내용을 보면 다음과 같은 과정을 거쳐서 CPU에 Task가 할당 되게 됩니다. (http://blog.secmem.org/231)
스케쥴러는 Queue에게서 Push와 Pop 과정을 거쳐 Context Switch를 하게 됩니다. 이 과정을 좀더 자세히 설명 드리도록 하겠습니다.
(Context Switch[문맥 교환] : http://en.wikipedia.org/wiki/Context_switch )
* Context Switch 과정을 나타낸 Flow Chart
위의 차트를 사건의 흐름 기반으로 설명하고자 합니다.
1. OSTCBCur: 인터럽트 발생 -> 스케쥴러 호출 -> Context_Swich 시작
2. EndPoint: Signle Work_queue중에서 가작 마지막 작업이 드러있는 다음 노드의 EndPoint
3. TBL[endpoint]: 현제 CPU에서 사용하는 TBL을 EndPoint_Node에 저장
4 OSTCBHighRdy: Next_Point는 Work_queue의 가장 앞에 있는 Node를 나타내며
이 Node를 갖고와서 가장 높은 우선순위를 부여한다.
5. ProcTestkTCB[cpu_2]: 가장 높은 우선순위인 Node의 TCB를 현재 CPU가 작업을 수행한다.
6. NextPoint: 이전 NextPoint를 갖고 갔으므로 다음으로 Shift 시켜, 다음 CPU가 다음 작업을
수행 할 수 있도록 한다.
7. 0 작업이 수행 되도록 하였으므로 이전에 사용한 NextPoint는 Null을 취한다.
위의 과정은 1개의 CPU가 동작하는 시퀀스이다. 이 과정이 각 CPU에서 발생하여 4개의 CPU가 1개의 Work_Queue를 공유 하도록 구성하였다.
* 2개의 CPU가 1개의 Work-Queue를 사용할 시 Flow Chart
EndPoint와 NextPoint의 흐름이해를 돕기위해 다음과 같은 Chart를 그려본다.
1. CPU_1이 NextPoint의 a라는 Task작업을 수행한다.
1-1. NextPoint는 한칸 Shift를 한다
1-2. 사용한 NextPoint는 Null값을 취한다.
2. CPU_2는 NExtPoint의 b라는 Task 작업을 수행한다.
2-1. NextPoint는 한칸 Shift를 한다
2-2. 사용한 NextPoint는 Null값을 취한다.
3. CPU_1은 수행중인 Task a를 EndPoint에 반납을 함
( CPU_1은 Context_Switch를 발생 )
3-1.CPU_1이 NextPoint의 c라는 Task작업을 수행한다.
3-1. NextPoint는 한칸 Shift를 한다
3-2. 사용한 NextPoint는 Null값을 취한다.
위와 같은 과정을 통하여 Multi-Core 환경에서 Context-Switch가 발생하게 됩니다.
다음 블로그에선 키보드와 마우스 디바이스 드라이버에 관하여 블로깅 하도록 하겠습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[3기 강남 백정의] 플래시의 비트맵을 활용한 영상을 재생시키고 레이어 추가 (0) | 2013.04.06 |
---|---|
[3기 강남 정준호] KeyBoard & Monitor Device Driver (0) | 2013.04.05 |
[3기 대전 김재원] Linux Kernel - Data Structure (1) (0) | 2013.04.03 |
[3기 전주 전환규] Place & Route Part.1 (0) | 2013.04.02 |
[3기 신촌 최기환] 안드로이드 런처의 구조 (1) | 2013.03.14 |