리눅스 커널의 하위 시스템은 무엇입니까?
Linux 커널에는 5개의 하위 시스템이 있습니다: 1. SCHED(프로세스 스케줄링 제어 시스템) 2. 주요 기능은 여러 프로세스를 제어하여 메인 메모리 영역을 안전하게 공유하는 것입니다. VFS), 4. 네트워크 인터페이스(NET), 5. 프로세스 간 통신(IPC).
이 튜토리얼의 운영 환경: Ubuntu 16.04 시스템, Dell G3 컴퓨터.
커널:
컴퓨터 과학에서는 소프트웨어에서 발행한 데이터 I/O(입력 및 출력) 요구 사항을 관리하고 이러한 요구 사항을 데이터 처리 명령으로 변환하여 중앙 프로세서(CPU)에 전달하는 데 사용되는 컴퓨터 프로그램입니다. ) 및 컴퓨터의 기타 전자 부품은 현대 운영 체제의 가장 기본적인 부분입니다. 이는 많은 응용 프로그램에 대해 컴퓨터 하드웨어에 대한 보안 액세스를 제공하는 소프트웨어입니다. 이러한 액세스는 제한되어 있으며, 커널은 프로그램이 하드웨어의 특정 부분에서 작동할 수 있는 시기와 기간을 결정합니다. 하드웨어에서 직접 작업하는 것은 매우 복잡합니다. 따라서 커널은 일반적으로 이러한 작업을 완료하기 위한 하드웨어 추상화 방법을 제공합니다. 프로세스 간 통신 메커니즘과 시스템 호출을 통해 애플리케이션 프로세스는 필요한 하드웨어 리소스(특히 프로세서 및 IO 장치)를 간접적으로 제어할 수 있습니다.
리눅스 커널의 하위 시스템은 무엇인가요?
리눅스 커널은 주로 프로세스 스케줄링(SCHED), 메모리 관리(MM), 가상 파일 시스템(VFS), 네트워크 인터페이스(NET) 및 상호 연결로 구성됩니다. 프로세스 통신(IPC) 아래 그림과 같이 5개의 하위 시스템으로 구성됩니다.
1. 프로세스 스케줄링
프로세스 스케줄링은 시스템의 여러 프로세스가 CPU에 액세스하는 것을 제어하므로 CPU에서 여러 프로세스가 "마이크로 직렬 및 매크로 병렬"로 실행될 수 있습니다. . 프로세스 스케줄링은 시스템의 중심에 있으며 각 하위 시스템은 프로세스를 일시 중지하거나 재개해야 하기 때문에 커널의 다른 하위 시스템은 이에 의존합니다.
아래 그림에 표시된 것처럼 Linux 프로세스는 여러 상태 간에 전환됩니다.
Linux 프로세스 상태 전환
장치 드라이버 프로그래밍에서 요청된 리소스가 충족되지 않으면 드라이버는 일반적으로 다른 프로세스를 실행하도록 예약하고 요청한 리소스가 해제될 때까지 이 프로세스를 절전 상태로 전환합니다. 그리고 준비 상태로 들어갑니다. 수면은 중단 가능한 수면과 무중단 수면으로 구분됩니다. 둘의 차이점은 인터럽트 가능한 수면은 신호를 받으면 깨어난다는 것입니다.
완전히 TASK_UNINTERRUPTIBLE 상태인 프로세스는 "종료"될 수도 없으므로 Linux 2.6.26 이후의 커널에도 "TASK_WAKEKILL|TASK_UNINTERRUPTIBLE"과 동일한 TASK_KILLABLE 상태가 있으며 치명적인 신호에 응답할 수 있습니다.
Linux 커널에서는 task_struct 구조(include/linux/sched.h)가 프로세스를 설명하는 데 사용됩니다. 이 구조에는 메모리 리소스, 파일 시스템 리소스, 파일 리소스, tty 리소스, 신호 처리 등을 설명하는 포인터가 포함되어 있습니다. . Linux 스레드는 경량 프로세스 모델을 사용하여 구현됩니다. 스레드가 pthread_create() API를 통해 사용자 공간에 생성되면 기본적으로 커널은 새 task_struct를 생성하고 새 task_struct의 모든 리소스 포인터를 이를 생성한 리소스로 가리킵니다. task_struct의 포인터.
대부분의 프로세스(및 프로세스의 여러 스레드)는 기본 리소스 및 하드웨어 액세스에 대한 요구 사항이 있는 경우 사용자 공간 응용 프로그램에 의해 생성되며 시스템 호출을 통해 커널 공간에 들어갑니다. 때때로 커널 프로그래밍에서 여러 작업을 동시에 실행해야 하는 경우 커널 스레드가 시작될 수 있으며 이러한 스레드에는 사용자 공간이 없습니다. 커널 스레드를 시작하는 함수는 다음과 같습니다: pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
2 메모리 관리
메모리 관리의 주요 기능은 제어하는 것입니다. 여러 프로세스가 공유하는 주 메모리 영역의 보안. Linux 메모리 관리는 CPU가 메모리 관리 장치(MMU)를 제공할 때 각 프로세스에 대해 가상 메모리에서 실제 메모리로의 변환을 완료합니다. Linux 2.6에서는 MMU 없는 CPU에 대한 지원이 도입되었습니다.
그림에서 볼 수 있듯이 일반적으로 32비트 프로세서에서 Linux의 각 프로세스는 4GB의 메모리 공간을 사용하며 0~3GB는 사용자 공간에 속하고 3~4GB는 커널 공간에 속하며 커널 공간은 일정한 영향을 미칩니다. 일반 메모리와 I/O에서는 장치 메모리와 고급 메모리가 다르게 처리됩니다. 커널 공간과 사용자 공간 사이의 특정 경계는 커널 구성 옵션인 커널 기능→메모리 분할에서 조정될 수 있습니다. 경계는 2GB 또는 3GB로 설정할 수 있습니다.
Linux 프로세스 주소 공간
위 그림에서 볼 수 있듯이 Linux 커널의 전반적인 메모리 관리는 각 페이지의 점유를 관리하는 데 사용되는 기본 Buddy 알고리즘, 커널 공간 및 사용자 공간에서 C 라이브러리의 보조 관리. 또한 커널은 메모리를 사용하여 디스크를 캐시하는 페이지 캐시 지원도 제공하며, 지원 장치별 정보 플러셔 스레드는 더티 페이지 캐시를 디스크로 다시 플러시하는 데 사용됩니다. Kswapd(스왑 프로세스)는 Linux에서 페이지 재활용(파일 지원 페이지 및 익명 페이지 포함)에 사용되는 커널 스레드로, 메모리 재활용을 위해 LRU(최근 사용) 알고리즘을 사용합니다.
3. 가상 파일 시스템
그림과 같이
Linux 가상 파일 시스템
Linux 가상 파일 시스템은 다양한 하드웨어의 구체적인 내용을 숨기고 모든 기기에 통일된 인터페이스를 제공합니다. . 또한 각 특정 파일 시스템과 독립적이며 다양한 파일 시스템을 추상화한 것입니다. 이는 상위 계층 애플리케이션을 위한 통합된 vfs_read(), vfs_write() 및 기타 인터페이스를 제공하고 특정 기본 파일 시스템 또는 장치 드라이버에 구현된 file_Operations 구조의 멤버 함수를 호출합니다.
4. 네트워크 인터페이스
네트워크 인터페이스는 다양한 네트워크 표준에 대한 액세스를 제공하고 다양한 네트워크 하드웨어를 지원합니다. 그림 3.8에서 볼 수 있듯이 Linux의 네트워크 인터페이스는 네트워크 프로토콜과 네트워크 드라이버로 나눌 수 있으며, 네트워크 프로토콜 부분은 가능한 모든 네트워크 전송 프로토콜을 구현하는 역할을 합니다. 장치에는 해당 장치 드라이버가 있습니다.
Linux 네트워크 아키텍처
Linux 커널은 인터넷, UNIX, CAN, NFC, Bluetooth, WiMAX, IrDA 등과 같은 다양한 유형의 프로토콜 스택을 지원합니다. 상위 계층 응용 프로그램은 소켓 인터페이스를 균일하게 사용합니다.
5. 프로세스 간 통신
프로세스 간 통신은 프로세스 간 통신을 지원합니다. Linux는 세마포어, 공유 메모리, 메시지 대기열, 파이프, UNIX 도메인 소켓 등을 포함한 다양한 프로세스 간 통신 메커니즘을 지원합니다. 여러 프로세스, 여러 리소스에 대한 상호 배타적 액세스, 프로세스 간 동기화 및 메시지 전달을 지원합니다. 실제 Linux 응용 프로그램에서 사람들은 System V IPC의 메시지 대기열 및 기타 메커니즘보다는 UNIX 도메인 소켓을 사용하는 경향이 있습니다. Android 커널에는 새로운 Binder 프로세스 간 통신 방법이 추가되었습니다.
Linux 커널의 5개 구성 요소 간의 종속성은 다음과 같습니다.
프로세스 스케줄링과 메모리 관리 간의 관계: 이 두 하위 시스템은 서로 종속되어 있습니다. 다중 프로그램 환경에서 프로그램을 실행하려면 프로세스를 생성해야 합니다. 프로세스를 생성할 때 가장 먼저 해야 할 일은 프로그램과 데이터를 메모리에 로드하는 것입니다.
프로세스 간 통신과 메모리 관리의 관계: 프로세스 간 통신 하위 시스템은 공유 메모리 통신 메커니즘을 지원하기 위해 메모리 관리에 의존합니다. 이 메커니즘을 통해 두 프로세스는 자신의 개인 공간을 가질 뿐만 아니라 액세스도 할 수 있습니다. 공통 메모리 영역.
가상 파일 시스템과 네트워크 인터페이스의 관계: 가상 파일 시스템은 네트워크 인터페이스를 사용하여 NFS(Network File System)를 지원하고 메모리 관리를 사용하여 RAMDISK 장치를 지원합니다.
메모리 관리와 가상 파일 시스템의 관계: 메모리 관리는 가상 파일 시스템을 사용하여 스와핑을 지원하며 스와핑 프로세스는 스케줄러에 의해 정기적으로 예약되므로 메모리 관리는 프로세스 스케줄링에 의존합니다. 프로세스가 액세스하는 메모리 맵이 스왑 아웃되면 메모리 관리는 가상 파일 시스템에 요청을 보내는 동시에 현재 실행 중인 프로세스를 일시 중지합니다.
이러한 종속성 외에도 커널의 모든 하위 시스템도 일부 공통 리소스에 의존합니다. 이러한 리소스에는 메모리 공간 할당 및 해제 기능, 경고 또는 오류 메시지 출력 기능, 시스템에서 제공하는 디버깅 인터페이스 등 모든 하위 시스템에서 사용하는 API가 포함됩니다.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 리눅스 커널의 하위 시스템은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











