>시스템 튜토리얼 >리눅스 >Linux 아키텍처 및 커널 구조에 대한 자세한 설명

Linux 아키텍처 및 커널 구조에 대한 자세한 설명

WBOY
WBOY앞으로
2024-02-11 10:54:301067검색

Linux 아키텍처

아래 그림과 같이 리눅스 아키텍처는 크게 사용자 공간(User Space)과 커널 공간(Kernel Space)으로 나눌 수 있습니다.

Linux 아키텍처 및 커널 구조에 대한 자세한 설명

사용자 공간에는 C 라이브러리와 사용자 애플리케이션이 포함됩니다. 물론 일부 아키텍처 다이어그램에는 셸 스크립트도 Linux 시스템의 필수 부분입니다.

커널 공간에는 하드웨어 플랫폼, 플랫폼 종속 코드, 커널 및 시스템 호출 인터페이스가 포함됩니다.

모든 최신 운영 체제에는 레이어가 있습니다. 레이어링은 왜 필요한가? 프로그래머의 관점에서 볼 때, Linux 기반과 애플리케이션을 분리하면 각각이 자신의 영역에 집중할 수 있어 효율성이 향상됩니다. 보안 관점에서 계층화는 커널을 보호하는 것입니다. 최신 CPU는 일반적으로 다양한 작업 모드를 구현합니다. 예를 들어 ARM은 7가지 작업 모드를 구현하며, 다양한 모드에서 CPU는 다양한 명령어를 실행하거나 다양한 레지스터에 액세스할 수 있습니다. 모든 상위 계층 응용 프로그램이 마음대로 레지스터를 호출할 수 있다면 운영 체제는 안정적으로 실행될 수 없습니다. 따라서 운영 체제에는 "현대 운영 체제"라는 새로운 원칙이 등장했습니다.

X86 아키텍처에서는 Ring0에서 Ring3까지 4가지 수준의 권한이 구현됩니다. Ring0 권한에서는 권한 있는 명령을 실행할 수 있고 IO 장치에 액세스할 수 있는 반면, Ring3 권한에서는 많은 제한 사항이 있습니다.

Android는 더욱 "미친" 상태입니다. 모든 APK 애플리케이션은 Java 가상 머신에서 실행되며 애플리케이션은 하위 계층에서 더 멀리 떨어져 있습니다.

또한, 사용자 공간과 커널 공간은 프로그램 실행의 두 가지 다른 상태입니다. "시스템 호출"과 "하드웨어 인터럽트"를 통해 사용자 공간에서 커널 공간으로의 전송을 완료할 수 있습니다.

Linux 커널 구조

이 섹션에서는 커널 구조를 분석합니다.

아래 그림과 같이 리눅스 커널 구조도입니다.

Linux 아키텍처 및 커널 구조에 대한 자세한 설명

SCI 계층(시스템 호출 인터페이스), 이 계층은 애플리케이션 사용자 공간이 Linux에 액세스할 수 있도록 표준 시스템 호출 기능 세트를 제공합니다. 이전에 Linux 아키텍처를 분석할 때 최신 운영 체제에서는 상위 계층 응용 프로그램이 하위 계층에 직접 액세스하는 것을 허용하지 않는다는 점을 소개했습니다. Linux에서 커널은 상위 계층 응용 프로그램이 1층에 액세스할 수 있는 일련의 표준 인터페이스를 제공합니다. .

PM(Procees Management) 이 부분에는 구체적으로 프로세스 생성(fork, exec), 프로세스 중지(kill,exit), 이들 간의 통신 제어(signal 등)가 포함됩니다. 또한 활성 프로세스가 CPU를 공유하는 방법을 제어하는 ​​프로세스 스케줄링도 포함됩니다. 이 부분은 이미 Linux에서 수행되었습니다. 드라이버를 작성할 때 프로세스 생성, 프로세스 통신 등과 같은 기능을 구현하려면 해당 기능만 호출하면 됩니다.

MM(Memory Management), 메모리 관리의 주요 기능은 여러 프로세스의 안전한 공유 메모리 영역을 제어하는 ​​것입니다.

가상 파일 시스템인 VFS(Virtual File Systems)는 다양한 파일 시스템의 구체적인 세부 정보를 숨기고 파일 작업을 위한 통합 인터페이스를 제공합니다. Linux에서는 "모든 것이 파일"이며 이러한 파일은 VFS를 통해 구현됩니다. Linux는 모든 파일 시스템 기능 세트를 포함하는 대규모 일반 모델을 제공합니다. 아래 그림과 같이 가상 파일 시스템의 구조도이다.

Linux 아키텍처 및 커널 구조에 대한 자세한 설명

장치 드라이버, 이 부분을 배우고 마스터해야 합니다. Linux 커널의 장치 드라이버 섹션에는 특정 하드웨어 장치를 제어하는 ​​데 사용되는 많은 양의 코드가 있습니다.

Linux 드라이버는 일반적으로 네트워크 장치, 블록 장치, 문자 장치, 기타 장치로 구분되며, 문자 장치만 작성하면 됩니다. 기타 장치는 분류하기가 쉽지 않은 드라이버 유형입니다. 캐릭터 장치.

네트워크 프로토콜 스택인 Linux 커널은 풍부한 네트워크 프로토콜 구현을 제공합니다.

Linux 드라이버를 배우기 전에 Linux 아키텍처와 Linux 커널 구조를 이해하고 마스터해야 합니다

위 내용은 Linux 아키텍처 및 커널 구조에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제