목차
1. 디자인 목적 및 요구사항
2. 디자인 콘텐츠
3. 장비 및 환경
4. 디자인적 사고
5. 주요 데이터 구조 및 프로세스
6. 실험 테스트 결과 및 결과 분석
7. 코스 디자인 요약
별첨 1 코스 설계 방어 기록
첨부2 소스 프로그램 목록
1. 디자인 목적 및 요구사항
본 강좌는 중학생들이 리눅스 시스템 콜의 구현 원리를 이해하고, 리눅스 커널 소스 코드를 변경하는 방법과 새로운 시스템 콜을 호출하기 위한 호출 프로그램을 컴파일하는 방법을 마스터할 수 있도록 고안되었습니다. 중학생은 본 과목을 독립적으로 이수하고 시스템 호출의 개념과 구현을 이해해야 합니다.
2. 디자인 콘텐츠
컴파일된 커널 방식을 사용하여운영체제 원리 및 Linux 시스템 실험을 통해 Linux 커널을 다시 컴파일하고 Linux에서 시스템 호출을 줄입니다.
요구 사항: (1) 시스템 호출로 구현되는 기능: 숫자의 세제곱을 추정하고 복사합니다. (2) 호출할 다른 프로그램을 작성합니다.
3. 장비 및 환경
장치: VMware Workstation Pro
환경: Ubantu15.0.2
이미지: ubuntu-16.04-desktop-amd64.iso
4. 디자인 사고 4.1 디자인 아이디어
Linux 커널을 변경하고 새로운 시스템 호출을 낮추어 Linux 커널 소스 코드 다운로드, 변경, 변경된 Linux 커널 컴파일 및 시스템에 설치를 포함하여 숫자의 세제곱을 추정하고 복사하는 기능을 구현합니다. 이 새로운 시스템 호출을 호출하는 프로그램을 작성하세요.
4.2 주요 단계
(1) 원본 커널 보기:
(2)새 커널 다운로드:
wget운영체제 원리 및 Linux 시스템 실험Linux 이식 후 Enter를 누릅니다. 결과는 보시는 바와 같습니다
(3) 다운로드한 설치 패키지를 /usr/src 디렉터리에 연결한 후, 터미널에 다음 명령어를 입력하면 결과가 나옵니다
mvlinux-5.6.15.tar.gz/usr/src
cd/usr/src
tar-xvflinux-5.6.15.tar.gz
(4) 슈퍼 편집기 vim을 다운로드합니다(이전에 이미 다운로드했습니다). 다운로드되지 않은 경우 sudoapt-get-yinstallvim을 사용하여 다운로드할 수 있습니다.
(5) 새로운 시스템 호출:
호출 함수 선언 추가: viminclude/linux/syscalls.h
#ifndef 앞에 asmlinkagelongsys_cube(intnum);
를 추가하세요.
참고: 편집 모드로 들어가고 추가 후 Esc를 누르면 Linux 이식으로 돌아가고 마지막으로 Shift+: wq를 눌러 저장하고 종료합니다.
(6) 호출 함수 정의를 추가하고 vimkernel/sys.c를 입력한 후 기사 끝에 함수를 추가하세요
SYSCALL_DEFINE1(큐브,정수,숫자){
intresult=numnumnum;
printk(“Theresultis%d.n”,result);
반품결과;
(7)시스템 호출 번호 추가
vimarch/x86/entry/syscalls/syscall_64.tbl을 입력하고 syscall_64.tbl 파일에 439개 항목을 추가하세요
(8) 커널을 컴파일하는 데 필요한 종속성 패키지를 설치합니다.
으아아아
(9) 커널 구성
makemenuconfig를 입력하고 팝업 인터페이스에서 [저장]->[확인]->[종료]->[종료]를 실행하세요
(10)컴파일
[터미널]에 make-j8을 입력하면(8개의 스레드가 컴파일 시작) 약 1시간 정도 걸리며, 그림과 같이 컴파일이 완료됩니다
makemodules 및 makemodules_install 명령을 입력하여 각각 모듈 컴파일 및 설치를 완료합니다.
(11)커널 설치
【터미널】makeinstall 입력
(12)시스템을 다시 시작하세요
[터미널] uname-r을 입력하여 커널 버전을 확인하세요. 그림과 같이 커널이 재컴파일되었습니다
컴파일 호출 프로그램:
저장 후 종료하고 [터미널]에서 gcctest.c-otest.out 및 ./test.out을 실행하여 테스트 결과를 가져옵니다
5. 주요 데이터 구조 및 프로세스
위 내용은 Linux 시스템 호출에 대한 심층 분석: 숫자를 세제곱하여 인쇄하는 새로운 시스템 호출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!