linux系統呼叫
系統呼叫是指作業系統提供給使用者程式的一組「特殊」介面,使用者可以獲得作業系統核心提供的特殊服務。
在linux中使用者程式不能直接訪問核心提供的服務,程式的執行空間分為核心空間和使用者空間,他們執行在不同的級別上,在邏輯上是相互隔離的。
檔案i/o介紹
大多數檔案i/o只用到5個函式:open,read,write,lseek(定位),close
檔案描述符
對於核心,所有開啟檔案都由檔案描述符引用,是乙個非負整數。
open
#include
#include
#include
int open(const
char *pathname,int oflag,mode_t mode);
返回:若成功為檔案描述符,若出錯為-1
例子:
open("test",o_pdwr|o_creat,10705)////1是使用者id,0是設定組id,後三位和linux許可權設定一樣
creat
建立乙個新檔案,不足在於以只寫方式開啟所建立的檔案
int creat(const char *pathname,mode_t mode);
此函式等價於open(pathname,o_wronly|o_creat|o_trunc,mode);
close
#include
int close(int filedes);
返回:成功為0,出錯為-1
i/o讀寫
read
#include
ssize_t read(int feledes,void *buff,size_t nbytes);
返回:讀到的位元組數,已到檔案尾為0,出錯為-1
(字串處理時記得加/0結束符)
write
開啟檔案寫資料
ssize_t write(int feledes,void *buff,size_t nbytes);
lseek
#include
#include
off_t lseek(int filesdes,off_t offset,int whence);
返回:成功為新的檔案位移,出錯為-1
whence為seek_set,則將檔案的位移量設定為距檔案開始處offset個位元組
whence為seek_cur,則將檔案的位移量設定為其當前值加offset個位元組
whence為seek_end,則將檔案的位移量設定為檔案長度加offset個位元組
linux I O記憶體對映
linux 的線性位址空間為 0x00000000 到0xffffffff linux 核心將這 4g位元組的空間分為兩個部分 將最高的 1g位元組 0xc0000000 到0xfffffff 供核心使用,稱之為核心空間。而將較低的 3g位元組 0x00000000 到0xbfffffff 供各個程...
Linux I O排程策略
i o scheduler的作用就是為請求佇列裡面的io請求做乙個優化,以此達到提高系統吞吐量 縮短響應時間的目的。更改i o scheduler有兩種方式 1.sys block device name queue scheduler ioscheduler sys block device na...
LinuxIO模型概述
前言 乙個socket程序進行一次read可以分成兩個階段,等待資料是否準備好,以及資料從核心copy到使用者空間。我們舉個例子,肚子餓了要去小吃街吃拉麵,在我們正式開始吃麵之前需要1.先等拉麵師傅做好面,2.然後把做好的面放到我們的桌子上。阻塞和非阻塞 阻塞和非阻塞,主要是針對事情的本身,指做一件...