1. 程式人生 > >Linux OS

Linux OS

questions and curiosity

34 branch prefect

32: copy from user

MOVS

Moves the byte, word, or doubleword specified with the second operand (source operand) to the location specified 
with the first operand (destination operand). Both the source and destination operands are located in memory. The 
address of the source operand is read from the DS:ESI or the DS:SI registers (depending on the address-size 
attribute of the instruction, 32 or 16, respectively). The address of the destination operand is read from the ES:EDI 
or the ES:DI registers (again depending on the address-size attribute of the instruction). The DS segment may be 
overridden with a segment override prefix, but the ES segment cannot be overridden.
At the assembly-code level, two forms of this instruction are allowed: the “explicit-operands” form and the “no-
operands” form. The explicit-operands form (specified with the MOVS mnemonic) allows the source and destination 
operands to be specified explicitly. Here, the source and destination operands should be symbols that indicate the 
size and location of the source value and the destination, respectively. This explicit-operands form is provided to 
allow documentation; however, note that the documentation provided by this form can be misleading. That is, the 
source and destination operand symbols must specify the correct type (size) of the operands (bytes, words, or 
doublewords), but they do not have to specify the correct location. The locations of the source and destination 
operands are always specified by the DS:(E)SI and ES:(E)DI registers, which must be loaded correctly before the 
move string instruction is executed. 
The no-operands form provides “short forms” of the byte, word, and doubleword versions of the MOVS instruc-
tions. Here also DS:(E)SI and ES:(E)DI are assumed to be the source and destination operands, respectively. The 
size of the source and destination operands is selected with the mnemonic: MOVSB (byte move), MOVSW (word 
move), or MOVSD (doubleword move).
After the move operation, the (E)SI and (E)DI registers are incremented or decremented automatically according 
to the setting of the DF flag in the EFLAGS register. (If the DF flag is 0, the (E)SI and (E)DI register are incre-mented; 

if the DF flag is 1, the (E)SI and (E)DI registers are decremented.) The registers are incremented or 

decremented by 1 for byte operations, by 2 for word operations, or by 4 for doubleword operations.

Operation
DEST ← SRC;
Non-64-bit Mode:
IF (Byte move)
THEN IF DF = 0
THEN 
(E)SI ← (E)SI + 1; 
(E)DI ← (E)DI + 1; 
ELSE 
(E)SI ← (E)SI – 1; 
(E)DI ← (E)DI – 1; 
FI;
ELSE IF (Word move)
THEN IF DF = 0
(E)SI ← (E)SI + 2; 
(E)DI ← (E)DI + 2; 
FI;
ELSE 
(E)SI ← (E)SI – 2; 
(E)DI ← (E)DI – 2; 
FI;
ELSE IF (Doubleword move)
THEN IF DF = 0
(E)SI ← (E)SI + 4; 
(E)DI ← (E)DI + 4; 
FI;
ELSE 
(E)SI ← (E)SI – 4; 
(E)DI ← (E)DI – 4; 
FI;
FI;

rep instruction
Operation
IF AddressSize = 16
    THEN
        Use CX for CountReg;
        Implicit Source/Dest operand for memory use of SI/DI;
    ELSE IF AddressSize = 64
        THEN Use RCX for CountReg; 
        Implicit Source/Dest operand for memory use of RSI/RDI;
    ELSE
        Use ECX for CountReg;
        Implicit Source/Dest operand for memory use of ESI/EDI;
FI;
WHILE CountReg ≠ 0
DO
Service pending interrupts (if any);
Execute associated string instruction;
CountReg ← (CountReg – 1);
IF CountReg = 0
THEN exit WHILE loop; FI;
IF (Repeat prefix is REPZ or REPE) and (ZF = 0)
or (Repeat prefix is REPNZ or REPNE) and (ZF = 1)
THEN exit WHILE loop; FI;
OD;


31  64 Bit memory

64 Bit memory

others 

30 size of PIPE

29 Physical address map

28 IOremap

IO shared memory ==> IOremap ==> vmalloc

