青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

T9的空間

You will never walk alone!

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  69 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks

13章在講Daemon Process,沒什么特別好寫的。
14 ->高級IO

低速系統調用,也就是有信號發生會返回 errno 為 EINTR的

磁盤文件IO雖然有延時,但是這個不能算是低速系統調用

APUE介紹的低速系統調用
PIPE,終端設備,網絡設備 讀寫
讀無數據/寫無空間(例如TCP卡Congestion window)

打開某些特殊文件
加記錄鎖的文件讀寫
ioctl,IPC


文件鎖又叫做 byte-range locking,針對特定的文件區域,適合數據庫文件
Posix標準
int fcntl(int fd, int cmd, .../* struct flock* flockptr */)
cmd -> F_GETLK,F_SETLK,F_SETLKW
F_SETLKW是F_SETLK的Blocking版本 W means wait

重要數據結構是struct flock ->
struct flock {
 short l_type;
 short l_whence;
 off_t l_start;
 off_t l_len;
 pid_t l_pid;
 __ARCH_FLOCK_PAD
};

鎖定整個file的方式: l_whence = SEEK_SET, l_start = 0, l_len = 0

l_type的兩類lock
F_RDLCK,F_WRLCK這兩種鎖的特性很像rw lock

不過與讀寫鎖不一樣的是或者這樣講
Posix.1沒有規定下面這種情況: process A在某文件區間上設置了一把讀鎖;process B嘗試在這個文件區間加上寫鎖的時候suspend;process C再嘗試獲取讀鎖,如果允許

process C拿到讀鎖,那么process B將會可能永遠拿不到寫鎖,活活餓死

pthread里面的rw lock的實現會在這種情況下suspend掉process C的讀鎖請求;但是目前文件區域鎖的實現我不太確定

這里看文件區域鎖還是比較容易帶來deadlock的
例如process A鎖住F1的某個區域,然后去鎖F2的一個區域,這時候F2的這個區域被process B鎖住,那么process A就會suspend,如果這個時候process B過來要鎖F1的這個區域
就會發生deadlock


關于文件區域鎖的繼承和釋放
1.fork后,文件區域鎖并不繼承,繼承了就完了,不同的process就有可能同時干同一件事情,把數據搞壞
2.close(fd)后 fd對應的文件鎖就被釋放了,文件鎖掛在inode上,close的時候kernel會去掃描對應的inode上與這個PID相關的lock,釋放掉,而并不去關心是哪個文件描述符或

者是哪個文件表,這很重要,因為lockf中并不記錄fd,他們只是弱關聯關系,這個很重要。
3.exec后,文件鎖會繼承原來執行程序的鎖(fork之后拿到的lock),如果fd帶有close-on-exec那么根據第二條,這個fd對應的file上的鎖都會被釋放。


后面講了STREAMS,感覺linux上用到的不多,需要在編譯kernel時動態加載

IO多路轉接,主要是為了實現polling既所謂的輪詢
主要函數有select,pselect,poll,epoll
select也會算是低速系統調用,那么就有可能被信號打斷
pselect有參數可以設定信號屏蔽集,也提供更高精度的timer

poll的方式與select有不太一樣的地方,但是功能相同,epoll更適合大數據量。

readv和writev
記住下面兩條就夠了
一個稱為scatter read(散步讀);另外一個稱為gather write(聚集寫)
這兩個函數會面對一個buffer鏈表。


readn和writen
這個比較像現在Android里面socket的read和write方式,保證能read/write n byte數據,在內部做循環
我比較好奇這兩個是否會處理signal,想來應該是會處理的,遇到EINTR幫忙重啟就好了

我沒有找到Bionic庫的實現


存儲映射IO
這個很重要,mmap用的很多,映射到process空間的位置在 stack以下,heap以上的部分,map完后返回低地址。

#include<sys/mman.h>
void* mmap(void* addr, size_t len, int prot, int flag, int filedes, off_t off)

prot -> PROT_READ,PROT_WRITE,PROT_EXEC,PROT_NONE
prot指定的對映射存儲區的保護不能超過文件的open權限

在 flag為 MAP_FIXED的時候OS會保證分配的memory起始地址為addr,否則只是給OS一個建議。
一般建議addr給0,讓OS來決定。

MAP_SHARED是說對映射區域的存儲(write)會導致修改該文件。
MAP_PRIVATE則是對映射區域的操作會常見一個映射文件的副本。


后面有個例子用了lseek
使用lseek增加文件長度的方式,先lseek一個值,如果這個值大于文件本身的長度,那么下一次寫就會加長該文件,并且在文件
中形成一個空洞,未寫過的內容全部讀為0。
mmap只能map文件的最大長度,超過的地方沒辦法同步到文件。

