맨위로가기

추상화 계층

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

추상화 계층은 컴퓨터 시스템의 복잡성을 관리하기 위해 사용되는 개념으로, 하드웨어, 펌웨어, 어셈블리 언어, 운영 체제, 프로세스 등 여러 계층으로 구성된다. 각 계층은 특정 기능을 수행하고, 상위 계층에 추상화된 인터페이스를 제공하여 시스템의 모듈성과 유연성을 높인다. 입출력(I/O) 작업은 바이트 스트림으로 추상화되어 장치 독립성을 제공하며, 그래픽스 라이브러리는 장치 종속적인 세부 사항을 숨기는 추상 인터페이스를 통해 그래픽 장치 모델을 제공한다.

더 읽어볼만한 페이지

  • 컴퓨터 구조 - PA-RISC
    PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다.
  • 컴퓨터 구조 - 메모리 관리
    메모리 관리는 운영체제의 핵심 기능으로, 여러 프로세스의 원활한 실행을 위해 메모리 공간을 할당하고 관리하며, 릴로케이션, 보호, 공유, 가상 메모리 관리, 자동/수동 메모리 관리 등의 기능을 수행한다.
추상화 계층
개요
정의추상화 계층은 복잡한 기본 구현 세부 정보를 숨기고 프로그래머에게 더 높은 수준의 추상화를 제공하는 방법임.
목적시스템의 복잡성을 줄이고 모듈성을 향상시켜 개발자가 시스템의 내부 작동 방식에 대해 걱정할 필요 없이 시스템의 상위 수준 기능을 사용하여 작업할 수 있도록 함.
다른 이름추상화 레벨
정보 은닉
설명하위 시스템의 자세한 구현 사항을 숨기는 방법임.
소프트웨어 디자인
설명소프트웨어 디자인에서 다양한 추상화 모델을 생성할 수 있음. 추상화 계층은 이러한 모델을 코드로 구현하는 것을 의미함.
사용 예시
OSI 모델OSI 모델은 네트워크 프로토콜 스택의 다양한 계층이 추상화 계층의 한 형태임. 각 계층은 하위 계층의 구현 세부 사항을 숨기고 상위 계층에 표준화된 인터페이스를 제공함.
그래픽 라이브러리OpenGL과 같은 그래픽 라이브러리는 그래픽 하드웨어의 복잡성을 추상화하여 개발자가 하드웨어 특정 코드를 작성하지 않고도 3D 그래픽을 렌더링할 수 있도록 함.
운영체제운영체제는 하드웨어의 복잡성을 추상화하여 애플리케이션이 하드웨어 특정 코드를 작성하지 않고도 파일 시스템, 메모리 관리 및 네트워킹과 같은 시스템 리소스에 액세스할 수 있도록 함.
가상 머신가상 머신(VM)은 기본 하드웨어의 복잡성을 추상화하여 여러 운영체제가 단일 물리적 시스템에서 동시에 실행될 수 있도록 함.
데이터베이스데이터베이스는 데이터 스토리지 및 검색의 복잡성을 추상화하여 개발자가 하드웨어 특정 코드를 작성하지 않고도 데이터베이스에 데이터를 저장하고 검색할 수 있도록 함.
장점
복잡성 감소추상화 계층은 시스템의 복잡성을 줄여 개발자가 시스템의 상위 수준 기능을 사용하여 작업하는 데 집중할 수 있도록 함.
모듈성 향상추상화 계층은 시스템의 모듈성을 향상시켜 시스템의 한 부분을 변경해도 다른 부분에 영향을 미치지 않도록 함.
재사용성 향상추상화 계층은 코드를 재사용하기 쉽게 만들어 여러 시스템에서 사용할 수 있도록 함.
유지보수성 향상추상화 계층은 시스템을 유지보수하기 쉽게 만들어 시스템의 한 부분을 변경해도 다른 부분에 영향을 미치지 않도록 함.
단점
성능 오버헤드추상화 계층은 성능 오버헤드를 유발할 수 있는데, 이는 추상화 계층이 추가 코드를 실행해야 하기 때문임.
복잡성 증가추상화 계층은 시스템의 복잡성을 증가시킬 수 있는데, 이는 추상화 계층을 이해하고 유지 관리하기 어려울 수 있기 때문임.
관련 개념
추상화추상화 계층은 추상화의 한 형태임. 추상화는 복잡한 시스템의 필수적인 특징을 강조하고 다른 특징은 억제하는 과정임.
캡슐화캡슐화는 데이터와 데이터를 조작하는 코드를 함께 묶는 과정임. 추상화 계층은 캡슐화를 사용하여 시스템의 내부 작동 방식을 숨길 수 있음.
모듈화모듈화는 시스템을 독립적인 모듈로 나누는 과정임. 추상화 계층은 모듈화를 사용하여 시스템의 복잡성을 줄일 수 있음.

2. 컴퓨터 구조

