Inhaltsverzeichnis
1. Designzweck und Anforderungen
2. Designinhalte
3. Ausrüstung und Umgebung
4. Design Thinking
5. Hauptdatenstrukturen und -prozesse
6. Experimentelle Testergebnisse und Ergebnisanalyse
7. Zusammenfassung des Kursdesigns
Anhang 1 Kursdesign-Verteidigungsnachweis
Anhang 2 Quellprogrammliste
1. Designzweck und Anforderungen
Dieser Kurs soll es Schülern der Mittelstufe ermöglichen, die Implementierungsprinzipien von Linux-Systemaufrufen zu verstehen, zu beherrschen, wie man den Linux-Kernel-Quellcode ändert und wie man aufrufende Programme kompiliert, um neue Systemaufrufe aufzurufen. Von Mittelschülern wird erwartet, dass sie diesen Kurs selbstständig absolvieren und das Konzept und die Implementierung von Systemaufrufen verstehen.
2. Designinhalte
Mit der kompilierten Kernel-MethodeBetriebssystemprinzipien und Linux-Systemexperimenten können Sie den Linux-Kernel neu kompilieren und einen Systemaufruf unter Linux reduzieren.
Anforderungen: (1) Durch Systemaufruf implementierte Funktion: Schätzen Sie die Potenz einer Zahl und kopieren Sie sie. (2) Schreiben Sie ein weiteres aufzurufendes Programm.
3. Ausrüstung und Umgebung
Gerät: VMware Workstation Pro
Umgebung: Ubantu15.0.2
Bild: ubuntu-16.04-desktop-amd64.iso
4. Designgedanke 4.1 Designidee
Ändern Sie den Linux-Kernel und führen Sie einen neuen Systemaufruf aus, um die Funktion zum Schätzen der Potenz einer Zahl und zum Kopieren zu implementieren, einschließlich des Herunterladens des Linux-Kernel-Quellcodes, des Vornehmens von Änderungen, des Kompilierens des geänderten Linux-Kernels und seiner Installation im System. Schreiben Sie ein Programm, das diesen neuen Systemaufruf aufruft.
4.2 Hauptschritte
(1) Sehen Sie sich den Originalkernel an:
(2)Laden Sie den neuen Kernel herunter:
wgetBetriebssystemprinzipien und Linux-SystemexperimentLinux-Transplantation, dann drücken Sie die Eingabetaste. Das Ergebnis ist wie abgebildet
(3) Sambungkan pakej pemasangan yang dimuat turun ke direktori /usr/src, dan kemudian nyahzipnya Masukkan arahan berikut dalam terminal, dan hasilnya adalah seperti yang ditunjukkan
mvlinux-5.6.15.tar.gz/usr/src
cd/usr/src
tar-xvflinux-5.6.15.tar.gz
(4) Muat turun super editor vim (sudah dimuat turun sebelum ini).
(5) Panggilan sistem baharu:
Tambah pengisytiharan fungsi panggilan: viminclude/linux/syscallls.h
Tambah asmlinkagelongsys_cube(intnum);
sebelum #ifndef
Nota: saya memasuki mod penyuntingan, selepas menambah, Esc kembali ke pemindahan linux, dan akhirnya shift+: tekan wq untuk menyimpan dan keluar.
(6) Tambahkan definisi fungsi panggilan, masukkan vimkernel/sys.c, dan tambahkan fungsi pada penghujung artikel
SYSCALL_DEFINE1(kubus,int,bilangan){
intresult=numnumnum;
printk(“Terdapat%d.n”,hasil);
hasil pulangan;
(7)Tambah nombor panggilan sistem
Masukkan vimarch/x86/entry/syscallls/syscall_64.tbl dan tambahkan 439 item dalam fail syscall_64.tbl
(8) Pasang pakej kebergantungan yang diperlukan untuk menyusun kernel:
apt-get -y install make apt-get -y install libncurses5-dev apt-get -y install flex apt-get -y install bison apt-get -y install libssl-dev apt-get -y install libelf-dev
(9) Konfigurasikan kernel
Masukkan makemenuconfig dan laksanakan [Simpan]->[Ok]->[Keluar]->[Keluar] dalam antara muka timbul
(10)Kompilkan
Taip make-j8 dalam [Terminal] (8 utas memulakan kompilasi), ia akan mengambil masa kira-kira sejam, dan kompilasi selesai seperti yang ditunjukkan dalam gambar
Taip arahan makemodules dan makemodules_install untuk melengkapkan penyusunan dan pemasangan modul masing-masing.
(11)Pasang kernel
【Terminal】Input makeinstall
(12)Mulakan semula sistem
[Terminal] Masukkan uname-r untuk menyemak versi kernel Seperti yang ditunjukkan dalam gambar, kernel telah disusun semula
Kompilasi program panggilan:
Keluar selepas menyimpan, dan jalankan gcctest.c-otest.out dan ./test.out dalam [Terminal] untuk mendapatkan keputusan ujian
5. Struktur dan proses data utama
Das obige ist der detaillierte Inhalt vonEin tiefer Einblick in Linux-Systemaufrufe: Neuer Systemaufruf zum Würfeln und Drucken einer Zahl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!