티스토리 뷰
OS에서 가장 중요한 요소 중 하나가 바로 task를 처리하는 방법이다. task는 그냥 하나의 작업 단위라고 보면 될거 같고 각각의 state와 관장 영역이 있다. 가까이에선 Task Manager를 살펴보면 된다.
보면 각 task마다 각각 cpu와 ram resource를 확인할 수 있다. 그런데 여기서 터미널 하나를 죽여도 다른 상태는 별 영향이 없다.
이렇듯 테스크를 다루는 프로세서의 상태는 제각각 다르다. 이전에 잠깐 나왔던 context의 개념이 바로 그렇다. 이 context만 유지된다면 여러 task가 수행되어도 다 개별적으로 이뤄진다는 것이다. 다르게 생각해보면 이 테스크를 공유할 수 있게 하면 하나의 task에서 또다른 context를 만들 필요가 없다는 점이 있다.
여기서 멀티테스킹이라는 말이 나오는데 말 그대로 task를 여러개 동시에 수행할 수 있게끔 한다는 방법이다. 원래는 프로세서의 코어 하나당 task를 하나 처리할 수 있지만, task의 종류에 따라서 코어의 효율을 쓰는 정도가 다른게 나타나기 때문에 나눠서 수행하게끔 하는 기법인 것이다. 겉으로 보면 그냥 순차적 수행방식과 별반 차이가 없어 보이지만, 실질적으로 차이가 존재하고 보통 일반적으로는 Time-sharing MultiTasking 방법을 사용하게 된다.
아래 이미지는 임의의 task를 만들고 전환되는 과정으로 표현한 것이다.
아무 키나 눌렀을 때 임의의 testTask로 넘어가게 된다.
보면 알다시피 tag가 같은 번호로 달린다.
그런데 생가해볼 점은 지금 task의 main은 kConsoleShell이기 때문에 반드시 종료는 kConsoleShell 상에서 이뤄진다는 것이다. 그래서 잘 보면 testTask상에서 끝나는 건 볼 수가 없다.
'Study > OS' 카테고리의 다른 글
[OS] Mint64OS 20절 Process synchronization (0) | 2013.01.29 |
---|---|
[OS] Mint64OS 19절 Multilevel Queue Scheduler (0) | 2013.01.29 |
[OS] Mint64OS 18절 Task Scheduling (0) | 2013.01.28 |
[OS] Mint64OS 16절 PIT / RTC 설정 (0) | 2013.01.25 |
[Site] osdev.org (0) | 2013.01.25 |
[OS] Mint64OS 15절 Console Shell 생성 (0) | 2013.01.25 |
[OS] Mint64OS 14절 Queue를 이용한 키보드 입력 (0) | 2013.01.24 |
- Total
- Today
- Yesterday
- dynamic programming
- DepthStream
- Gan
- 한빛미디어
- Off-policy
- SketchFlow
- PowerPoint
- Pipeline
- Policy Gradient
- Expression Blend 4
- bias
- Distribution
- 파이썬
- RL
- Offline RL
- Windows Phone 7
- windows 8
- Kinect for windows
- ai
- Kinect
- 딥러닝
- 강화학습
- Variance
- ColorStream
- Kinect SDK
- TensorFlow Lite
- reward
- arduino
- End-To-End
- processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |