작업 세트

Working set

작업 세트는 주어진 시간 간격 동안 프로세스가 필요로 하는 메모리 양을 정의하는 컴퓨터 과학 개념입니다.

정의.

Peter Denning(1968)은 프로세스 시간 간격 ) 프로세스에서 참조되는 정보 수집(t -t )으로 t의 프로세스의 작업 세트 정보 \ t, \W 정의합니다.[1]일반적으로 문제의 정보 단위는 메모리 페이지로 간주됩니다.이는 앞으로 프로세스가 액세스할 페이지 세트의 대략적인 값(예를 들어 시간 단위으로 제안되며, 구체적으로는 프로세스 실행에서 대부분의 진척이 이루어지기 위해 어떤 페이지를 메인 메모리에 보관해야 하는지를 나타내는 것으로 제안됩니다.

근거

메인 메모리에 보존할 페이지의 선택(보조 스토리지에의 페이지 아웃과는 구별)의 효과는 중요합니다.메인 메모리에 보존할 수 있는 프로세스의 페이지가 너무 많으면 동시에 준비할 수 있는 다른 프로세스의 수가 줄어듭니다.메인 메모리에 보관 유지되는 프로세스의 페이지가 너무 적으면 페이지 폴트 빈도가 크게 증가하고 시스템에서 현재 실행되고 있는 액티브(비정지) 프로세스의 수가 0에 가까워진다.

작업 세트 모델에서는 현재 사용 중인 모든 페이지(종종 가장 최근에 사용한 페이지)가 RAM에 있을 수 있는 경우에만 프로세스가 RAM에 있을 수 있음을 나타냅니다.이 모델은 모두 또는 전혀 사용하지 않는 모델입니다.즉, 사용해야 할 페이지가 증가하여 RAM에 빈 공간이 없을 경우 다른 프로세스에서 사용할 메모리를 확보하기 위해 프로세스가 메모리 밖으로 스왑됩니다.

부하가 높은 컴퓨터에는 많은 프로세스가 큐잉되어 있기 때문에 모든 프로세스가 1개의 스케줄링 타임 슬라이스 동안 실행되도록 허용되면 RAM보다 더 많은 페이지를 참조하게 되어 컴퓨터가 "스래시"하게 됩니다.

일부 프로세스를 메모리에서 스왑함으로써 프로세스(메모리에서 일시적으로 제거된 프로세스도 컴퓨터가 모든 프로세스를 동시에 실행하려고 했을 때보다 훨씬 더 빨리 완료됩니다.또, 하드 드라이브나 그 외의 글로벌 자원에 대기하고 있는 동안, 다른 프로세스를 실행해 진척시킬 수 있기 때문에, 컴퓨터가 한 번에 1개의 프로세스만을 실행했을 때보다 훨씬 빨리 프로세스가 종료됩니다.

즉, 작업 세트 전략은 멀티프로그래밍의 정도를 가능한 한 높게 유지하면서 스레싱을 방지한다.따라서 CPU 사용률과 throughput이 최적화됩니다.

실행

작업 세트 모델 구현의 주요 장애물은 작업 세트를 추적하는 것입니다.작업 세트 창은 이동 창입니다.각 메모리 레퍼런스에서는, 한쪽 끝에 새로운 레퍼런스가 표시되고, 다른 한쪽 끝에 가장 오래된 레퍼런스가 드롭 됩니다.페이지가 작업 세트 창에서 참조되는 경우 작업 세트에 있는 페이지입니다.

마지막 참조 페이지 목록을 유지하는 오버헤드를 피하기 위해 작업 세트는 종종 마지막 참조 시간 t를 추적하고 작업 세트가 특정 시간 내에 참조되는 모든 페이지라고 간주함으로써 구현됩니다.

작업 세트는 페이지 치환 알고리즘은 아니지만, 페이지 치환 알고리즘은 특정 프로세스의 작업 세트에 없는 페이지만 제거하도록 설계할 수 있습니다.예를 들어 WSClock이라고 하는 클럭알고리즘의 수정 버전을 들 수 있습니다.

변종

작업 세트는 코드 작업 세트와 데이터 작업 세트로 나눌 수 있습니다.이 구별은 코드와 데이터가 메모리 계층의 관련 수준에서 분리되어 있을 때 중요합니다. 예를 들어 작업 세트 중 하나가 계층의 해당 수준에 맞지 않으면 스레싱이 발생합니다.가상 메모리가 있는 시스템에서는 코드 및 데이터 자체와 더불어 작업 세트 페이지의 메모리 맵(가상 메모리에서 물리 메모리로) 엔트리를 Translation Lookaside Buffer(TLB; 변환 룩사이드 버퍼)에 캐시해야 프로세스가 효율적으로 진행됩니다.코드와 데이터는 페이지 전체가 아닌 작은 블록(캐시 행)으로 캐시되기 때문에 이 구별이 존재하지만 주소 검색은 페이지 수준에서 수행됩니다.따라서 코드와 데이터 작업세트가 캐시에 들어가더라도 작업세트가 여러 페이지에 걸쳐 분할되어 있는 경우 가상 주소 작업세트가 TLB에 들어가지 않아 TLB 스레싱이 발생할 수 있습니다.

작업 세트의 아날로그는 다른 제한된 리소스, 가장 중요한 프로세스에 대해 존재합니다.일련의 프로세스가 여러 프로세스 간에 빈번하게 상호 작용해야 하는 경우 프로세스 작업 세트가 있으며, 프로세스 작업 세트는 프로세스를 [2]진행하기 위해 코스케줄링해야 합니다.

병렬 프로그램에는 병렬 프로그램이 진행되기 위해 코스케줄(동시에 실행되도록 설정)되어야 하는 프로세스 작업 세트가 있습니다.

프로세스가 동시에 스케줄 되어 있지 않은 경우(예를 들어 프로세스를 실행하는 코어가1개뿐인 경우), 프로세스는 타임슬라이스당1개의 인터랙션 속도로 진행됩니다.

그 외의 자원에는, 파일 핸들이나 네트워크 소켓등이 있습니다.예를 들어, 1개의 파일을 다른 파일에 카피하는 것은, 2개의 파일 핸들(입력용, 출력용)로 간단하게 실시할 수 있기 때문에, 「파일 핸들 작업 세트」사이즈는 2개입니다.사용할 수 있는 파일핸들이 1개뿐일 경우 복사는 계속 가능하지만 입력용 파일핸들을 취득하여 그 파일핸들을 취득하고 (버퍼로 읽는다), 해제하고 출력용 파일핸들을 취득하고, 쓰기, 해제하고, 다시 입력 파일핸들을 취득하여 반복해야 합니다.마찬가지로 서버에 많은 소켓이 필요할 수 있으며, 제한된 경우 소켓을 분리했다가 다시 획득해야 합니다.일반적으로 이러한 리소스는 스레싱이 아니라 프로그램에 필요하며 충분한 리소스를 획득하지 못하면 실패합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Denning, Peter J. (1968). "The working set model for program behavior" (PDF). Communications of the ACM. 11 (5): 323–333. doi:10.1145/363095.363141. S2CID 207669410.
  2. ^ Ousterhout, J. K. (1982). "Scheduling Techniques for Concurrent Systems" (PDF). Proceedings of Third International Conference on Distributed Computing Systems: 22–30.
  • 타넨바움, 앤드류(2009).최신 운영 체제 제3판. 페이지 209–210
  • 데닝, P.J. (1980년)과거 및 현재 작업 세트IEEE Transactions on Software Engineering, 1980년 1/1, Volume SE-6, 페이지 64-84.[1]
  • Silverschatz, A., Galvin, P.B. 및 Gagne, G. (2005)운영체제 개념, 제7판Palatino:와일리 346페이지