Android中的Serializable、Parcelable">Android中的Serializable、Parcelable
894
2025-03-31
文章目錄
一、系統調用
二、Android NDK 中的系統調用示例
一、系統調用
在 " 用戶層 " , 運行的都是用戶應用程序 ;
用戶層 下面 是 驅動層 , 驅動層 下面是 系統層 , 最底層是 BIOS ; 系統層 包含 系統內核 ;
層級從上到下 : 用戶層 | 驅動層 | 系統層 | BIOS ;
上述 4 4 4 層之間 , 不可以直接跨越 , 應用想要讀取 驅動 / 內核 的數據是不被允許的 , 強行訪問會導致崩潰 ;
應用的功能 需要借助 驅動實現 , 如文件讀寫 , 肯定要借助 硬盤驅動 實現 文件 在硬盤上的讀寫操作 ;
使用 " 軟中斷 " 實現跨層訪問 , 軟中斷是由軟件發起的 , 不是由錯誤導致 ;
調用 read 方法 , 讀取文件 , 觸發了軟中斷 , 以 arm 為例 , 執行 SVC 指令 , 參數 0 , 在 R0 中可以設置另外的參數 , 該 R0 參數指定調用什么功能 ;
整個應用進程的控制權此時就交給了 驅動層 / 系統層 , 在這些底層具體執行了哪些操作 , 應用層是不知道的 ;
arm 架構的 CPU 中軟中斷指令是 SVC ;
x86 架構的 CPU 中軟中斷指令是 int ;
與 軟中斷 相對應的是 硬中斷 ; 硬中斷 是由 硬件產生 ;
二、Android NDK 中的系統調用示例
系統調用相關的頭文件定義在 D:\Microsoft\AndroidNDK64\android-ndk-r16b\sysroot\usr\include\asm-generic\unistd.h 文件中 ; 在該文件中定義了所有的系統調用 ;
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
以 #define __NR_getuid 174 系統調用為例 , 174 對應的 16 進制數為 0xAE ;
進行軟中斷時 , 執行如下匯編執指令時 ,
MOV R0, 0xAE SVC 0
1
2
會自動執行 #define __NR_getuid 174 對應的系統調用 ;
Android 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。