매킨토시 도구 상자
Macintosh ToolboxMacintosh Toolbox는 플랫폼에서 소프트웨어 개발을 위한 애플리케이션 프로그래밍 인터페이스 세트를 포함하여 Classic Mac OS의 많은 고급 기능을 구현한다.툴박스는 다수의 "매니저"와 화면 그래픽 그리기를 담당하는 QuickDraw와 같은 소프트웨어 구성요소, 메뉴 바를 설명하는 데이터 구조를 유지하는 메뉴 매니저로 구성되어 있다.원래 매킨토시는 가상 메모리나 메모리 보호 기능이 없는 상태로 설계되었기 때문에 언제 메모리에 로딩하거나 디스크에 보관해야 하는지, 어떻게 접속해야 하는지에 따라 코드를 분류하는 것이 중요했다.툴박스는 메모리에 영구히 보관되고 2바이트 기계 명령으로 접근할 수 있을 만큼 필수적인 서브루틴으로 구성된다. 그러나 메모리 관리 및 파일 시스템과 같은 핵심 "커널" 기능은 제외한다.Toolbox는 화면에 메뉴를 그리지 않는다는 점에 유의하십시오. 메뉴는 사용자 정의가 가능한 모양을 갖도록 설계되었기 때문에 도면 코드는 디스크에 저장될 수 있는 자원에 저장되었다.
등장 및 구현
68k 시스템
매킨토시 운영체제의 모토로라 68000 제품군 최초의 구현은 그 프로세서의 불법적인 opcode 예외 처리 메커니즘을 이용하여 시스템 호출을 실행한다.모토로라는 1111과 1010으로 시작하는 명령은 향후 6만8000개의 패밀리 프로세서에서 절대 사용되지 않을 것이며, 따라서 운영체제가 이를 사용할 수 있도록 허용한다고 명시했다.게다가, 그들은 각각 일반적인 불법적인 opcode 핸들러와는 별개로 그들만의 전용 인터럽트 벡터를 가지고 있었다.1111은 68881 FPU 등 공동프로세서 사용이 예약돼 있어 애플은 1010(헥사이드 A)을 운영체제 호출 접두사로 선택했다.불법적인 지시를 다루는 것은 트랩이라고 알려져 있기 때문에 이러한 특별 지시를 A 트랩이라고 불렀다.[1]프로세서가 그러한 지시와 마주쳤을 때, 그것은 운영체제로 제어권을 이전하고, 운영체제는 적절한 작업을 찾아내고 그것을 수행한다.이 메커니즘에는 다음과 같은 두 가지 장점이 있었다.
- 그것은 결과적으로 컴팩트한 프로그램을 만들어낸다.일반 점프 지침을 사용할 때 4바이트 또는 6바이트가 사용되는 것과 달리, 모든 운영 체제 액세스에서 2바이트만 사용한다.
- 적절한 기능을 찾는 데 사용되는 테이블은 RAM에 저장되어 있다.그런 다음 기본 코드를 ROM에 저장하더라도 ROM 메모리 주소를 RAM 주소로 교체하여 재정의(패치)할 수 있다.
시스템은 파라미터를 가장 일반적인 기능에 저장하기 위해 A 트랩 명령의 일부를 할당함으로써 더욱 최적화되었다.예를 들어 메모리 할당은 매우 일반적인 작업이기 때문에 가능한 몇 바이트의 코드로 표현해야 한다.때때로 프로그래머는 메모리 블록을 0으로 지우기를 원하므로 할당함수는 부울 파라미터를 취하거나 두 개의 할당 함수가 있어야 한다.매개 변수를 전달하려면 2바이트 명령이 추가로 필요하며, 이는 비효율적일 것이다.두 개의 기능을 가지려면 함수 조회 테이블의 주소에 사용되는 최소 4바이트의 RAM이 추가로 필요하다.가장 효율적인 해결책은 여러 개의 A 트랩을 동일한 서브루틴에 매핑한 다음 A 트랩을 매개변수로 사용하는 것이다.이것은 가장 일반적으로 사용되는 서브루틴에 해당된다.그러나 툴박스는 덜 흔하게 사용되는 서브루틴으로 구성되었다.툴박스는 A-트랩 내에서 파라미터를 사용하지 않는 서브루틴 집합으로 정의되었으며, 1024-엔트 4-킬로바이트 디스패치 테이블에서 인덱싱되었다.[2](램 1메가바이트 미만으로 출하되는 기계는 512개 항목의 단일 테이블을 사용하며, 이는 이후 ROM 개정판의 256개 항목 OS 디스패치 표에 해당한다.)[3]
On PowerPC 시스템
1994년 애플은 파워PC 아키텍처를 사용한 매킨토시를 출시했는데, 68k 시스템에서 사용할 수 있는 A-트랩 메커니즘에 대한 하드웨어 지원이 부족했다.그러나 소프트웨어 패치를 적용하는 데 사용하기 때문에 디스패치 테이블은 그대로 유지되었다.툴박스 루틴의 기초가 되는 API 라이브러리 코드는 디스패치 표를 참조하는 것 외에는 아무 것도 하지 않는다.발송 표는 에뮬레이트된 68000 가족 코드에만 연결된다.네이티브 파워로 구현된 툴박스 기능PC 코드는 먼저 혼합 모드 관리자를 사용하여 에뮬레이터를 비활성화해야 한다.통일성과 확장성을 위해 PowerPC 전환 이후에도 툴박스에 새로운 기능 항목이 계속 추가됐다.
그러나, 코드 조각 관리자에는 대체 메커니즘이 존재했는데, 이 메커니즘은 네이티브 PowerPC 프로그램을 로드하고 동적으로 연결하기 위해 사용되었다.더 파워A 트랩 메커니즘과 유사한 PC 시스템 호출 설비는 애플리케이션에 직접 유용한 서비스를 거의 제공하지 않는 Mac OS 나노커넬과의 인터페이스에 사용되었다.
기능
인터페이스 프로그래밍
Toolbox는 일반적으로 사용되는 함수로 구성되지만 가장 일반적으로 사용되는 함수는 아니다.그 결과, 서로 다른 API 라이브러리의 잡동사니로 성장했다.[3]Toolbox는 Classic Mac OS를 구분한 대부분의 기본 기능을 포함한다.애플이 언급한 "Inside Macintosh: Macintosh Toolbox Essentials"와 마찬가지로 범위가 모호한 "Inside Macintosh: More Macintosh Toolbox"도 툴박스의 대부분을 문서화한다.
부팅에 사용
Toolbox의 상당 부분이 컴퓨터의 펌웨어와 함께 ROM에서 구현되기 때문에 Bootloader 환경으로 사용하기 편리했다.툴박스는 ROM 칩에 저장된 리소스와 함께 화면을 회색으로 돌리고, "Macintosh에 오신 것을 환영합니다"라는 서명이 적힌 대화 상자를 표시하고, 마우스 커서를 표시할 수 있다.Toolbox를 사용하여 기계를 부팅하는 데 도움을 줌으로써, 디스크에서 시스템 여행 가방을 로드하기 전에(사실 NuBus 카드의 ROM이 실행되기 전) 초보적인 Mac과 같은 환경을 초기화할 수 있으며, 이는 24비트 또는 32비트 주소 지정을 사용하는 결정을 내려야 하는 시점이다.(시스템 7의 32비트 주소 지정 지원에는 32비트 Clean ROM이 필요하며, 이전 Mac ROM은 이에 대한 지원이 없기 때문이다.)Macintosh는 대부분의 진단을 POST에 가지고 있고 "Sad Mac" 코드를 통해 자동으로 오류를 보고하기 때문에 IBM PC 호환성 보드에 상주하는 BIOS에서와 같이 진단할 필요는 없다.
그러나 부팅 환경과 실제 운영 체제의 유사성은 동일하다고 혼동해서는 안 된다."Classic Mac OS" 부팅 프로세스는 복잡하고 대부분 문서화되지 않지만, IBM PC 호환 BIOS보다 제한되지 않는다.PC의 마스터 부트 레코드처럼 ROM 기반 Mac은 부트 장치로 선택한 디스크 파티션의 첫 번째 블록("부팅 블록")에서 코드를 읽고 실행한다.그런 다음 부트 블록은 적절한 기본 환경이 있는지 확인하고 이를 사용하여 시스템 여행 가방을 적재하십시오.다른 파일 시스템을 사용하는 다른 운영 체제는 부팅 블록에서 자체 코드를 사용하여 부팅할 수 있다.[4]이 시스템은 전원에 사용되지 않음그러나 PC Linux는 New World ROM 시스템의 Open Firmware에는 HFS 파일 시스템 내의 부트 로더가 필요하기 때문에 툴박스나 "구식" Mac과는 일반적으로 관련이 없다.좀 더 좁게, Classic Mac OS와 MacOS의 시동 디스크 제어판은 사용자가 매우 특별한 제약조건이 있는 탑재된 파일 시스템만 선택할 수 있도록 한다.
레거시
Mac OS X에서 Toolbox는 전혀 사용되지 않지만 Classic Environment는 Toolbox ROM 파일을 가상 머신에 로드한다.툴박스의 대부분은 애플의 Carbon 프로그래밍 API의 일부로 재구성되고 구현되어 툴박스에 익숙한 프로그래머들이 Mac OS X에 프로그램 코드를 보다 쉽게 포팅할 수 있게 되었다.
참고 항목
참조
- ^ Apple Inc. (6 July 1996). "A-Line Instructions". Archived from the original on 2004-07-02. Alt URL
- ^ Apple Inc. (6 July 1996). "About the Trap Manager". Archived from the original on 2004-07-02. Alt URL
- ^ a b Olson, James H. (4 September 1997). "Mac Alamanac II". Linux/m68k for Macintosh.
- ^ Apple Inc. (6 July 1996). "Boot Blocks". Archived from the original on 2004-03-12. Alt URL