27: Per CPU

26: 各種鎖

25: smp中

processor A 訪問共享資料Data, A對Data加鎖,此時processor B 也必須要用到Data,怎麼辦?

23: initrd and vmlinux compiling ?

the procedure of buidling initrd and vmlinx 

and the script 

are they compiled with the same source files ?

22: linux kernel startup

grub and linux,  how does it work ? why it need grub ? 

4: float

最大值就是:0 11111110 11111111111111111111111

0 1111 1110 1.111 1111 1111 1111 1111 1111 -- 有效正max
1 1111 1110 1.111 1111 1111 1111 1111 1111 -- 有效負max


V = (-1)^0 * 2^(254-127) * 1.111 1111 1111 1111 1111 1111
  = 2^(127-23) * 1111 1111 1111 1111 1111 1111.
  = 2^104 * 16777215
  = 3.4028234663852885981170418348452e+38


0 0000 0000 0.000 0000 0000 0000 0000 0001 -- 正min (+0)
1 0000 0000 0.000 0000 0000 0000 0000 0001 -- 負min (-0)


+V =  (-1)^0 * 2^(-126) ^ 0.000 0000 0000 0000 0000 0001
     =  + 2^(-149)
     =  + 1.4012984643248170709237295832899e-45
-V =  - 2^(-149)

0 1111 1111 0000 0000 0000 0000 0000 000 -- 正無窮
1 1111 1111 0000 0000 0000 0000 0000 000 -- 負無窮

+V = 正無窮 = 2^(128) =     3.4028236692093846346337460743177e+38
-V = 負無窮 = -2^(128) =  -3.4028236692093846346337460743177e+38

0 1111 1111 xxxx .... -- NaN (not a number)
1 1111 1111 xxxx .... -- NaN


5: pragma

6:  preprocessor output

8: fork exit wait4

task_struct

thread_info

9: spin lock and semaphore

 10: msi

11: stack

12: 時鐘中斷處理函式process

13: driver


