>  기사  >  운영 및 유지보수  >  리눅스 커널에 main 함수가 있나요?

리눅스 커널에 main 함수가 있나요?

百草
百草원래의
2023-07-10 10:09:041787검색

리눅스 커널 코드의 맨 위에 메인 함수가 있기 때문에 리눅스 커널에도 메인 함수가 있습니다. 주요 기능은 주로 KCB(커널 제어 블록)에서 시스템의 환경 변수를 가져오고 시스템에 필요한 모듈을 초기화하는 일을 담당합니다. main 함수는 프로그램의 진입점입니다. Main은 응용 프로그램과 운영 체제 간에 합의된 인터페이스 이름이므로 Linux에서 각 응용 프로그램의 첫 번째 기능은 main이어야 합니다.

리눅스 커널에 main 함수가 있나요?

이 기사의 운영 환경: Linux 5.18.14 시스템, DELL G3 컴퓨터.

Linux 커널에는 주요 기능이 있습니다. 주요 기능은 프로그램의 진입점입니다. Main은 응용 프로그램과 운영 체제 간에 합의된 인터페이스 이름이므로 Linux에서 각 응용 프로그램의 첫 번째 기능은 main이어야 합니다.

Linux 커널은 운영 체제의 핵심이며 드라이버 실행, 시작 작업, 오류 처리, 메모리 관리 및 시스템 운영 체제의 기타 기본 기능을 담당합니다. 이 기사에서는 Linux 커널의 중요한 주요 기능을 소개합니다.

주요 기능은 Linux 커널 코드 상단에 있습니다. 주요 기능은 주로 KCB(Kernel Control Block)에서 시스템의 환경 변수를 가져오고 시스템에 필요한 모듈(메모리 관리, 장치 드라이버 등)을 초기화하는 일을 담당합니다.

C 언어에서는 기본 함수가 두 개의 매개변수만 가질 수 있다고 규정합니다. 하나는 argc이고 다른 하나는 argv입니다. 그리고 argc는 정수만 될 수 있고 두 번째 매개변수는 문자열에 대한 포인터 배열이어야 합니다

주 함수는 매개변수를 사용할 수 없기 때문입니다. 다른 함수 호출에 의해 사용되므로 프로그램 내부에서 실제 값을 얻는 것이 불가능합니다. 그렇다면 실제 매개변수 값을 주 기능의 형식 매개변수에 할당하는 위치는 어디입니까? 실제로 주 기능의 매개변수 값은 운영 체제 명령줄에서 가져옵니다. 실행 파일을 실행하려면

DOS 프롬프트에서 파일 이름을 입력한 다음 실제 매개변수를 입력하여 이러한 실제 매개변수를 main의 형식 매개변수로 전송합니다. DOS 프롬프트에서 명령줄의 일반적인 형식은 다음과 같습니다.

C:>실행 파일 이름 매개변수 매개변수... 그러나 main의 두 형식 매개변수가 동일하지 않다는 사실에 특별한 주의를 기울여야 합니다. 해당

argc: 매개변수는 명령줄의 매개변수 수를 나타냅니다(텍스트 이름 자체도 매개변수임).

rgc 값은 시스템에 의해 자동으로 할당됩니다. 명령줄 입력 시 매개변수의 실제 개수에 따라

argv: 매개변수는 문자열 포인터의 배열이고, 각 요소의 값은 명령줄에 있는 각 문자열의 첫 번째 주소입니다(매개변수는 문자열로 처리됩니다). . 포인터 배열의 길이

는 매개변수의 개수입니다. 배열 요소의 초기 값은 시스템

Linux 커널 소스 코드 분석

1에 의해 자동으로 할당됩니다. 이 문장은 맞습니다. 불변의 법칙이 아니라 단지 관습일 뿐입니다! 프로그램의 보다 필수적인 어셈블리 코드로 판단하면 어셈블리가 초기화된 후 "main"이라는 레이블로 이동한다는 점에만 동의합니다. 예를 들어 C 언어 항목의 이름도 바꿀 수 있다는 의미입니다. Linux의 경우 start_kernel( )입니다. 이 레이블 주소에서 C 언어의 세계는 끝났습니다. 메인이라는 이름은 단지 모두의 합의 때문일 뿐입니다. 애플의 충전 케이블이나 다른 것들이 다른 것과 마찬가지로, 그 합의를 따르지 않더라도 장난을 쳐도 괜찮습니다.

2. 컴파일 중에는 여러 주요 기능이 없습니다! 각 애플리케이션에는 기본 기능이 있지만(애플리케이션의 관점에서 보면 애플리케이션의 진입점이 기본 기능임) 애플리케이션은 독립적으로 컴파일되며 함께 컴파일되지 않으며 운영 체제 커널이 실행될 가능성은 훨씬 적습니다. 함께 컴파일됩니다! 따라서 여러 메인 사이에 충돌이 전혀 없습니다! ! 운영 체제와 응용 프로그램 간의 통합 인터페이스일 수도 있고, main이 프로그램 진입점이라는 말의 부작용일 수도 있습니다. Main은 응용 프로그램과 운영 체제 간에 합의된 인터페이스 이름입니다! 따라서 Linux의 모든 애플리케이션의 첫 번째 기능은 main이어야 합니다. 커널 스케줄링 인터페이스를 변경하지 않는 한.

위 내용은 리눅스 커널에 main 함수가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.