컴퓨터 구조에서 컴퓨터 시스템은 일반적으로 다섯 가지 수준으로 구성된다.[7] 컴퓨터 아키텍처에서는 소프트웨어, 프로그래밍 가능한 논리, 하드웨어와 같은 여러 추상화 계층으로 구성된다.[4]

또한, 컴퓨터 아키텍처에서 컴퓨터 시스템은 하드웨어, 펌웨어, 어셈블리 언어, 운영 체제, 프로세스와 같은 5개의 추상화 계층으로 나타낸다.[6]

2. 1. 하드웨어

컴퓨터 아키텍처에서 컴퓨터 시스템은 일반적으로 여러 추상화 계층으로 구성되는데, 그 중 하나는 하드웨어이다.[7] 프로그래밍 가능한 논리는 종종 하드웨어의 일부로 간주되기도 한다.[4]

2. 2. 프로그래밍 가능한 논리

컴퓨터 아키텍처에서 컴퓨터 시스템은 일반적으로 소프트웨어, 프로그래밍 가능한 논리, 하드웨어와 같은 여러 추상화 계층으로 구성된다.[4] 프로그래밍 가능한 논리는 종종 하드웨어의 일부로 간주되며, 논리적 정의는 때때로 장치의 소프트웨어나 펌웨어의 일부로 간주되기도 한다.[4] 펌웨어는 로우 레벨 소프트웨어만 포함할 수도 있지만, 운영 체제 및 응용 프로그램을 포함한 모든 소프트웨어를 포함할 수도 있다.[4] VHDL, 기계어, 어셈블리 언어와 같은 로우 레벨 프로그래밍 언어에서 컴파일 언어, 인터프리터, 스크립트 언어로의 구별도 가능하다.[4]

2. 3. 소프트웨어

컴퓨터 구조에서 컴퓨터 시스템은 일반적으로 소프트웨어, 프로그래밍 가능한 논리, 하드웨어를 포함한 여러 추상화 계층으로 구성된다.[7] 프로그래밍 가능한 논리는 종종 하드웨어의 일부로 간주되며, 논리적 정의는 때때로 장치의 소프트웨어나 펌웨어의 일부로 간주되기도 한다. 펌웨어는 로우 레벨 소프트웨어뿐만 아니라, 운영 체제 및 응용 프로그램을 포함한 모든 소프트웨어를 포함할 수도 있다. 소프트웨어 계층은 더 세분될 수 있다.[4]

2. 3. 1. 운영 체제

컴퓨터 아키텍처에서 컴퓨터 시스템은 일반적으로 하드웨어, 펌웨어, 어셈블리 언어, 운영 체제, 프로세스와 같은 5개의 추상화 계층으로 나타낸다.[6] 소프트웨어 계층은 하드웨어 추상화 계층, 물리적 및 논리적 장치 드라이버, 파일 시스템과 같은 저장소, 운영 체제 커널, 미들웨어, 응용 프로그램 등으로 더 세분될 수 있다.[4]

2. 3. 2. 응용 프로그램

컴퓨터 시스템에서 응용 프로그램은 소프트웨어 계층의 최상단에 위치하며, 사용자가 직접 사용하는 프로그램이다. 응용 프로그램은 하드웨어 추상화 계층, 장치 드라이버, 파일 시스템, 운영 체제 커널, 미들웨어 등을 거쳐 하드웨어와 상호작용한다.[4]

2. 3. 3. 프로그래밍 언어

컴퓨터 아키텍처에서 프로그래밍 언어는 컴파일 언어, 인터프리터, 스크립트 언어와 같은 상위 레벨 프로그래밍 언어와 VHDL, 기계어, 어셈블리 언어와 같은 로우 레벨 프로그래밍 언어로 구분할 수 있다.[4]

2. 4. 펌웨어

펌웨어는 로우 레벨 소프트웨어뿐만 아니라, 운영 체제 및 응용 프로그램을 포함한 모든 소프트웨어를 포함할 수도 있다.[4] 컴퓨터 아키텍처에서 펌웨어는 하드웨어, 어셈블리 언어, 운영 체제, 프로세스와 함께 추상화 계층을 구성한다.[6]

3. 입출력(I/O)

유닉스 운영 체제에서 대부분의 입출력(I/O) 작업은 장치에서 읽거나 장치에 기록되는 바이트 스트림으로 간주된다. 이 바이트 스트림 모델은 파일 I/O, 소켓 I/O 및 터미널 I/O에 사용된다. 응용 프로그램 수준에서 장치에 데이터를 읽고 쓰려면, 프로그램은 장치를 여는 함수를 호출한다. 이때 장치는 터미널과 같은 실제 장치일 수도 있고, 네트워크 포트나 파일 시스템의 파일과 같은 가상 장치일 수도 있다. 장치의 물리적 특성은 운영 체제에 의해 매개되며, 이는 프로그래머가 장치에서 바이트를 읽고 쓸 수 있는 추상 인터페이스를 제공한다. 그러면 운영 체제는 바이트 스트림을 장치에 읽고 쓰는 데 필요한 실제 변환을 수행한다.[1]

