GnuSmalltalkUsersGuide:BaseChapter 133

From 흡혈양파의 번역工房
Revision as of 05:13, 28 January 2014 by Onionmixer (talk | contribs) (GSUG ProcessorScheduler 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
ProcessorScheduler

ProcessorScheduler

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: Object

범주: 언어-프로세스


나는 프로세스의 실행을 제어하는 메서드를 제공한다.


ProcessorScheduler 클래스: 인스턴스 생성

new

오류-ProcessorScheduler의 새 인스턴스가 생성되어선 안 된다.


ProcessorScheduler: 기본

activeDebugger

활성 프로세스의 디버거를 응답하라.

activePriority

활성 프로세스의 우선순위를 응답하라.

activeProcess

활성 프로세스를 응답하라.

processEnvironment

스몰토크 프로세스에 대한 thread-local 변수를 호스팅하는 또 다른 싱글톤 객체를 응답하라. 이는 일반 Dictionary와 같이 행위하지만 몇 가지 차이가 있다: a) #associationAt: 을 이용 시 특수 연관을 리턴하여 thread-local 값을 검색할 것이다; b) 누락된 키를 요청 시 nil을 리턴하고, 그 키를 제거 시 nop(무연산)이 될 것이다.

processesAt: aPriority

주어진 우선순위에서 프로세스의 연결 리스트를 응답하라.

terminateActive

활성 프로세스를 종료하라.

timeSlice

시스템이 자동으로 선점하기 전에 각 Process로 할당된 시간구획(timeslice)을 응답하라 (밀리초로). 0을 응답하면 선점 다중 작업이 비활성화 되었음을 의미한다. 기본적으로 시스템은 선점 다중 작업 없이 컴파일되며, 활성화된다 하더라도 BSD derivatives(또는 일반적으로 ITIMER VIRTUAL을 지원하는 시스템)에서만 작동할 것임을 주목하라.

timeSlice: milliSeconds

시스템이 자동으로 선점하기 전에 각 Process로 할당되는 시간구획(timeslice)을 설정하라. 0으로 설정 시 선점 다중 작업이 비활성화 된다. 기본적으로 시스템은 선점 다중 작업을 비활성화시킨 채 컴파일하며, 활성화된다 하더라도 BSD derivatives(또는 일반적으로 ITIMER VIRTUAL을 지원하는 시스템)에서만 작동할 것임을 주목하라.

yield

활성 프로세스가 다른 프로세스로의 제어를 생성하도록 하라.


ProcessorScheduler: built-ins

Twice

disableInterrupts

현재 프로세스가 실행되는 동안 외부 이벤트에서 야기하는 인터럽트를 비활성화하라. 프로세스별로 인터럽트가 비활성화되며, #disableInterrupts를 두 번 호출 시 #enableInterrupts도 두 번 호출되어 인터럽트가 재활성화된다.

enableInterrupts

현재 프로세스가 실행되는 동안 외부 이벤트에서 야기하는 인터럽트를 비활성화하라. 기본적으로 인터럽트는 활성화된다.


ProcessorScheduler: idle tasks

idle

Private - 다음 idle 작업을 호출하라.

idleAdd: aBlock

무언가 유휴 상태(idle)가 되면 aBlock이 실행되도록 등록하라.

initialize

Private - finalization 과정을 시작하라.

update: aSymbol

이미지가 저장될 때 남겨둔 일이 있다면 지금 실행하라.


ProcessorScheduler: 인쇄하기

printOn: aStream

수신자의 인쇄된 표현을 aStream 상에 보관하라.


ProcessorScheduler: 우선순위

highIOPriority

네트워크로부터 입력을 처리하는 프로세스와 같이 시스템에서 높은 우선순위 I/O 프로세스에 대한 우선순위를 응답하라.

highestPriority

최고 유효 우선순위를 응답하라.

lowIOPriority

시스템에서 낮은 우선순위 I/O 프로세스에 대한 우선순위를 응답하라. 예로 사용자(키보드, 위치 결정 장치 등)로부터 입력을 처리하는 프로세스나 네트워크로부터 입력을 분산시키는 프로세스를 들 수 있겠다.

lowestPriority

최저 유효 우선순위를 응답하라.

priorityName: priority

Private - 주어진 프로세스 우선순위에 해당하는 이름을 응답하라.

rockBottomPriority

최저 유효 우선순위를 응답하라.

systemBackgroundPriority

시스템 배경-우선순위 프로세스에 대한 우선순위를 응답하라. 점진적 쓰레기 수집기나 상태 점검기(status checker)를 예로 들 수 있겠다.

timingPriority

실시간 프로세스에 대한 우선순위를 응답하라.

unpreemptedPriority

시스템에서 이용 가능한 최고 우선순위를 응답하라; 해당 우선순위로 프로세스를 절대 생성하지 말고, 대신 BlockClosure>>#valueWithoutPreemption를 사용하라.

userBackgroundPriority

사용자 배경-우선순위 프로세스에 대한 우선순위를 응답하라.

userInterruptPriority

사용자 인터럽트-우선순위 프로세스에 대한 우선순위를 응답하라. 이 수준에서 실행되는 프로세스는 윈도우 스케줄러를 선점하고, 그에 따라 프로세서를 영구적으로 소모하지 않을 것이다.

userSchedulingPriority

사용자 표준-우선순위 프로세스에 대한 우선순위를 응답하라.


ProcessorScheduler: 보관하기

storeOn: aStream

수신자에게 평가하는 스몰토크 표현식을 aStream 상에 보관하라.


ProcessorScheduler: 시간이 명시된(timed) 호출

isTimeoutProgrammed

Private - #signal:atMilliseconds: 로 보류 중인 호출(pending call)이 존재하는지 응답하라.

signal: aSemaphore atMilliseconds: millis

Private - 'millis' 밀리초가 흐른 다음 'aSemaphore'를 시그널링하라.

signal: aSemaphore onInterrupt: anIntegerSignalNumber

주어진 C 신호가 발생할 때 'aSemaphore'를 시그널링하라.


Notes