您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
05 ss訂閱鏈接轉換成(vmess鏈接轉換)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-11 01:16:26【】9人已围观
简介00to0xffffe414:0xffffe400:push%ecx0xffffe401:push%edx0xffffe402:push%ebp0xffffe403:mov%esp,%ebp0xfff
0xffffe401: push %edx
0xffffe402: push %ebp
0xffffe403: mov %esp,%ebp
0xffffe405: sysenter
0xffffe407: nop
0xffffe408: nop
0xffffe409: nop
0xffffe40a: nop
0xffffe40b: nop
0xffffe40c: nop
0xffffe40d: nop
0xffffe40e: jmp 0xffffe403
0xffffe410: pop %ebp
0xffffe411: pop %edx
0xffffe412: pop %ecx
0xffffe413: ret
End of assembler mp.
這段代碼正是arch/i386/kernel/vsyscall- sysenter.S文件中的代碼。其中,在sysenter之前的是入口代碼,在0xffffe410開始的是內核返回處理代碼(后面提到的 SYSENTER_RETURN即指向這里)。在入口代碼中,首先是保存當前的ecx,edx(由于sysexit指令需要使用這兩個寄存器)以及 ebp。然后調用sysenter指令,跳轉到內核Ring 0代碼,也就是sysenter_entry入口處。
內核中的處理和返回
sysenter_entry整個的實現可以參見arch/i386/kernel/entry.S。內核處理SYSENTER的代碼和處理INT的代碼不太一樣。通過sysenter指令進入Ring 0之后,由于當前的ESP并非指向正確的內核棧,而是當前CPU的TSS結構中的一個緩沖區(參見上文),所以首先要解決的是修復ESP,幸運的是,TSS結構中ESP0成員本身就保存有Ring 0狀態的ESP值,所以在這里將TSS結構中ESP0的值賦予ESP寄存器。將ESP恢復成指向正確的堆棧之后,由于SYSENTER不是通過調用門進入Ring 0,所以在堆棧中的上下文和使用INT指令的不一樣,INT指令進入Ring 0后棧中會保存如下的值。
低地址
返回用戶態的EIP
用戶態的CS
用戶態的EFLAGS
用戶態的ESP
用戶態的SS(和DS相同)
高地址
因此,為了簡化和重用代碼,內核會用pushl指令往棧中放入上述各值,值得注意的是,內核在棧中放入的相對應用戶態EIP的值,是一個代碼標簽 SYSENTER_RETURN,在vsyscall-sysenter.S可以看到,它就在sysenter指令的后面(在它們之間,有一段NOP,是內核返回出錯時的處理代碼)。接下來,處理系統調用的代碼就和中斷方式的處理代碼一模一樣了,內核保存所有的寄存器,然后系統調用表找到對應系統調用的入口,完成調用。最后,內核從棧中取出前面存入的用戶態的EIP和ESP,存入edx和ecx寄存器,調用SYSEXIT指令返回用戶態。返回用戶態之后,從棧中取出ESP,edx,ecx,最終返回glibc庫。
其它操作系統以及其它硬件平臺的支持
值得一提的是,從 Windows XP 開始,Windows 的系統調用方式也從軟中斷 int 0x2e 轉換到采用 sysenter 方式,由于完全不再支持 int 方式,因此 Windows XP 的對 CPU 的最低配置要求是 PentiumII 300MHz。在其它的操作系統例如 *BSD 系列,目前并沒有提供對 sysenter 指令的支持。
在 CPU 方面,AMD 的 CPU 支持一套與之對應的指令 SYSCALL/SYSRET。在純 32 位的 AMD CPU 上,還沒有支持 sysenter 指令,而在 AMD 推出的 AMD64 系列 CPU 上,處于某些模式的情況下,CPU 能夠支持 sysenter/sysexit 指令。在 Linux 內核針對 AMD64 架構的代碼中,采用的還是 SYSCALL/SYSRET 指令。至于這兩種指令最終誰將成為標準,目前還無法得出結論。
未來
我們將 Intel 的 sysenter/sysexit 指令,AMD 的 SYSCALL/SYSRET 指令統稱為"快速系統調用指令"。"快速系統調用指令"比起中斷指令來說,其消耗時間必然會少一些,但是隨著 CPU 設計的發展,將來應該不會再出現類似 Intel Pentium4 這樣懸殊的差距。而"快速系統調用指令"比起中斷方式的系統調用方式,還存在一定局限,例如無法在一個系統調用處理過程中再通過"快速系統調用指令"調用別的系統調用。因此,并不一定每個系統調用都需要通過"快速系統調用指令"來實現。比如,對于復雜的系統調用例如 fork,兩種系統調用方式的時間差和系統調用本身運行消耗的時間來比,可以忽略不計,此處采取"快速系統調用指令"方式沒有什么必要。而真正應該使用" 快速系統調用指令"方式的,是那些本身運行時間很短,對時間精確性要求高的系統調用,例如 getuid、gettimeofday 等等。因此,采取靈活的手段,針對不同的系統調用采取不同的方式,才能得到最優化的性能和實現最完美的功能。
[1] VxWorks Optimized for Intel Architecture, Hdei Nunoe, Wind River, Member of Technical Staff Leo Samson, Wind River, Technical Marketing Engineer David Hillyard, Intel Corporation, Mgr., Platform Architect
[2] Kernel Entry / Kernel Exit , Marcus Voelp & University Karlsruhe
[3] Dave Jones' blog, 買粉絲://diary.買粉絲demonkey.org.uk/index.php?month=12&year=2002
[4] Linux 內核源碼 v2.6.0 買粉絲://買粉絲.kernel.org/ [Linus Torvalds,2004]
[5] GNU C Library glibc 2.3.3 源碼 買粉絲://買粉絲.gnu.org/software/libc/libc.買粉絲
Linux Kernel Mailing List 中對系統調用方式的討論: [5] Linux Kernel Mailing List, "Intel P6 vs P7 system call performance" 買粉絲://買粉絲.ussg.iu.e/hypermail/linux/kernel/0212.1/index.買粉絲#1286 買粉絲://買粉絲.ussg.iu.e/hypermail/linux/kernel/0212.3/index.買粉絲#54
Linux 內核首次引入對 sysenter/sysexit 指令的支持: [6] Linux Kernel Mailing List, "Add "sysenter" support on x86, and a "vsyscall" page." 買粉絲://lwn.買粉絲/Articles/18414/
如何進入大數據領域,學習路線是什么?
分享大數據學習路線:
第一階段為JAVASE+MYSQL+JDBC
主要學習一些Java語言的概念,如字符、流程控制、面向對象、進程線程、枚舉反射等,學習MySQL數據庫的安裝卸載及相關操作,學習JDBC的實現原理以及Linux基礎知識,是大數據剛入門階段。
第二階段為分布式理論簡介主要講解CAP理論、數據分布方式、一致性、2PC和3PC、大數據集成架構。涉及的知識點有Consistency一致性、Availability可用性、Partition tolerance分區容忍性、數據量分布、2PC流程、3PC流程、哈希方式、一致性哈希等。
第三階段為數據存儲與計算(離線場景)主要講解協調服務ZK(1T)、數據存儲hdfs(2T)、數據存儲alluxio(1T)、數據采集flume、數據采集logstash、數據同步Sqoop(0.5T)、數據同步datax(0.5T)、數據同步mysql-binlog(1T)、計算模型MR與DAG(1T)、hive(5T)、Impala(1T)、任務調度Azkaban、任務調度airflow等。
第四部分為數倉建設主要講解數倉倉庫的歷史背景、離線數倉項目-伴我汽車(5T)架構技術解析、多維數據模型處理kylin(3.5T)部署安裝、離線數倉項目-伴我汽車升級后加入kylin進行多維分析等;
第五階段為分布式計算引擎主要講解計算引擎、scala語言、spark、數據存儲hbase、redis、ku,并通過某p2p平臺項目實現spark多數據源讀寫。
第六階段為數據存儲與計算(實時場景)主要講解數據通道Kafka、實時數倉druid、流式數據處理flink、SparkStreaming,并通過講解某交通大數讓你可以將知識點融會貫通。
第七階段為數據搜索主要講解elasticsearch,包括全文搜索技術、ES安裝操作、index、創建索引、增刪改查、索引、映射、過濾等。
第八階段為數據治理主要講解數據標準、數據分類、數據建模、圖存儲與查詢、元數據、血緣與數據質量、Hive Hook、Spark Listener等。
第九階段為BI系統主要講解Superset、Graphna兩大技術,包括基本簡介、安裝、數據源創建、表操作以及數據探索分析。
第十階段為數據挖掘主要講解機器學習中的數學體系、Spark Mlib機器學習算法庫、Python scikit-learn機器學習算法庫、機器學習結合大數據項目。
對大數據分析有興趣的小伙伴們,不妨先從看看大數據分析書籍開始入門!B站上有很多的大數據教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。很赞哦!(89475)
相关文章
- 01 服裝國際貿易最常用的結算方式是(常用的國際結算方式有哪些?)
- 01 朝鮮做外貿嗎(有丹東的外貿公司讓我們寄樣品,一個星期后讓我們給朝鮮人去簽約,請問這是騙局嗎?)
- 02 我的買粉絲(怎么能找到自己創建的買粉絲買粉絲啊??)
- 01 服裝直播帶貨貨源(網紅直播間的衣服貨源都來自哪里呢?有哪些渠道?)
- 01 朝貢貿易的含義特點目的(朝貢貿易是指什么?)
- 02 我心中未來自由貿易港的樣子(中國有幾個自由港中國有幾個自由貿易港)
- 02 手機怎么寫買粉絲排版(買粉絲買粉絲如何進行文章排版?)
- 01 朝貢貿易的歷史概念(歷史上,互市以及朝貢貿易的開展,怎么構筑中央與邊疆民族的和諧關系?)
- 02 手工法計數網織紅細胞時應注意(手工法網織紅細胞顯微鏡計數法,染色液可為)
- 01 朝貢貿易的概念及特點(韓國歷史和中國清朝年間的事情?)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:黑龙江省鹤岗南山区
工作室:小组
Email:[email protected]