펌웨어와 미들웨어의 관계와 차이점은 무엇입니까?
위키피디아는 말한다
펌웨어는 영구 메모리와 여기에 저장된 프로그램 코드 및 데이터의 조합입니다.[1] 펌웨어가 포함된 장치의 일반적인 예로는 임베디드 시스템(예: 신호등, 가전 제품, 디지털 시계), 컴퓨터, 컴퓨터 주변 장치, 휴대폰 및 디지털 카메라가 있습니다. 이러한 장치에 포함된 펌웨어는 장치에 대한 제어 프로그램을 제공합니다.
미들웨어는 운영 체제에서 사용할 수 있는 것 이상의 서비스를 소프트웨어 응용 프로그램에 제공하는 컴퓨터 소프트웨어입니다. 이는 "소프트웨어 접착제"라고 설명할 수 있습니다.[1] 미들웨어를 사용하면 소프트웨어 개발자가 통신 및 입출력을 더 쉽게 수행할 수 있으므로 애플리케이션의 특정 목적에 집중할 수 있습니다.
하드웨어, 고급 소프트웨어, 운영 체제 등과 관련된 역할의 차이점을 아직도 이해하지 못합니다.
예를 들어,
BIOS 펌웨어는 미들웨어가 아닌가요?
OS용 부트로더는 펌웨어, 미들웨어 또는 일부 소프트웨어입니까?
미들웨어가 아닌 CPU 펌웨어의 명령어 세트입니까?
펌웨어가 아닌 미들웨어가 있습니까?
장치 드라이버와 펌웨어 및 미들웨어의 관계와 차이점은 무엇입니까?
감사해요!
답변1
펌웨어 및 미들웨어는 특정 '일부 코드' 세트를 설명하는 간단한 업계 용어입니다.
펌웨어(wiki에서 설명) '보통'은 '보통' 실행되는 어셈블리 또는 C로 작성된 소프트웨어를 나타냅니다.에/에하드웨어.
'on/the'는 이 소프트웨어가 소프트웨어가 제어할 하드웨어에 직접 연결된 영구 저장 매체(일종의 작은 플래시와 같은)에 상주한다는 것을 나타냅니다. 하드웨어를 실행하기 위해 특별히 설계된 소프트웨어이기 때문에 '펌웨어'라고 합니다.
또한 기술 산업에서는 단어의 진정한 의도가 무엇인지 아무도 알 수 없도록 용어를 만든 다음 왜곡하는 끔찍한 습관이 있기 때문에 일반적으로 이 단어를 인용합니다. '임베디드 프로그래밍'이 현재의 좋은 예입니다. 이 용어는 일반적으로 본질적으로 펌웨어를 개발한 프로그래머(예: 낮은 수준의 ASM/C 하드웨어 개발자)를 지칭했지만, 이후 이 용어는 Android 개발자(예: Java 및 C 수준에서 모두 작동할 수 있는 Linux/커널 개발자)를 포함하도록 변형되었습니다. ). 나는 어떤 종류의 개발자나 개발 관행을 비난하는 것이 아니며(나는 이러한 유형의 개발을 스스로 많이 수행합니다) 단지 기술 산업이 단어를 오용하는 것을 좋아한다는 점을 지적할 뿐입니다.
미들웨어는 그러한 단어의 또 다른 예입니다. 아직 하드웨어 수준 코드 이외의 용도로 사용되는 '펌웨어'를 듣거나 본 적은 없지만 펌웨어에서 .NET/Java에 이르기까지 모든 것에 사용되는 미들웨어는 본 적이 있습니다. 미들웨어는 (개발자로서) 너무 많이 잘못 사용되는 것을 보았기 때문에 일반적으로 의도한 바를 맥락에서 해독할 수 있는 일반적인 용어입니다. 그래서 당신에게 직접 대답하려면:
하드웨어, 고급 소프트웨어, 운영 체제 등과 관련된 역할의 차이점을 아직도 이해하지 못합니다. 펌웨어는 특정 하드웨어에 상주하고 해당 하드웨어를 실행하는 소프트웨어(바이너리 형식으로 변환된 코드)입니다. 미들웨어는 하드웨어(또는 해당 문제에 대한 다른 소프트웨어)와 상호 작용하는 API/라이브러리를 의미하는 데 사용될 수 있습니다.
BIOS 펌웨어는 미들웨어가 아닌가요? 이에 대한 귀하의 견해에 따라 둘 다일 수 있습니다. 기술적으로 BIOS는 펌웨어(하드웨어, 즉 마더보드를 실행하는 데 특별히 사용되는 소프트웨어)이지만, 어떤 방식으로든(OS와 마찬가지로) 하드웨어와 직접 상호 작용하려는 경우 BIOS는 ' 자체 BIOS 및 하드웨어 루틴을 '작성'할 필요가 없기 때문에 미들웨어일 수 있으며 여기서 '미들웨어'의 오용이 발생할 수 있지만 클래식에서는 BIOS가 미들웨어가 아닙니다.
OS용 부트로더는 펌웨어, 미들웨어 또는 일부 소프트웨어입니까? OS용 부트로더는 BIOS(또는 기타 기본 하드웨어 하위 시스템)와 상위 레벨 시스템(일반적으로 OS) 사이에 상주하는 코드 조각으로, 부트 미디어에서 OS가 상주하는 위치를 하위 시스템(예: BIOS)에 알려줍니다. 일반적으로 부트로더는 일반적으로 저장 매체의 특정 위치(예: 처음 수백 바이트 이상)에 위치하며 BIOS는 (산업 표준 덕분에) 부트로더가 인계받는 시점에서 부트로더를 '찾을' 위치를 알고 있습니다. 작성된 작업을 수행합니다(일반적으로 OS 부팅).
부트로더는 펌웨어는 아니지만 기술적으로 펌웨어에 상주할 수 있으며 '미들웨어'인 한 '미들웨어'가 무엇인지/해야 하는지에 대한 '귀하의' 관점에 따라 예 또는 아니요일 수 있습니다. , 부트로더 미들웨어는 더 쉬운 컨텍스트를 제공하지 않으므로 고려하지 않습니다(OS를 작성하지 않는 한).
미들웨어가 아닌 CPU 펌웨어의 명령어 세트입니까? CPU의 명령어 세트는 응용 프로그래밍 인터페이스(API)(미들웨어의 한 형태로 '고려될 수 있음')로 간주되며, CPU(중앙 처리 장치 자체)에는 아무 것도 없기 때문에 펌웨어가 아닙니다. '달리다'; CPU 명령어 세트는 소프트웨어가 CPU가 실행 방법을 '이해'하도록 (어셈블리) '컴파일'되는 것입니다.
펌웨어가 아닌 미들웨어가 있습니까? 예; 여러분이 생각할 수 있는 거의 모든 소프트웨어 프레임워크(예: .NET 또는 Java 라이브러리)는 프로그래머에게 컴퓨터의 다양한 측면과 상호 작용할 수 있는 '더 쉬운' 방법을 제공하므로 미들웨어의 한 형태로 간주될 수 있습니다. 예를 들어 Java를 사용하면 파일을 열고 파일에 쓸 수 있으며 해당 코드가 Java 지원 시스템에서 '작동'하도록 할 수 있습니다. 특정 Java API를 사용하면 서로 다른 시스템에서 파일과 상호 작용하는 몇 줄의 코드를 가질 수 있으므로 개발자가 서로 다른 시스템(Linux/Windows/ Apple 등)이 하드 드라이브의 파일 시스템 및 OS 자체와 상호 작용합니다.
장치 드라이버와 펌웨어 및 미들웨어의 관계와 차이점은 무엇입니까? 장치 드라이버는 OS에 해당 장치와 상호 작용하는 '방법'을 알려주는 OS 수준(일반적으로 '설치된' 라이브러리)에 있는 소프트웨어입니다. 예를 들어 최신 비디오 드라이버를 설치하면 OS가 실제 비디오 카드 자체와 통신하는 데 '사용'하는 소프트웨어를 설치하게 됩니다. 비디오 카드 자체에는 OS에서 제공한 정보(드라이버로 인해)를 해석하는 방법을 알고 이를 사용하여 수행하는 작업(예: 창 또는 게임 스프라이트 그리기)을 수행하는 펌웨어가 있습니다.
장치 드라이버는 OS/하드웨어와 OS를 통해 하드웨어를 사용하려는 사람 사이에 위치하므로 미들웨어(다시 보기에 따라)로 간주될 수 있습니다.
일화: 내 업계 경험에서 나는 '미들웨어'가 '웹 서비스' 또는 이와 유사한 것을 '의미'한다는 것을 발견했습니다(적어도 이 용어를 사용하는 사람이 의미하는 바는 무엇이든). )은 API 및 라이브러리(예: Boost 또는 Spring)에서 C++ STL, 심지어 C# 자체(.NET이 아닌 언어 자체)에 이르기까지 다양한 것을 의미하기 위해 많은 채용 공고 및 인터뷰에서 사용됩니다.
그것이 도움이 되기를 바랍니다.
답변2
BIOS 펌웨어는 미들웨어가 아닌가요?
옳은. 미들웨어는 OS 위에 있으며 OS 서비스를 사용하여 더 높은 수준의 서비스를 제공합니다. BIOS는 OS 아래에 있습니다.
OS용 부트로더는 펌웨어, 미들웨어 또는 일부 소프트웨어입니까?
부트로더는 낮은 수준의 응용 프로그램입니다. 이는 펌웨어(하드웨어가 아닌 플랫폼 특정이기 때문에)나 미들웨어(OS 서비스를 사용하지 않기 때문에)가 아닙니다.
미들웨어가 아닌 CPU 펌웨어의 명령어 세트입니까?
CPU의 명령어 세트는 소프트웨어가 아닙니다. 그래서 그것은 그런 것이 아닙니다. 이는 하드웨어, 마이크로코드 또는 일부 조합으로 구현될 수 있습니다.
펌웨어가 아닌 미들웨어가 있습니까?
미들웨어는 OS에 따라 다르며 펌웨어는 그렇지 않습니다. 펌웨어는 특정 하드웨어용으로 제작되었습니다. 미들웨어는 특정 OS용으로 구축되었습니다.
장치 드라이버와 펌웨어 및 미들웨어의 관계와 차이점은 무엇입니까?
펌웨어는 일반적으로 하드웨어에 내장되어 있으며 해당 하드웨어 자체에서 실행됩니다. 장치 드라이버는 OS의 일부이며 제어하는 하드웨어가 아닌 CPU에서 실행됩니다. 미들웨어는 OS에 특정하며 OS 서비스를 사용하여 하드웨어 제어뿐만 아니라 더 높은 수준의 서비스를 제공합니다.
답변3
소프트웨어
매우 일반적으로 정의되는 소프트웨어는 프로세서에서 실행되어 작업을 수행하도록 지시하는 일련의 명령입니다. 이 정의에 따르면 펌웨어, 미들웨어 및 드라이버도 소프트웨어입니다. 서로 다른 용어는 역할이 크게 다른 세 가지 소프트웨어 클래스를 나타냅니다.
펌웨어
펌웨어는 일반적으로 비휘발성 저장소(예: EEPROM 칩)에 상주하며 다른 시스템 하드웨어를 부트스트래핑(사용 가능하게 만들기) 및/또는 운영 체제와 같은 "상위 수준" 소프트웨어를 위해 해당 하드웨어에 소프트웨어 인터페이스를 제공하는 일을 담당하는 소프트웨어입니다. 체계.
예를 들어 PC BIOS(또는 Mac의 EFI 환경)는 모두 비휘발성 스토리지(일반적으로 마더보드 IIRC의 칩)에 상주하고 하드웨어 초기화의 일부 측면을 담당하므로 펌웨어로 간주될 수 있습니다. 2단계 부트로더 또는 운영 체제 커널이 로드되는 디스크와 같은 하드웨어와 통신하기 위해 BIOS에서 제공하는 기능을 사용할 수 있는 다른 소프트웨어(예: 부트로더)의 로드입니다.
운전사
드라이버는 특정 운영 체제용 시스템 하드웨어에 대한 인터페이스를 제공하는 소프트웨어입니다. 예를 들어 Windows 일반 키보드 드라이버는 키보드가 모든 표준 키에 대해 보내는 신호를 이해하고, 이러한 신호를 받으면 Windows가 이해하는 방식으로 운영 체제에 신호를 제공합니다. 또한 비표준 키가 있는 멋진 키보드가 있는 경우 일반 키보드 드라이버는 이러한 비표준 키를 이해하지 못하기 때문에 이러한 키를 활성화하는 드라이버가 포함됩니다.미들웨어
미들웨어는 두 개의 다른 소프트웨어 비트 사이에 위치하여 둘 사이의 중개자 역할을 하며 일반적으로 둘 사이의 통신을 용이하게 하는 소프트웨어 유형입니다.예를 들어 게임 엔진은 클라이언트 애플리케이션(게임)과 게임이 활용할 수 있는 운영 체제에서 제공하는 다양한 서비스 사이에 위치하므로 미들웨어로 간주될 수 있습니다.
- 그래픽 서비스(Windows용 DirectX 또는 Windows, Mac, Linux 등)용 OpenGL
- 사운드 서비스(Windows용 DirectSound/Windows Audio, Mac용 Core Audio)
- 네트워킹 서비스(DirectPlay 또는 Windows용 Windows 소켓)
게임이 게임 엔진을 사용하는 경우 관련 운영 체제 서비스에 직접 요청하는 대신 엔진에 수행하려는 작업을 수행하도록 요청합니다.
미들웨어 계층을 통해 서비스를 사용하는 것의 주요 이점은 서비스를 사용하는 애플리케이션이 서비스 작동 방식의 세부 사항에 관심을 가질 필요가 없다는 것입니다. 따라서 게임 개발자는 엔진이 예를 들어 삼각형을 그리는 작업을 수행하도록 할 수 있으며 다음 작업을 수행할 수 있습니다. 그리기를 수행하는 실제 서비스가 실제로 프로그래밍 관점에서 크게 다를 수 있다는 사실에도 불구하고 Windows와 Mac에서 삼각형이 동일하게 그려질 것이라고 합리적으로 확신할 수 있습니다.