운영 체제의 핵심 부분인 Linux 커널은 하드웨어 자원 관리 및 시스템 호출 제공과 같은 중요한 기능을 담당합니다. 이 기사에서는 프로세스 관리, 파일 시스템, 네트워크 통신, 장치 드라이버 및 메모리 관리를 포함하여 Linux 커널의 다섯 가지 주요 부분을 살펴보고 자세한 소개와 코드 예제를 제공합니다. 1. 프로세스 관리 프로세스 생성 Linux 커널에서 프로세스 생성은 fork() 시스템 호출을 통해 구현됩니다. 다음은 간단한 예제 코드입니다: #include

이전 기사에서는 RISC-V Linux 시작을 위한 페이지 테이블 생성을 분석했습니다. RISC-V Linux 항목 주소는 2M 정렬되어야 한다고 언급되었습니다. 오늘은 2M 정렬 문제를 해결하는 방법이나 일부를 최적화하는 방법에 대해 설명하겠습니다. 기억.

내용이 길고 기술적인 내용이 많기 때문에 클릭해서 따라가시면 길을 잃을 염려가 없습니다. 서문: Linux 커널 이해하기 컴퓨터 시스템은 하드웨어와 소프트웨어의 공생체이며 상호 의존적이며 분리될 수 없습니다. 컴퓨터 하드웨어 Linux 커널 이식 단계에는 컴퓨터 실린더를 구성하는 주변 장치, 프로세서, 메모리, 하드 드라이브 및 기타 전자 장치가 포함됩니다. 그리고 이를 작동하고 제어하는 소프트웨어가 없으면 자체적으로 작동할 수 없습니다. 이러한 제어 작업을 완료하는 소프트웨어를 Linux 용어로 "커널" 또는 "코어"라고 합니다. Linux 커널의 주요 모듈(또는 구성 요소)은 스토리지 관리, CPU 및 프로세스 관리, 파일 시스템, 장치 관리 및 드라이버, 네트워크 통신 Linux 포럼, 시스템 등의 부분으로 나뉩니다.