drivers/misc/*.c
簡單明瞭...
loopback.c

14: 理解linux OS 實現中的抽象層次機制

介面層次,oop程式設計方式

Linux 時鐘處理機制


15: CFS

16: interview 

17:  OS course

http://www.cse421.net/lecture/ 

18: kernel ring buffer and printk

相關推薦

一鍵安裝metasploit(linux,os x)

linux sta .com ram pla console brush wrap chmod curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates

ARM推出Mbed Linux OS

導讀 據中國臺灣地區媒體報道,近日ARM推出新的物聯網作業系統Mbed Linux OS。ARM表示,推出Mbed Linux OS的目的,就是建立IoT產品的基礎模組,讓其他廠商可以集中開發附加價值高的功能。此外,該作業系統也與自家物聯網管理平臺Pelion深度整合,企業使用者可以直接執行

Linux OS下根目錄 分類詳解

  程式碼: /         (這就是著名的根) ├── bin         (你在終端執行的大多數程式,比如cp、mv...) ├── boot 

linux os points need pay attention!

1,mulit line Commented << any words contents any words 2,append content to the file cat << EOF >> file path conten

【鐵匠Smith先生的專欄】關注Linux系統軟體開發、多媒體圖形技術、Linux OS技術、多程序多執行緒併發網路程式設計、架構模式研究與實踐、AI等新技術動向、C/C++最新程式設計技術、開原始碼整合與應用等

關注Linux系統軟體開發、多媒體圖形技術、Linux OS技術、多程序多執行緒併發網路程式設計、架構模式研究與實踐、AI等新技術動向、C/C++最新程式設計技術、開原始碼整合與應用等...

VirtualBox中配置linux OS的本地磁碟映象作為其軟體源

紅帽系列(以及CentOS)都有yum軟體源的概念,即在終端通過命令可以直接從軟體源下載軟體並安裝。除了網路上的軟體源外,我們也可以使用下載好的紅帽的linux或CentOS映象來作為軟體源。它包含了大部分常用軟體,而在我們安裝CentOS系統的時候,很多時候是選擇性安裝的

Linux/OS/Network】執行緒以及其與程序區別

執行緒建立、終止、等待、同步、有關分離相關程式碼見: 前言: 程序在各自獨立的地址空間中執行,程序之間共享資料需要用mmap或者程序間通訊機制,有些情況需要在一個程序中同時執行多個控制流程,這時候執行緒就派上了用場,比如:實現一個圖形介面的下載軟

Linux/OS/Network】fork函式和vfork函式的分析及區別

fork和vfork相關程式碼見: fork函式 標頭檔案:#include《unistd.h》 函式原型:pid_t fork(void); 一個現有程序可以呼叫fork建立一個新程序。 返回值:子程序中返回0,父

Linux/OS/Network】匿名管道(pipe)和命名管道(FIFO)

匿名管道(pipe) 管道是一種最基本的IPC機制,由pipe函式建立: “#include < unistd.h >” 函式原型:int pipe(int filedes[2]); 呼叫pipe函式時在核心中開闢一塊

後臺開發面試 linux os

參考文章 引文及相關資料 linux和os: netstat tcpdump ipcs ipcrm (如果這四個命令沒聽說過或者不能熟練使用,基本上可以回家,通過的概率較小 ^_^ ,這四個命令的熟練掌握程度基本上能體現面試者實際開

Linux OS

questions and curiosity 34 branch prefect 32: copy from user MOVS Moves the byte, word, or doubleword specified with the s

[Linux OS] Ubuntu 16.04 上實時顯示上下行網速、CPU及記憶體使用率--indicator-sysmonitor

在終端安裝外掛: sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor sudo apt-get update

linux os.listdir() NameError: name 'os' is not defined

從網上摘了一下小測試,向下面這樣 print(os.system('ping xingfushenghuo.com')) 然後報錯了:NameError: name 'os' is not defined 解決方法就是: import os print(os.system

ViewTool Hollong BLE Sniffer Support Linux OS Introduction

keyword perm isp resp with start.s correct inpu ces ViewTool Hollong BLE Sniffer Support Linux OS Introduction1。 Download Software:http:/

[OS] Linux進程、線程通信方式總結

信號量 all http 命名 信號 .com 數據結構 rem pip 轉自:http://blog.sina.com.cn/s/blog_64b9c6850100ub80.html Linux系統中的進程通信方式主要以下幾種: 同一主機上的進程通信方式 * UNI

linux oracle 10g/11g x64bit環境中,goldengate隨os啟動而自己主動啟動的腳本

內容 rtm 自己 root optimize and cal 背景 ram 在linux。oracle 10g/11g x64bit環境中,goldengate隨os啟動而自己主動啟動的腳本 背景描寫敘述: goldengate安裝於/u01/ggs文件夾下

linux cent os 6.5安裝Nginx

exce log ror lib gun -s ges conf rar 1.下載相關組件 yum install -y gcc gcc-c++ 安裝C/C++編譯器 wget http://sourceforge.net/projects/pcre/files/pcre/

FinalShell服務器管理軟件,SSH客戶端下載,支持Windows,Mac OS X,Linux

關註 批量 主機 ren manage ask 速度 運維 分享 FinalShell是一體化的的服務器,網絡管理軟件,不僅是ssh客戶端,還是功能強大的開發,運維工具,充分滿足開發,運維需求.用戶QQ群 342045988Windows版

Mac OS X中Launchpad的圖標添加刪除方法(添加方法別試了,和Linux很大區別)

com nsh usr folders 單純 ron bsp blank 結構 說明:在Mac下的Launchpad圖標添加和刪除都與應用程序的app文件有關,如果單純的只想在Launchpad添加自定義的圖標,然後指定要某條命令運行時,建議不要這麽幹,Launchpad的

linux使用密文生成os賬戶

ssl linu fan word nbsp min inux use chpasswd 1、生成賬戶 [hufangrui@xxx ~]$ openssl passwd -1Password: Verifying - Password: $1$szzkROBZ$GYxff