탭앤테크

Multitasking

작성자 정보

  • 소다팝 작성
  • 작성일

컨텐츠 정보

본문

강현규 [ted78] 님의 글입니다.

기본적으로 아랫글에 대한 정정이면서 멀티태스킹에 대한 전반적인 이해가 약간은 담겨있는 글입니다. 아랫글에 대해서 코멘트를 좀 길게 썼더니 짤리는군요. 자꾸 게시판에 태클만 거는 것 같은데 잘못된 부분은 올바로 아시는 것이 중요하다고 생각되어 감히(?) 이런 글을 올려봅니다. 사실 이렇게 글을 쓸 실력도 못되는 사람입니다만 그냥 어디서 주워듣고 본 내용을 옮기는 것에 지나지 않습니다. 상당히 기술적이고 지루한 글임을 먼저 밝힙니다. :)

 

1. 프로그램? 백그라운드? 어떤 것을 잡아야 하는가?
일단 프로그램에서 백그라운드로 전환시 내부적 전환내용이 잘못되었습니다. 위와 같은 전환시 발생되는 현상은 하드 스와핑에 대한 부분이 아니라 단지 프로세스의 우선권이 변경될 뿐입니다. 일단 프로그램으로 설정이 되어있는 경우에는 포그라운드 프로세스(즉 윈도우 타이틀창이 활성화된 것)에 대해서 기본치보다 두단계인지 높은 우선순위를 부여합니다. 즉 기본적으로 프로그램 설정은 일반 사용자를 위한 설정입니다. 즉 대부분의 사용자는 내가 지금 사용하고 있는 프로세스가 더 잘 수행되기를 원하기 때문에 포그라운드 프로세스에 우선권을 부여합니다. 반면 백그라운드 설정은 서버에 맞는 설정값입니다. 이유는 백그라운드로 설정한 상태에서는 모든 프로세스에 대한 우선권이 기본값에서 변동되지 않습니다. (물론 수동으로 작업관리자에서 변경할 수는 있습니다). 즉 어떤 프로세스가 활성화되어 포그라운드 상태라 할지라도 우선권을 더 높이거나 하지는 않습니다. 즉 지금 실행되고 있는 모든 프로세스를 존중합니다. 동시다발적으로 서비스가 되어야 하는 서버에 맞는 설정인 것이죠. 그리고 오피스같은 프로그램이 처음 띄우는 것과 창을 완전히 닫고 두번째 띄웠을때 더 빨리 띄워지는 것은 Prefetch의 개념입니다. 즉 쉽게 말해 최근에 실행된 프로그램은 외워놓고 실행을 하는것과 비슷하다고 할 수 있겠습니다. 물론 Prefetch도 스왑을 통해 이루어집니다만 메모리의 하드 스왑과는 조금 촛점이 다른 문제라고 보여집니다.
 
2. 메모리 캐쉬? 프로그램? 어떤 것을 잡을 것인가?
메모리 캐쉬를 간단히 이야기하자면 사용자의 물리적 메모리는 제한되어 있으므로 불가피하게 꽉 차게 되는데 이때 하드 스왑의 문제가 생깁니다. 우선 프로그램과 시스템캐쉬 설정의 차이는 시스템 캐쉬의 비중을 얼마나 둘 것인가 하는 것입니다. 시스템 캐쉬는 실행중인 다른 프로세스를 위한 예비분이다라고 생각하시면 쉬울 것 같네요. 예를 들어 설명해 보겠습니다. 물론 완전히 이렇게 되지는 않습니다만 내 메모리 여분이 앞으로 실행될 프로세스가 할당받을 수 있는 여분 메모리가 100M이고 또 실행되려는 프로그램이 메모리를 150M를 잡아먹는다고 가정해보죠. 그렇다면 내가 당장 쓸 수 있는 것은 메모리 100M이므로 50M의 하드스왑이 필요합니다. 아랫글에서 말씀해주신 대로 하드스왑은 곧 버벅임을 의미하게되지요. 그렇다면 내가 지금 이 프로그램이 아주 중요해서 버벅거리지 않았으면 좋겠다고 한다면 시스템 캐쉬를 50M 이상 줄이면 되겠죠. 그렇다면 지금 실행하려는 프로그램은 하드스왑 없이(실제로 일정 용량 이상의 프로세스는 대부분 하드스왑을 수반합니다만 그렇지 않다는 가정하에) 메모리상에 전부 로드되어 무척이나 쾌적하게 돌아갈 겁니다. 즉 프로그램으로 설정을 잡아주면 이처럼 시스템 캐쉬의 비중을 줄이고 현재 실행하려는 프로세스를 존중합니다. 즉 일반 사용자의 셋팅(새로 프로그램을 띄우는데 버벅임을 원하시진 않으므로...)입니다. 하지만 시스템 캐쉬의 용량이 적어지면 지금까지 돌리고 있던 프로세스의 상당 부분이 하드 스왑됩니다. 즉 앞으로 프로그램을 띄울 일이 별로 없다라고 한다면 시스템 캐쉬를 적게 잡는 것이 오히려 도움이 되겠지요. 서버의 경우 특정 몇몇 프로세스만 돌리면 되는 경우이므로 시스템 캐쉬를 많이 잡고(앞으로 띄우게 될 프로그램은 배려를 안하는 것이죠. 별로 필요없지 않겠습니까?) 서비스를 하는 것이 오히려 더 좋을것입니다. 예에서 무시한 가정이 많아 적절한 예인지 의문이 들지만 아무튼 저의 설명은 여기까지입니다.
 

3. 결론
여기까지 읽어보셨다면 이해가 되실듯 합니다. 결국 제어판에서 오른쪽은 서버 셋팅에 가깝고 왼쪽은 일반 사용자 셋팅에 가깝다고 할 수 있겠습니다. 멀티태스킹을 빠르게라는 것이 내가 실행중인 프로그램을 의미한다면 프로그램 설정으로, 당장하고 있는 작업에 연연하지 않고 전반적으로 속도를 향상시키고 싶다면 백그라운드로 설정을 잡아주면 되겠지요. 또 이것저것 잘띄워놓으시는 분들은 프로그램을, 거의 띄워놓은 것에서만 작업하신 분들은 시스템 캐쉬로 잡으면 되겠지요. 그렇다면 현재 돌리는 프로세스를 전부 빠르게 하면서 지금 내가 작업중인(포그라운드) 프로세스에도 우선권을 줘야겠다? 방법이 하나 있긴합니다. 업그레이드 :) 저의 마지막 조크였습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


  • 댓글이 없습니다.