linux地址分配
㈠ 1.請簡述linux配置永久ip地址(假設ip設置為192.168.147.200),並能連接外網
摘要 1、設置網路為橋接模式:(Vmware為例,安裝過程中也可以設置)
㈡ 如何配置Linux系統的網路IP地址
推薦去linuxprobe網站中查閱,在第四章中。查閱ip信息命令為ifconfig,配置的話需要用vim配置。
第1步:首先要切換到"/etc/sysconfig/network-scripts"目錄中(該目錄存放著網卡的配置文件)。
第2步:使用vim編輯器修改網卡文件"ifcfg-eno16777736",逐項寫入配置參數並保存退出,因每台電腦的硬體及架構情況都是不一樣的,同學們的網卡默認名稱請通過ifconfig命令自行確認。
設備類型:TYPE=Ethernet
地址分配模式:BOOTPROTO=static
網卡名稱:NAME=eno16777736
是否啟動:ONBOOT=yes
IP地址:IPADDR=192.168.10.10
子網掩碼:NETMASK=255.255.255.0
網關地址:GATEWAY=192.168.10.1
DNS地址:DNS1=192.168.10.1
第3步:重啟網卡設備並測試網路是否聯通。
㈢ linux的DHCP怎麼分配地址從大往小分配
linux
好像默認就是從大往小分配IP的比如地址池設置的IP范圍是192.168.1.100-192.168.1.200
客戶端獲取IP時會首先獲得192.168.1.200之後依次往下分配
,這個好像是改不了的,
㈣ Linux 怎麼獲得分配內存的起始地址
Linux內核運行在X86機器的物理內存管理使用簡單平坦內存模型,每個用戶進程內存(虛擬內存)地址范圍為從0到TASK_SIZE位元組,超過此內存的限制不能被用戶訪問。用戶進程被分為幾個邏輯段,成為虛擬內存區域,內核跟蹤和管理用戶進程的虛擬內存區域提供適當的內存管理和內存保護處理。 do_brk()是一個內核函數,用於間接調用管理進程的內存堆的增加和縮減 (brk),它是一個mmap(2)系統調用的簡化版本,只處理匿名映射(如未初始化數據)。 do_brk()改變進程的地址空間。地址是代表數據段結束的一個指針(事實上是進程的堆區域)。 do_brk()的參數是一個絕對邏輯地址,這個地址代表地址空間新的結尾。更實際地說,我們在編寫用戶程序的時候從來就不應該使用這個函數。使用這個函數的用戶程序就不能再使用malloc(),這是一個大問題,因為標注庫的許多部分依賴於malloc()。 如果在用戶程序中使用do_brk()可能會導致難以發現的程序崩潰。 do_brk(addr, len)函數給從addr到addr+len建立虛擬內存區vm_area_struct(該區的起始地址為addr;結束地址為addr+len),該虛擬內存區作為進程的堆來使用。 malloc將從此區域獲取內存空間(虛擬內存), free()將會把malloc()獲取的虛擬空間釋放掉(歸還到該進程的堆的空閑空間中去)
㈤ linux地址配置
編輯 /etc/sysconfig/network-scripts/ifcfg-eth0 可以在裡面設置IP保存重啟網卡即可
具體可以看看《linux就該這么學》
㈥ 怎麼在linux下配置ip地址
家裡有一個modem和路由器,用xp可以不用撥號直接上網的那種,可是換到Linux就不行了,有人說要配置Linux的網卡ip地址,該怎麼配置呢?默認情況下是選擇自動獲取ip地址,不曉得為什麼不行手動配置靜態IP地址,具體的有幾個要填的如下:手動設置為:1.地
㈦ linux系統里一個網卡怎麼分配兩個IP 步驟要詳細!
1、linux的網路設備的存儲路徑是/etc/sysconfig/network-scripts/。
㈧ Linux 虛擬地址空間如何分布
一個進程的虛擬地址空間主要由兩個數據結來描述。一個是最高層次的:mm_struct,一個是較高層次的:vm_area_structs。最高層次的mm_struct結構描述了一個進程的整個虛擬地址空間。較高層次的結構vm_area_truct描述了虛擬地址空間的一個區間(簡稱虛擬區)。
1. MM_STRUCT結構
mm_strcut 用來描述一個進程的虛擬地址空間,在/include/linux/sched.h 中描述如下:
struct mm_struct {
struct vm_area_struct * mmap; /* 指向虛擬區間(VMA)鏈表 */
rb_root_t mm_rb; /*指向red_black樹*/
struct vm_area_struct * mmap_cache; /* 指向最近找到的虛擬區間*/
pgd_t * pgd; /*指向進程的頁目錄*/
atomic_t mm_users; /* 用戶空間中的有多少用戶*/
atomic_t mm_count; /* 對"struct mm_struct"有多少引用*/
int map_count; /* 虛擬區間的個數*/
struct rw_semaphore mmap_sem;
spinlock_t page_table_lock; /* 保護任務頁表和 mm->rss */
struct list_head mmlist; /*所有活動(active)mm的鏈表 */
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack;
unsigned long arg_start, arg_end, env_start, env_end;
unsigned long rss, total_vm, locked_vm;
unsigned long def_flags;
unsigned long cpu_vm_mask;
unsigned long swap_address;
unsigned mpable:1;
/* Architecture-specific MM context */
mm_context_t context;
};
對該結構進一步說明如下:
在內核代碼中,指向這個數據結構的變數常常是mm。
每個進程只有一個mm_struct結構,在每個進程的task_struct結構中,有一個指向該進程的結構。可以說,mm_struct結構是對整個用戶空間的描述。
一個進程的虛擬空間中可能有多個虛擬區間(參見下面對vm_area_struct描述),對這些虛擬區間的組織方式有兩種,當虛擬區較少時採用單鏈表,由mmap指針指向這個鏈表,當虛擬區間多時採用「紅黑樹(red_black
tree)」結構,由mm_rb指向這顆樹。在2.4.10以前的版本中,採用的是AVL樹,因為與AVL樹相比,對紅黑樹進行操作的效率更高。
因為程序中用到的地址常常具有局部性,因此,最近一次用到的虛擬區間很可能下一次還要用到,因此,把最近用到的虛擬區間結構應當放入高速緩存,這個虛擬區間就由mmap_cache指向。
指針pgt指向該進程的頁目錄(每個進程都有自己的頁目錄,注意同內核頁目錄的區別),當調度程序調度一個程序運行時,就將這個地址轉成物理地址,並寫入控制寄存器(CR3)。
由於進程的虛擬空間及其下屬的虛擬區間有可能在不同的上下文中受到訪問,而這些訪問又必須互斥,所以在該結構中設置了用於P、V操作的信號量mmap_sem。此外,page_table_lock也是為類似的目的而設置。
雖然每個進程只有一個虛擬地址空間,但這個地址空間可以被別的進程來共享,如,子進程共享父進程的地址空間(也即共享mm_struct結構)。所以,用mm_user和mm_count進行計數。類型atomic_t實際上就是整數,但對這種整數的操作必須是「原子」的。
另外,還描述了代碼段、數據段、堆棧段、參數段以及環境段的起始地址和結束地址。這里的段是對程序的邏輯劃分,與我們前面所描述的段機制是不同的。
mm_context_t是與平台相關的一個結構,對i386 幾乎用處不大。
在後面對代碼的分析中對有些域給予進一步說明。
2. VM_AREA_STRUCT 結構
vm_area_struct描述進程的一個虛擬地址區間,在/include/linux/mm.h中描述如下:
struct vm_area_struct
struct mm_struct * vm_mm; /* 虛擬區間所在的地址空間*/
unsigned long vm_start; /* 在vm_mm中的起始地址*/
unsigned long vm_end; /*在vm_mm中的結束地址 */
/* linked list of VM areas per task, sorted by address */
struct vm_area_struct *vm_next;
pgprot_t vm_page_prot; /* 對這個虛擬區間的存取許可權 */
unsigned long vm_flags; /* 虛擬區間的標志. */
rb_node_t vm_rb;
/*
* For areas with an address space and backing store,
* one of the address_space->i_mmap{,shared} lists,
* for shm areas, the list of attaches, otherwise unused.
*/
struct vm_area_struct *vm_next_share;
struct vm_area_struct **vm_pprev_share;
/*對這個區間進行操作的函數 */
struct vm_operations_struct * vm_ops;
/* Information about our backing store: */
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
units, *not* PAGE_CACHE_SIZE */
struct file * vm_file; /* File we map to (can be NULL). */
unsigned long vm_raend; /* XXX: put full readahead info here. */
void * vm_private_data; /* was vm_pte (shared mem) */
};
vm_flag是描述對虛擬區間的操作的標志,其定義和描述如下
標志名 描述
VM_DENYWRITE 在這個區間映射一個打開後不能用來寫的文件。
VM_EXEC 頁可以被執行。
VM_EXECUTABLE 頁含有可執行代碼。
VM_GROWSDOWN 這個區間可以向低地址擴展。
VM_GROWSUP 這個區間可以向高地址擴展。
VM_IO 這個區間映射一個設備的I/O地址空間。
VM_LOCKED 頁被鎖住不能被交換出去。
VM_MAYEXEC VM_EXEC 標志可以被設置。
VM_MAYREAD VM_READ 標志可以被設置。
VM_MAYSHARE VM_SHARE 標志可以被設置。
VM_MAYWRITE VM_WRITE 標志可以被設置。
VM_READ 頁是可讀的。
VM_SHARED 頁可以被多個進程共享。
VM_SHM 頁用於IPC共享內存。
VM_WRITE 頁是可寫的。
較高層次的結構vm_area_structs是由雙向鏈表連接起來的,它們是按虛地址的降順序來排列的,每個這樣的結構都對應描述一個相鄰的地址空間范圍。之所以這樣分割,是因為每個虛擬區間可能來源不同,有的可能來自可執行映象,有的可能來自共享庫,而有的則可能是動態分配的內存區,所以對每一個由vm_area_structs結構所描述的區間的處理操作和它前後范圍的處理操作不同。因此Linux
把虛擬內存分割管理,並利用了虛擬內存處理常式(vm_ops)來抽象對不同來源虛擬內存的處理方法。不同的虛擬區間其處理操作可能不同,Linux在這里利用了面向對象的思想,即把一個虛擬區間看成一個對象,用vm_area_structs描述了這個對象的屬性,其中的vm_operation結構描述了在這個對象上的操作,其定義在/include/linux/mm.h中:
/*
* These are the virtual MM functions - opening of an area, closing and
* unmapping it (needed to keep files on disk up-to-date etc), pointer
* to the functions called when a no-page or a wp-page exception occurs.
*/
struct vm_operations_struct {
void (*open)(struct vm_area_struct * area);
void (*close)(struct vm_area_struct * area);
struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int unused);
};
vm_operations結構中包含的是函數指針;其中,open、close分別用於虛擬區間的打開、關閉,而nopage用於當虛存頁面不在物理內存而引起的「缺頁異常」時所應該調用的函數。
3.紅黑樹結構
Linux內核從2.4.10開始,對虛擬區的組織不再採用AVL樹,而是採用紅黑樹,這也是出於效率的考慮,雖然AVL樹和紅黑樹很類似,但在插入和刪除節點方面,採用紅黑樹的性能更好一些,下面對紅黑樹給予簡單介紹。
一顆紅黑樹是具有以下特點的二叉樹:
每個節點著有顏色,或者為紅,或者為黑
根節點為黑色
如果一個節點為紅色,那麼它的子節點必須為黑色
從一個節點到葉子節點上的所有路徑都包含有相同的黑色節點數
㈨ linux伺服器配置中多網卡的IP地址配置
如果系統擁有多個乙太網卡,則可以使用ifconfig命令為每一塊網卡指定個lP地址。
ifconfig命令可使Linux系統配置乙太網卡的網路介面,這樣可方便其它應用程序使用。ifconfig命令也可用來監控和改變網路介面的狀態。ifconfig命令的調用格式如下:
ifconfig
interface
[aftype]
[0pti0ns]addrcss
其中interface表示網路介面名:aftype
用來表明地址集,它們被用來解碼和顯示所有協議的地址,目前已支持的協議有inet
(TCP/IP)、ddp
(Appletalk)、ipx(N0vell)以及AX.
25和netr0m,默認值是inet;0pti0ns選項用來標志一些諸如掩碼地址、廣播地址之類的選項;address表示分配給制定介面的土機名或lP地址。
假設系統裝有兩塊網卡,系統分別定義為eth0和eth1,使州如下命令為它們指定IP
#
ifconfig
eth0
202
117.
85.
10
#
ifconflg
eihl
202.
117.
85.
11
只有root用戶才有許可權執行這兩條命令,普通用戶沒有許可權對網路介面進行配置。在設置完成後,可以使用不帶參數的ifconfig命令來查詢各個各個乙太網卡的信息:#
ifconfig
eth0
Link
encap:Ethernet
HWaddr
00;20:AF:48:F9:C8
inet
addr:
202
117.
85.
10
Bcast:
202.117.
8i.
255
Mask:255.255.255.0
UP
BR0ADCAST
RUNNING
MULTICAST
MTU:1500
Metric:l
RX
packets:lll
err0rs:0
copped:0
0verruns:0
frame:0
TX
packets:0
err0rs:0
copped:0
0verruns:0
camer:0
collisi0ns:0
txqueuelen:100
Interrupt:3
Base
addfess:0x300
Mem0ry:cco00-ce000
eth1
Link
encap:Ethemet
HWaddr
00:20:AF:48:F9:C8
inet
addr:
202.
117.
85.11
Bcast:
202.
117.
85.
255
Mask:255
255.255.0
UP
BR0ADCAST
RUNNING
MULflCAST
MTU:1574
Meuic:l
RX
packcLs:109
err0rs:0
copped:0
0venuns:0
framr.0
TX
packets:0
err0rs:0
copped:0
0verTuns:0
carrier:0
collisions:0
txqueuelen:112
Interrupt:9
Base
address:0x325
Memory:c3000-c5000
lo
Link
encap:L0cal
L00pback
ineL
addr:127.0.0.1
Mask:?5
5.0.0.0
UP
LOOPBACK
RUNNING
MTU:3924
Metric:l
RX
packets:29
err0rs:0
dropped:0
0verruns:0
ffame:0
TX
packets:29
err0rs:0
dropped:0
0vcrruns:0
carrier:0
collisi0ns:0
txqueuelen:0
由此可以看出系統成功地設置了兩塊乙太網卡
eth0和eth1.在下述執行結果中網卡lo是loopback的縮寫,它是Linux系統為了測試本身某些網路功能而設置的一塊虛擬同卡。
推薦閱讀:虛擬主機的優點
㈩ linux系統中怎樣手動分配IP地址
1、命令行使用vi編輯器打開網卡配置文件ifcfg-eth0:
vi /etc/sysconfig/network-scripts/ifcfg-eth0