추상화 레이어

Abstraction layer

컴퓨팅에서 추상화 계층 또는 추상화 수준은 하위 시스템의 작업 세부 사항을 숨기는 방법입니다.추상화 레이어를 사용하는 소프트웨어 모델의 예로는 네트워크 프로토콜용 OSI 모델, OpenGL 및 기타 그래픽 라이브러리를 들 수 있습니다.이 모델들은 상호 운용성플랫폼 독립성을 용이하게 하기 위해 관심사를 분리할 수 있습니다.또 다른 예로는 미디어 전송 프로토콜이 있습니다. 이 프로토콜은 공유 액세스를 허용하고 일반적인 파일 시스템 지원이 필요하지 않지만 블록 수준 액세스를 사용하는 대용량 스토리지에 비해 사용자 제어를 제한합니다.

컴퓨터 과학에서 추상화 계층은 특정 구현에서 벗어나 개념 모델 또는 알고리즘을 일반화한 것입니다.이러한 일반화는 다양한 특정 구현에 존재하는 유사성을 표현하는 모델에 의해 가장 잘 요약되는 광범위한 유사성에서 비롯됩니다.우수한 추상화 레이어에 의해 제공되는 단순화는 유용한 개념 또는 설계 패턴을 증류함으로써 쉽게 재사용할 수 있으며, 이를 정확하게 적용할 수 있는 상황을 빠르게 인식할 수 있습니다.

계층에 의존할 경우 계층은 다른 계층 위에 있는 것으로 간주됩니다.모든 레이어는 위의 레이어 없이도 존재할 수 있으며, 기능하기 위해서는 그 아래의 레이어가 필요합니다.자주 추상화 계층은 추상화 수준의 계층으로 구성될 수 있습니다.OSI 모델은 7개의 추상화 레이어로 구성됩니다.모델의 각 레이어는 디지털 통신의 요구 중 다른 부분을 캡슐화하여 대응함으로써 관련된 엔지니어링 솔루션의 복잡성을 줄입니다.

데이비드 휠러의 유명격언은 "컴퓨터 과학의 모든 문제는 다른 차원의 간접으로 해결할 수 있다"[1]이다.이는 종종 의도적으로 "간접" 대신 "추상"으로 잘못 인용됩니다.그것은 또한 때때로 버틀러 램퍼슨에게 잘못 귀속된다.에 대한 케블린 헤니의 결론은 "너무 많은 [2]간접적인 문제를 제외하면"입니다.

컴퓨터 아키텍처

컴퓨터 아키텍처에서 컴퓨터 시스템은 보통 다음과 같은 몇 가지 추상화 수준으로 구성됩니다.

프로그래머블 로직은 하드웨어의 일부로 간주되는 경우가 많지만 논리 정의는 디바이스의 소프트웨어나 펌웨어의 일부로 간주되는 경우도 있습니다.펌웨어에는 하위 레벨의 소프트웨어만 포함될 수 있지만 운영 체제 및 애플리케이션을 포함한 모든 소프트웨어를 포함할 수도 있습니다.소프트웨어 계층은 하드웨어 추상화 계층, 물리적 및 논리적 장치 드라이버, 파일 시스템, 운영 체제 커널, 미들웨어, 애플리케이션 등의 저장소로 더 나눌 수 있습니다.또한 VHDL, 기계어, 어셈블리 언어, 컴파일된 언어, 인터프리터스크립트 [3]언어와 같은 하위 수준의 프로그래밍 언어를 구분할 수도 있습니다.

입출력

Unix 운영체제에서는 대부분의 입력 및 출력 조작은 디바이스에서 읽거나 디바이스에 쓰는 바이트 스트림으로 간주됩니다.이 바이트 스트림은 디바이스 독립성을 제공하기 위해 파일 I/O, 소켓 I/O 및 터미널 I/O에 사용됩니다.애플리케이션 레벨의 디바이스에 읽기 및 쓰기를 실시하기 위해서, 프로그램은 단말등의 실제 디바이스나 네트워크 포토등의 가상 디바이스, 또는 파일 시스템내의 파일이 될 수 있는 디바이스를 여는 함수를 호출한다.장치의 물리적 특성은 운영 체제에 의해 조정되며, 운영 체제는 프로그래머가 장치에서 바이트를 읽고 쓸 수 있는 추상 인터페이스를 제공합니다.그런 다음 운영체제는 디바이스에 바이트 스트림을 읽고 쓰는 데 필요한 실제 변환을 수행합니다.

그래픽스

OpenGL과 같은 대부분의 그래픽 라이브러리는 추상 그래픽 디바이스 모델을 인터페이스로 제공합니다.라이브러리는 프로그래머가 제공하는 명령어를 그래픽 요소 및 객체를 그리는 데 필요한 특정 장치 명령어로 변환하는 역할을 합니다.플로터의 특정 디바이스 명령어는 CRT 모니터의 디바이스 명령어와 다르지만 그래픽 라이브러리는 그래픽 객체를 그리는 데 일반적으로 유용한 일련의 프리미티브를 제공하는 추상 인터페이스를 제공함으로써 구현 및 디바이스 의존 세부사항을 숨깁니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Spinellis, Diomidis (2007). Beautiful Code: Leading Programmers Explain How They Think. Sebastopol, CA: O'Reilly and Associates. pp. 279–291.
  2. ^ @kevlinhenney (September 3, 2012). "Yes, that's my corollary" (Tweet) – via Twitter.
  3. ^ Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0.