posted on 2013-06-05 16:59 Torres 閱讀(339) 評論(0)  編輯 收藏 引用 所屬分類: APUE
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线播放一区| 老色批av在线精品| 久久久久久久精| 欧美一区二区三区日韩视频| 亚洲综合色网站| 亚洲男人第一网站| 欧美一级电影久久| 老牛影视一区二区三区| 麻豆视频一区二区| 亚洲国内自拍| 亚洲另类视频| 欧美一级二级三级蜜桃| 欧美+亚洲+精品+三区| 欧美国产日本| 国产欧美一区二区三区久久| 亚洲国产精品一区二区第四页av| 一本久久知道综合久久| 亚洲欧美美女| 欧美肥婆bbw| 国产精品99久久99久久久二8| 性做久久久久久免费观看欧美| 久久久人成影片一区二区三区观看 | 欧美成人午夜激情在线| 亚洲国产精品第一区二区| 亚洲精品一区二区三区福利| 香蕉国产精品偷在线观看不卡| 麻豆av一区二区三区久久| 亚洲人成亚洲人成在线观看| 亚洲欧美成人精品| 欧美激情精品| 精品96久久久久久中文字幕无| 一区二区91| 欧美超级免费视 在线| 亚洲在线成人| 欧美日韩精品一区二区三区| 亚洲福利小视频| 久久精品免视看| 亚洲视频在线观看| 欧美激情a∨在线视频播放| 国户精品久久久久久久久久久不卡| 亚洲人体偷拍| 免费不卡欧美自拍视频| 亚洲欧美日韩国产一区| 欧美日韩综合一区| 最新精品在线| 噜噜爱69成人精品| 欧美一区二区三区久久精品茉莉花 | 宅男在线国产精品| 欧美成人精品一区| 亚洲国产老妈| 蜜臀久久99精品久久久久久9 | 1024成人| 麻豆免费精品视频| 久久精品国亚洲| 国产精品卡一卡二| 亚洲伊人伊色伊影伊综合网| 亚洲国产另类精品专区 | 男人的天堂成人在线| 国产一区二区日韩精品欧美精品| 99在线精品免费视频九九视| 亚洲人成久久| 欧美伦理a级免费电影| 亚洲日本欧美天堂| 亚洲人在线视频| 欧美日韩成人在线| 亚洲女人av| 欧美一区二区性| 黄色一区二区在线| 欧美大成色www永久网站婷| 免费欧美电影| 亚洲午夜影视影院在线观看| 一区二区三区.www| 国产精品日韩在线观看| 性久久久久久久久| 久久www成人_看片免费不卡| 黄色日韩在线| 韩国久久久久| 欧美电影在线| 欧美日韩国产在线播放网站| 亚洲一区二三| 欧美一区2区视频在线观看| 永久免费精品影视网站| 亚洲国产高清一区| 欧美日韩一区国产| 欧美在线一级va免费观看| 久久精品国产清高在天天线 | 欧美视频你懂的| 欧美一级午夜免费电影| 欧美亚洲自偷自偷| 亚洲人在线视频| 亚洲综合欧美日韩| 亚洲福利av| 亚洲一区欧美激情| 亚洲国产精品成人| 一区二区三区www| 精品成人一区二区三区| 亚洲精品三级| 伊人久久综合| 亚洲视频1区| 亚洲区一区二区三区| 午夜精品成人在线视频| 亚洲人永久免费| 性欧美长视频| 亚洲视频欧美在线| 久久亚洲午夜电影| 亚洲欧美在线免费| 欧美高清你懂得| 久久精选视频| 国产精品女人久久久久久| 欧美成人在线免费观看| 国产亚洲精久久久久久| 夜夜嗨av一区二区三区四季av| 在线观看一区二区精品视频| 亚洲综合色自拍一区| 在线亚洲精品| 嫩草国产精品入口| 欧美暴力喷水在线| 国产在线高清精品| 亚洲女人av| 亚洲一级片在线看| 欧美福利在线观看| 美日韩在线观看| 国产一区亚洲一区| 午夜久久久久久久久久一区二区| 一区二区三区日韩精品| 欧美成年人网| 亚洲国产一区二区三区高清| 亚洲电影第三页| 久久三级福利| 欧美激情综合色| 亚洲黄一区二区三区| 久久久久成人网| 麻豆久久久9性大片| 影音先锋久久久| 久久久青草婷婷精品综合日韩| 久久久免费精品| 国产欧美精品在线| 欧美一级欧美一级在线播放| 亚洲欧美亚洲| 国产欧美日韩中文字幕在线| 亚洲综合激情| 国产一区日韩欧美| 久久不射电影网| 蜜月aⅴ免费一区二区三区| 精品51国产黑色丝袜高跟鞋| 久久深夜福利免费观看| 亚洲国产成人在线视频| 日韩视频在线播放| 欧美日韩国产首页在线观看| 日韩午夜精品视频| 亚洲一区www| 国产女人精品视频| 欧美主播一区二区三区美女 久久精品人| 久久精品国亚洲| 亚洲国产婷婷| 欧美日韩伦理在线免费| 宅男噜噜噜66国产日韩在线观看| 亚洲综合视频1区| 国产综合精品一区| 欧美肥婆在线| 亚洲一区二区三区欧美| 蜜臀久久久99精品久久久久久| 亚洲欧洲中文日韩久久av乱码| 欧美另类女人| 亚洲一区二区三区国产| 久久夜色精品国产| 亚洲人成网站在线播| 国产精品毛片va一区二区三区 | 欧美日韩在线第一页| 欧美一级在线播放| 亚洲国产第一| 久久国产精品久久精品国产| 亚洲高清资源综合久久精品| 欧美日韩在线不卡| 久久久91精品| 亚洲一区二区三区免费观看| 欧美成人激情视频| 午夜精品久久久99热福利| 亚洲国产精品成人va在线观看| 国产精品成人一区二区| 老司机午夜精品| 欧美亚洲免费电影| 亚洲最新在线| 欧美大片在线观看一区| 久久国产精品一区二区| 一区二区精品在线| 亚洲黄色三级| 激情成人综合| 国产视频在线一区二区| 欧美午夜精品久久久久久孕妇| 欧美/亚洲一区| 久久久久久精| 欧美在线免费| 欧美一区二区久久久| 一区二区三区视频在线播放| 欧美国产日产韩国视频| 久久久久久网站| 欧美在线免费视频| 亚洲欧美中日韩| 亚洲在线观看视频网站|