티스토리 뷰

Study/OS

[OS] Mint64OS 17절 Task handling

생각많은 소심남 2013. 1. 25. 20:41

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상에서 끝나는 건 볼 수가 없다.



댓글