저는 리눅스를 처음 접했습니다. 나는 여기 있는 모든 사람들이 Dennis Ritchie의 기본 Unix 계층 구조인 커널, 셸, 유틸리티를 알고 있다고 생각합니다.
서버 패키지(예: LAMP)가 커널이나 해당 셸(서비스)의 일부가 아니라고 가정하면 실제로 어떤 계층에 위치합니까?
나는 이것들을 제어하기 위한 자체 유틸리티가 있기 때문에 유틸리티라고 말하지 않을 것입니다(셸 터미널이나 셸 GUI에서는 유틸리티 자체입니다).
그래서 저는 서버 소프트웨어가 실제로 쉘/유틸리티 계층 "사이" 어딘가에 있다는 결론에 도달했습니다. Ritchie의 계층 구조를 따른다면 이것이 옳다고 생각하십니까?
답변1
커널과 사용자(사용자=비커널)의 차이점은 매우 분명합니다. 인터페이스가 다르고 프로세서 모드가 다르며...
사용자 도메인 내에서의 추가 분리는 덜 명확합니다. 쉘은 다른 프로그램을 실행하는 역할을 하는 프로그램입니다. 이 정의에 따르면 웹 서버는 목적에 따라 셸일 수도 있고 아닐 수도 있습니다. 정적 파일을 제공하는 웹 서버는 셸이 아니며 웹 응용 프로그램을 실행하는 웹 서버는 셸입니다.
내 조언은 이 계층 구조를 너무 심각하게 받아들이지 말라는 것입니다. 이는 특정 상황(1970년대 초반 컴퓨터의 일반적인 경우)에서는 의미가 있지만 보편적으로 유용한 개념은 아닙니다.
답변2
저는 Ritchie의 레이어링에 익숙하지 않지만 일반적으로 한 레이어가 다른 레이어에 종속되는 경우 별도의 레이어에 넣습니다. UNIX/Linux에서는 모든 것이 커널에 의존하므로 쉘/유틸리티/서버보다 한 계층 아래에 있어야 합니다. 그러나 웹 서버와 셸은 서로 독립적입니다(대부분의 경우 서비스 시작/중지에도 셸이 필요함). 일반적으로 레이어링은 주관적인 구조화 메커니즘이며 항상 하나의 정답이 있는 것은 아닙니다.