Unix의 아키텍처는 동심원 고리처럼 보이지만 Windows의 아키텍처는 직사각형입니다. 왜 이런 일이 발생합니까? 이러한 차이가 발생하는 구체적인 이유는 무엇입니까?
답변1
흔히 다음과 같이 불리는 다중 수준 보호 도메인의 개념보호 링에 의해멀티플렉스 시스템운영 체제. 원래 Multics 시스템에는 8개의 링이 있었지만 최신 시스템에는 더 적은 수의 링이 있었습니다. 또 다른 차이점은 Multics에서는 링 변환이 소프트웨어에서 발생하는 반면, 많은 최신 CPU 아키텍처에는 특정 형태의 링 보호 하드웨어 지원이 포함되어 있다는 것입니다. 예를 들어 x86 아키텍처는 4개의 보호 링을 지원합니다.
Windows NT나 Unix는 주로 다른 하드웨어 아키텍처와의 호환성을 유지하기 위해 x86 아키텍처의 환경 보호 지원을 최대한 활용하지 않습니다. 둘 다윈도우그리고리눅스링 0은 커널 모드에 해당하고 링 3은 사용자 모드에 해당하는 두 개의 링만 사용됩니다. 일반적으로 이런 상황이 자주 발생합니다.모놀리식 코어 아키텍처, 커널은 권한 있는(수퍼유저 모드라고 함) 장치 드라이버와 함께 실행되는 반면, 애플리케이션은 권한 없는 사용자 모드에서 실행됩니다.
답변2
나는 당신이 Maurice J. Bach의 책에 나오는 아키텍처 다이어그램을 생각하고 있다고 생각합니다.UNIX 운영 체제 설계.
Windows에서도 비슷한 다이어그램을 쉽게 그릴 수 있습니다.
개인적으로 이 사진은 잘못됐다고 생각합니다. 즉, 안쪽에서 바깥쪽으로.
그 이유는 다음과 같습니다. 드라이버와 같은 낮은 수준의 항목은 시스템 내부에 배치하고 높은 수준의 애플리케이션은 외부에 배치합니다. 사실 이 다이어그램의 핵심은 하드웨어입니다.
그러나 실제로 장치가 외부 세계와 상호 작용하기 때문에 낮은 수준의 항목은 외부로 간주되어야 합니다.
그러나 문제가 있습니다.
사실은 중앙에 속하는 '중간' 코드이다. 이것이 바로 이 블록 다이어그램이 의미가 있는 이유입니다. 예를 들어, 함수 호출 방향을 살펴보면 함수 호출 체인의 상단이 그래프 외부에 있기를 원합니다.
상단은 어디에 있습니까? 위의 내용은 main
애플리케이션의 기능입니다. 각 스레드의 시작 기능에도 있고... 커널의 인터럽트 스케줄러도 최상위 루틴에 있습니다. 대략적으로 말하면 이들 중 어느 것이든 반대 방향에서 커널 깊숙이 호출할 수 있습니다.
계층화된 블록 다이어그램이 가장 적합합니다. 그들은 어떤 의미에서 모두 "외부"인 반대편 상단 레이어를 제시하고 중앙의 샌드위치를 따릅니다.
어쨌든 요점은 이 모든 다이어그램이 Unix나 Windows는 물론 다른 많은 시스템에서도 사용될 수 있다는 것입니다.