안녕하세요, 독자 여러분! 여기서 저는 Linux 커널 TCP 프로토콜 스택의 개발 및 최적화 분야에서 전문적인 기술을 바탕으로 수석 네트워크 엔지니어로서 축적한 귀중한 경험과 기술을 여러분과 공유하게 된 것을 영광으로 생각합니다. 이 글을 통해 우리는 서로 배우고 토론할 수 있으며, 이 분야에 큰 관심을 가지고 있거나 관련 작업을 하고 있는 여러분에게 실용적이고 유용한 참고 자료를 제공할 수 있다고 믿습니다. 1. TCP 연결 설정 TCP 연결 설정은 TCP 프로토콜 스택의 핵심 트랜잭션이지만 많은 연결 문제에 직면하는 것은 드문 일이 아닙니다. 신중하게 고려하고 세부적으로 디버깅한 후 SYN 플러딩 공격 방지(시스템 매개변수 조정) 및 네트워크 정체 처리(즉, TCPFastOp 사용)를 포함하여 몇 가지 일반적이고 실제적인 문제와 해결 방법을 발견했습니다.

Linux 커널이 컴퓨터 운영 체제에서 중요한 역할을 한다는 관점을 논의합니다. Linux 커널 설계 및 실제 응용 프로그램에 대한 심층적인 분석을 통해 이 분야에서 Linux 커널의 탁월한 위치와 영향력을 드러냅니다. 1. 최적화된 메모리 관리 가상 메모리 관리 기술을 사용하여 Linux 커널은 메모리 할당 및 재활용을 효율적으로 완료할 수 있습니다. 교체 페이지 알고리즘의 도움으로 Linux 커널은 물리적 메모리와 가상 메모리 간의 매핑 관계를 정확하게 처리하도록 설계 및 구현되었습니다. 애플리케이션의 특정 요구 사항에 따라 유연하게 조정할 수 있으므로 전체 시스템 성능이 향상됩니다. 2. 강력한 프로세스 관리 커널은 뛰어난 멀티 태스킹 기술을 사용하여 단일 시스템에서 여러 프로세스가 조화롭게 공존할 수 있도록 합니다. 신중하게 구성됨

