Linux操作系統及調用接口


Linux操作系統包含以下各子系統:

 

 

 

系統調用子系統:操作系統的功能調用同一入口;

進程管理子系統:對執行程序進行生命周期和資源管理;

內存管理子系統:對系統的內存進行管理、分配、回收、隔離;

文件子系統    :系統內部一切皆文件,對文件進行管理;

設備子系統    :對輸入、輸出設備進行管理;

網絡子系統    :負責對外交流,網絡協議棧和收發網絡包。

內核結構圖如下:

 

 

 

1.虛擬文件系統VFS

  位於用戶空間和內核具體文件系統之間,是各種具體的文件系統提取出來的抽象層,為用戶提供標准的文件系統調用接口。對具體的文件系統的數據結構進行抽象,以統一的接口進行處理調用(readopen)。

 

 

 

1. 系統IO操作(接口)

包括:a.基本文件操作:openreadwrite;  b.文件鎖(避免多個用戶進程對同一文件競爭操作,fcntl()對文件進行上鎖),解決文件共享問題;  c.多路復用:解決I/O復用問題(系統接口重復使用)

2.1.linux IO模型(5種)

應該是:同步阻塞IO、同步非阻塞IO、多路復用IO、信號驅動IO、異步IO

  阻塞IO模型:系統調用的IO(接口)函數未完成,一直阻塞掛起,直到數據拷貝完成

  非阻塞IO模型:無論應用程序在系統調用時是否完成,都立即返回!

  多路復用IO模型:系統調用未完成,函數等待,系統IO還可以操作其他的函數調用;(多功能)

  異步IO:進程先讓內核完成IO操作,內核在通知進程操作完成;(分道)

前四種都是同步IO,只有最后一種才是異步IO

2.2多路復用IOepollpollselect函數)

  selectpoll基本是差不多的,除了select監聽事件個數限制(1024個),其他和poll沒有太大區別。用戶程序每次監聽,都要將其監聽事件集從用戶態拷貝到內核態執行,然后再返回用戶態,一旦有事件觸發,只能通過遍歷的方式才能找到觸發事件,開銷很大。

  Epoll最優秀的多路復用機制!監測無上限,在注冊新事件時只需一次拷貝所有監聽事件到內核即可epoll是只關心活躍的fd,通過回調機制無序遍歷,提高效率。

3標准IO操作

  基本的IO操作(readwriteopen都沒有緩沖空間,用戶程序必須要從用戶態切換至內核態,執行相應的命令操作,再返回用戶態繼續執行代碼。 -> 為提高用戶程序執行效率,Linux還提供了標准IO操作(fopen()fread()fwrite()gets()puts()等,r,rb+,w.wb+)。帶緩沖區的,基於流緩沖,將數據盡量多的寫入緩存區再一次性讀取,減少用戶態-內核態-用戶態的切換,提高程序執行效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM