퀘이젝트

Quaject

컴퓨터 과학에서 퀘이커는 데이터와 코드(또는 코드에 대한 포인터)를 모두 포함하는 객체 형태데이터 구조로, 콜백(callentries) 형태의 인터페이스로 노출되며, 콜백(callback)과 콜아웃(callout)에 대한 다른 쿼리에 대한 콜리시 리스트를 수용할 수 있다.그것들은 1989년 알렉시아 마살린의해 합성 커널을 위해 개발되었고,[1] Qua의 이름을 따서 명명되었다! 머신(Machine)은 마샬린이 구축한 독특한 하드웨어 플랫폼이다.'qua'라는 용어의 기원은 분명하지 않다;마살린은 코알라가 만든 소리라고 유머러스하게 주장한다.[2]

퀘스트의 주요 목적은 객체 단위로 런타임 코드 최적화를 허용함으로써 자체 수정 코드관리하기 위한 추상화를 제공하는 것이다.원래의 합성 커널은 수작업으로 개발된 조립 언어로 작성될 것을 요구했지만, 이것은 복잡한 컴파일러 개발을 피하기 위해 수행되었다; Massalin은 Lisp 또는 Smalltalk에서처럼 런타임 코드 생성을 허용하는 높은 수준의 프로그래밍 언어에 대한 JIT(Just-in-Time 컴파일)도 이러한 접근방식을 적용할 수 있다고 지적했다.그는 또한 그러한 컴파일러의 복잡성은 엄두도 못 낼 것이라고 주장했다.

quajects는 두 가지 주요한 방법으로 더 많은 전통적인 개체와 다르다: 첫째, 그들은 항상 다른 quaubject에 대한 두 인터페이스를 관리하기 위해 의존성 주입 패턴의 형태를 사용한다. 그리고 quaubject에 대한 callent reference의 목록은 quaubject 생성의 일부분이며, quaubject의 수명 동안 업데이트될 수 있다.둘째로, 그리고 더 중요하게는, 주어진 퀘이커의 메서드 집합은 특정 퀘이커에 고유할 수 있다; 퀘이커의 유형이나 클래스에 대한 메서드는 고정 코드가 아닌 하나 이상의 템플릿으로 저장된다.공유된 방법은 공통의 포인터 표를 통해 접근할 수 있지만, 개별 퀘이커는 해당 퀘이커의 행동에 맞게 성능을 조절하기 위해 특별히 생성되는 방법도 가질 수 있다.

참조

  1. ^ Pu, Calton; Massalin, Henry; Ioannidis, John (1992). Synthesis: An Efficient Implementation of Fundamental Operating System Services (PDF) (Ph.D. thesis). New York, NY, USA: Department of Computer Sciences, Columbia University. UMI Order No. GAX92-32050. Archived (PDF) from the original on 2017-07-05. Retrieved 2012-04-25. Lay summary (2008-02-20).{{cite thesis}}: Cite uses deprecated parameter lay-date= (help)[1]Archived 2016-03-12 at the Wayback Machine
  2. ^ Poole, Gary Andrew (1996-12-01). "Qua". Wired. Condé Nast. Archived from the original on 2017-07-04. Retrieved 2016-08-23.