이것은 Linux 커널 소스 코드 배포를 심층적으로 탐구하는 1500 단어 분량의 기사입니다. 제한된 공간으로 인해 Linux 커널 소스 코드의 조직 구조에 중점을 두고 독자의 이해를 돕기 위해 몇 가지 구체적인 코드 예제를 제공합니다. Linux 커널은 소스 코드가 GitHub에서 호스팅되는 오픈 소스 운영 체제 커널입니다. 전체 Linux 커널 소스 코드 배포판은 매우 방대하며 여러 하위 시스템 및 모듈과 관련된 수십만 줄의 코드를 포함합니다. Linux 커널 소스 코드를 더 깊이 이해하려면

Android 시스템과 Linux 커널은 밀접하게 관련된 두 개체이며, 둘 사이의 관계는 밀접하고 복잡합니다. Android 시스템에서 Linux 커널은 Android 시스템에 대한 기본 하드웨어 드라이버 및 시스템 호출 지원을 제공하는 중요한 역할을 합니다. 이 기사에서는 Android 시스템과 Linux 커널 간의 관계, 상호 작용 및 작동 방식을 살펴보고 몇 가지 구체적인 코드 예제를 제공합니다. 안드로이드(Android)는 리눅스 커널을 기반으로 개발된 모바일 운영체제로 스마트폰, 태블릿 등 모바일 기기에 주로 사용된다. 엘

Linux 커널은 운영 체제의 핵심이며 CPU, I/O 장치, 물리적 메모리 및 파일 시스템과 같은 시스템 리소스에 대한 액세스를 제어합니다. 부팅 과정과 시스템이 실행되는 동안 커널은 커널 링 버퍼에 다양한 메시지를 씁니다. 이러한 메시지에는 시스템 작동에 대한 다양한 정보가 포함됩니다.
