Linux 아키텍처에 대해 자세히 알아볼 수 있는 리소스가 있습니까? [폐쇄]

Linux 아키텍처에 대해 자세히 알아볼 수 있는 리소스가 있습니까? [폐쇄]

저는 Linux 파일 계층 구조와 운영 체제가 더 깊은 수준에서 작동하는 방식을 이해하고 싶습니다. 배울 수 있는 전자책이나 웹페이지가 있나요?

답변1

Linux 파일/디렉토리 계층 구조는 다음으로 구성됩니다.파일 계층 표준또는 FHS.

운영 체제가 "더 깊은" 수준에서 작동하는 방식은 더 복잡한 주제입니다. 일반적으로 표면 계층은 사용자 명령입니다. 주로 매뉴얼 페이지의 1장 섹션에서 다루는 /bin 및 /usr/bin 디렉토리의 명령입니다. 다음 레벨은 Linux를 포함한 대부분의 UNIX 시스템에서 3장에서 다루는 표준 라이브러리 기능 및 인터페이스(프로그래밍 용어)입니다. 시스템 수준 유틸리티는 /sbin 및 /usr/sbin에 있으며 매뉴얼 8장에 설명되어 있으며 구성 파일은 /etc에 저장되어 있으며 5장 매뉴얼 페이지에 설명되어 있습니다.

다음으로 낮은 세부 수준은 시스템 호출 인터페이스입니다. 이에 대해서는 섹션 2/2장의 매뉴얼 페이지에서 다룹니다. 시스템 호출은 커널의 함수입니다. 호출 방법에 대한 자세한 내용은 대부분 C 프로그래밍 라이브러리(libc --- 필수 Linux 시스템에서 glibc로 제공됨 --- C용 GNU lib)에서 제공됩니다.

커널 자체는 C로 작성되었지만 닭과 달걀의 문제를 생각해 보면 libc에 연결되어 있지 않습니다. 따라서 커널은 C 라이브러리가 의존하는 기능을 제공합니다. "ls" 명령, 셸, 편집기, 실제로 소스 코드를 실행 중인 프로그램으로 변환하는 데 사용되는 컴파일러 및 링커와 같은 사용자 공간 프로그램은 모두 이러한 C 라이브러리에 대해 연결됩니다. (C 라이브러리가 자체 구현으로 시스템 호출을 "래핑"하는 것도 일반적입니다. 이는 시스템 호출과 이름은 같지만 어느 정도 이식성을 제공하며 디버깅, 추적 또는 오류 처리를 위한 후크를 추가할 수도 있습니다.)

물론 가장 깊은 세부 수준은 커널 소스 코드 자체입니다. 이 파일은 커널이 구현하는 내용을 정확하게 문서화합니다. 예를 들어, 커널이 "init" 프로세스로 찾아서 실행하려고 하는 위치와 파일 이름 목록을 정확히 보려면 ​​init/main.c에서 볼 수 있습니다.

몇 년 전 나는 가이드 투어와 강의가 포함된 일련의 커널 소스 코드 학습 과정을 구성하는 데 간단하고 무심코 참여했으며 이를 이해하기 위한 온라인 학습 가이드를 만들었습니다. 일부 내용은 다음 페이지에 문서화되어 있습니다.Wikiversity: Linux 커널 소스 코드 읽기. 호기심이 많고 스스로 동기를 부여받은 독자가 시작하도록 돕는 몇 가지 유용한 토론도 있습니다. (그러나 실제로 연구하려면 C 소스 코드를 읽을 수 있어야 하고 일부 인라인 어셈블리를 알아야 할 수도 있습니다.)

진짜 질문은 아나운서가 보통 곤경에 처한 사람들에게 "어떻게 쿠쿠?"라고 외치는 것입니다.

답변2

관련 정보