3. 1. 장치 독립성

유닉스 운영 체제에서 대부분의 입출력 작업은 장치에서 읽거나 장치에 기록되는 바이트 스트림으로 간주된다. 이 바이트 스트림 모델은 파일 I/O, 소켓 I/O 및 터미널 I/O에 사용되어 장치 독립성을 제공한다.[1] 응용 프로그램 수준에서 장치에 읽고 쓰려면 프로그램은 장치를 여는 함수를 호출한다. 이 장치는 터미널과 같은 실제 장치일 수도 있고, 네트워크 포트나 파일 시스템의 파일과 같은 가상 장치일 수도 있다. 장치의 물리적 특성은 운영 체제에 의해 매개되며, 이는 프로그래머가 장치에서 바이트를 읽고 쓸 수 있는 추상 인터페이스를 제공한다. 그러면 운영 체제는 바이트 스트림을 장치에 읽고 쓰는 데 필요한 실제 변환을 수행한다.[1]

3. 2. 추상 인터페이스

유닉스 운영 체제에서 대부분의 입출력 작업은 장치에서 읽거나 장치에 기록되는 바이트 스트림으로 간주된다. 이 바이트 스트림 모델은 파일 I/O, 소켓 I/O 및 터미널 I/O에 사용되어 장치 독립성을 제공한다. 응용 프로그램 수준에서 장치에 데이터를 읽고 쓰려면, 프로그램은 장치를 여는 함수를 호출한다. 이때 장치는 터미널과 같은 실제 장치일 수도 있고, 네트워크 포트나 파일 시스템의 파일과 같은 가상 장치일 수도 있다. 장치의 물리적 특성은 운영 체제에 의해 매개된다. 이는 프로그래머가 장치에서 바이트를 읽고 쓸 수 있는 추상 인터페이스를 제공한다. 그러면 운영 체제는 바이트 스트림을 장치에 읽고 쓰는 데 필요한 실제 변환을 수행한다.

4. 그래픽스

OpenGL과 같은 대부분의 그래픽스 라이브러리는 추상적인 그래픽 장치 모델을 인터페이스로 제공한다. 라이브러리는 프로그래머가 제공한 명령을 그래픽 요소와 객체를 그리는 데 필요한 특정 장치 명령으로 변환하는 역할을 한다. 플로터와 CRT 모니터에 대한 특정 장치 명령은 다르지만, 그래픽스 라이브러리는 원시 도형을 제공하는 추상 인터페이스를 제공하여 구현 및 장치 종속적인 세부 사항을 숨긴다.[1]

4. 1. 그래픽스 라이브러리

OpenGL과 같은 대부분의 그래픽스 라이브러리는 인터페이스로 추상적인 그래픽 장치 모델을 제공한다. 이러한 라이브러리는 프로그래머가 제공한 명령을 그래픽 요소 및 객체를 그리는 데 필요한 특정 장치 명령으로 변환하는 역할을 수행한다. 플로터에 대한 특정 장치 명령은 CRT 모니터에 대한 장치 명령과는 다르지만, 그래픽스 라이브러리는 그래픽 객체를 그리는 데 일반적으로 유용한 일련의 원시 도형을 제공하는 추상 인터페이스를 제공함으로써 구현 및 장치 종속적인 세부 사항을 숨긴다.

4. 2. 원시 도형

OpenGL과 같은 대부분의 그래픽스 라이브러리는 인터페이스로서 추상적인 그래픽 장치 모델을 제공한다. 라이브러리는 프로그래머가 제공한 명령을 그래픽 요소와 객체를 그리는 데 필요한 특정 장치 명령으로 변환하는 역할을 한다. 플로터에 대한 특정 장치 명령은 CRT 모니터에 대한 장치 명령과 다르지만, 그래픽스 라이브러리는 구현 및 장치 종속적인 세부 사항을 숨기고, 그래픽 객체를 그리는 데 일반적으로 유용한 일련의 원시 도형을 제공하는 추상 인터페이스를 제공한다.[1]

참조

[1] 서적 Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series (Fowler)) Addison-Wesley Professional 2012-03-09
[2] 서적 Beautiful Code: Leading Programmers Explain How They Think O'Reilly and Associates
[3] 트윗 "@drunkcod Yes, that's my corollary :^)" 2012-09-03
[4] 서적 Structured Computer Organization Prentice-Hall
[5] 서적 Foundations of modern networking : SDN, NFV, QoE, IoT, and Cloud https://www.worldcat[...] Prentice-Hall 2016
[6] 서적 Structured Computer Organization Prentice-Hall
[7] 서적 Structured Computer Organization Prentice-Hall



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com