在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是LInux 操作系統中斷

科技綠洲 ? 來源:Linux開發架構之路 ? 作者:Linux開發架構之路 ? 2023-11-10 11:29 ? 次閱讀

LInux 操作系統中斷

什么是系統中斷

這個沒啥可說的,大家都知道;

CPU 在執行任務途中接收到中斷請求,需要保存現場后去處理中斷請求!保存現場稱為中斷處理程序!處理中斷請求也就是喚醒對應的任務進程來持有CPU進行需要的操作!

有了中斷之后,提升了操作系統的性能!可以異步并行處理很多任務!

  • 軟中斷(80中斷)

由CPU產生的;CPU檢查到程序代碼段發生異常會切換到內核態;

  • 硬中斷

由硬件設備發起的中斷稱為硬中斷!可以發生在任何時間;比方說網卡設備接收到一組報文;對應的報文會被DMA設備進行拷貝到網卡緩沖區!然后網卡就會向CPU發起中斷信號(IRQ):

CPU收到信號后就會執行網卡對應的中斷處理程序!

內核在系統中斷時做了什么事

每種中斷都有它對應的中斷處理程序;

對應到內核的某一個代碼段;

CPU接收到中斷后;首先需要將寄存器中數據保存到進程描述符!PCB

隨后切換到內核態處理中斷處理程序!執行網卡的程序;

執行完畢之后切換到用戶態,根據PCB內容恢復現場!然后就可繼續執行代碼段了!

硬件中斷觸發的過程

圖片

中斷請求寄存器:保存需要發送中斷請求的設備記錄!

優先級解析器:中斷請求是有優先級之分的,因為CPU不能同時執行多個中斷請求!

正在服務寄存器:正在執行的請求!比方我正在打字,這里面記錄的就是鍵盤IRQ1 !

圖片

操作系統啟動時需要將硬件向量值與處理程序地址進行映射!當硬件發送中斷信息時只會發送向量值,通過匹配找到對應的處理程序!

Socket基礎

Socket讀寫緩沖區機制

圖片

所謂socket,在底層也無非就是一個對象,通過對象綁定兩個緩沖區,也就是數據隊列,然后調用系統API對這兩個緩沖區的數據進行操作罷了!

發數據;用戶態轉內核態,將數據拷貝到send緩存區,然后調用write系統調用將數據拷貝到網卡,再由網卡通過TCP/IP協議進行數據包的網絡發送!

socket兩種工作模式

  • BIO

總結:讀數據讀不到就一直等,發數據發不了就一直等!

  • NIO

讀數據讀不到就等一會再讀,取數據取不到就等一會再取!

接受端緩沖區打滿了,線程又搶占不到CPU去清理緩沖區,怎么辦!

最后發送端的數據緩沖區也會被打滿!

系統調用;用戶態------內核態

  • 系統調用:

int 0X80對應的就是系統調用中斷處理程序;向量值為128;system_call;

圖片

IRQ是有限的,不可能為每一個系統調用都分配一個向量值,所以統一使用80中斷來進行系統調用的路由!

為什么要有這兩種狀態

指令的危險程度不一樣;

對于不同的指令,為了保證系統安全,劃分了用戶空間和內核空間;

linux中:0表示內核態,3表示用戶態!

所以:linux在創建進程的時候就會為進程分配兩塊空間;

用戶棧:分配變量,創建對象

內核棧:分配變量!

什么時候進程進行切換至內核態

硬中斷;

用戶態中代碼出現錯誤也要切換!

進程切換時都做了什么

CPU中存在很多寄存器

圖片

這些寄存器保存了進程在進行運算時的一些瞬時數據;如果現在要進行進程切換了;這些數據都需要找個地方保存起來;那么保存到哪里呢?

進程PCB:在OS創建進程的時候同時也會分配一段空間存放進程的一些信息;其中就有一個字段指向一個數據結構;叫做進程控制塊PCB:

用來描述和控制進程的運行的一個數據結構——進程控制塊PCB(Process Control Block),是進程實體的一部分,是操作系統中最重要的記錄型數據結構。

  • PCB是進程存在的唯一標志
  • 系統能且只能通過PCB對進程進行控制和調度
  • PCB記錄了操作系統所需的、用于描述進程的當前情況以及控制進程運行的全部信息

所以:在進程進行切換的時候CPU中的數據保存到了PCB中,供CPU回來時讀取恢復!

Linux select 多路復用函數

select就是一個函數:只要傳入相應的參數就能獲得相應的數據:

1、們所關心的文件描述符fd;

2、描述符中我們關心的狀態:讀事件、寫事件、等

3、等待時間

調用結束后內核會返回相關信息給我們!

做好準備的個數

哪些已經做好準備;有了這些返回信息,我們就可以調用合適的IO函數!這些函數就不會再被阻塞了;-

函數詳解

int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, timeval *timeout)

- maxfdp1 readset 和 wirteset中的最大有數據位
- readset bitmap結構的位信息;保存我們需要讀取的socket序號;
- writeset 寫數據信息
- exceptset 異常信息

圖片

select函數這里不再細講,可以翻看以前的文章

圖片

將函數需要的參數準備好之后調用select;

select進行80中斷;將rset數據拷貝到內核中;查詢對應的狀態之后設置rset對應的位置值,

完成后又拷貝到用戶態中的rset;這樣一來rset里面的位信息就代表了哪些socket是準備好了的!

隨后遍歷這些位信息就可以調用read或wirte進行緩沖區的操作了!

缺點

可以看到,while死循環中每次執行都將rset重新置位;然后循環重新SET位信息;隨后才會發起請求!過程較為繁瑣且重復!

select多路復用器底層原理分析

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

epoll函數

了解到select的缺點后發現:select每次得到數據都要進行復位,然后又進行重復的步驟去內核中獲取信息;感覺就是很多時間都花在重復的勞動上,為了解決這個問題,linux在2.6引入epoll模型,單獨在內核區域開辟一塊空間來做select主動去做的事,select是主動查,epoll則是準備數據,線程來了直接取就行了;大大提升了性能

既然是函數,看看相關的函數實現:

實現思路:

在內核創建一塊空間;總所周知;linux下一切皆文件;所以所謂創建的空間也就是一個文件描述符fd,然后這個文件結構中有兩個指針指向另外兩個地址空間:事件隊列、就緒隊列

事件隊列:存放已經建立所有socket連接

就緒隊列:準備就緒的socket;也就是read或write的時候不用阻塞的socket;

其實epoll就像一個數據庫;里面有兩個數據表;一個放連接列表;一個放準備就緒的連接列表;

既然有這兩個隊列;就要涉及到增刪查;這就是另外兩個函數的來由;

創建epoll空間
int epoll_create(int size);


int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

對事件隊列進行增刪改:

epfd : epoll的文件描述符號:因為內核中可能有多個epoll

op : 參數op有以下幾個值:EPOLL_CTL_ADD:注冊新的fd到epfd中,并關聯事件event;EPOLL_CTL_MOD:修改已經注冊的fd的監聽事件;EPOLL_CTL_DEL:從epfd中移除fd,并且忽略掉綁定的event,這時event可以為null;

fd : 表示socket對應的文件描述符。

圖片

epoll底層原理解析

圖片

圖片

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5423

    瀏覽量

    123415
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11040

    瀏覽量

    216042
  • Linux
    +關注

    關注

    87

    文章

    11465

    瀏覽量

    212826
  • 操作系統
    +關注

    關注

    37

    文章

    7097

    瀏覽量

    124974
  • 程序
    +關注

    關注

    117

    文章

    3824

    瀏覽量

    82447
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux操作系統

    linux的教學內容1 、Linux概述 2 、Linux操作系統安裝3、 Linux的內核 4 、Li
    發表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>

    Linux操作系統原理及應用

    Linux操作系統原理及應用 1.1  操作系統的地位 1.2  操作系統的功能 1.3  操作系統的發
    發表于 04-28 14:53 ?0次下載

    linux操作系統的安全性

    linux操作系統的安全性 計算機系統安全性的內涵 操作系統的安全性功能 操作系統的安全機制 安全
    發表于 04-28 15:05 ?0次下載

    Linux操作系統實時性分析及改進策略

    實時操作系統要求具有速度快和可預測性的特點,必須保證實時任務在要求的時間內完成。本文在分析Linux 操作系統中斷方式和進程調度等影響實時性的因素后,對
    發表于 06-15 10:13 ?14次下載

    Linux與其他操作系統的區別

    Linux與其他操作系統的區別 Linux與其他操作系統的區別  Linux可以與MS-DOS、OS/2、Windows等其他
    發表于 01-18 12:42 ?1728次閱讀

    什么是Linux操作系統

    什么是Linux操作系統  簡單地說,Linux是一套
    發表于 12-26 12:04 ?1431次閱讀

    手機支持的Linux操作系統

    手機支持的Linux操作系統   Linux系統Linux系統是一個源代
    發表于 01-28 17:07 ?1895次閱讀

    Linux操作系統分析

    一、簡介和開發工具鏈 二、Linux操作系統內核部分 啟動 中斷、異常和系統調用 時鐘管理 內存管理 進程管理 文件系統 三、基本的應用開發
    發表于 04-13 21:13 ?78次下載

    趣談Linux操作系統

    趣談Linux操作系統
    的頭像 發表于 01-13 16:00 ?6736次閱讀

    基于linux的十大操作系統排名

    基于linux內核開源的特性,并隨著linux的不斷發展,各種基于Linux操作系統版本也在不斷發行出來,其中每一個不同版本的Linux
    發表于 07-10 16:23 ?1.6w次閱讀

    Linux操作系統與Windows操作系統的五大區別

    Linux操作系統和Windows操作系統身為三大操作系統巨頭里面的兩大巨頭,他們有什么區別呢?首先,先要聲明一點,所有以Linux內核為基
    發表于 07-10 16:28 ?8123次閱讀

    Linux嵌入式操作系統有哪些優勢

    嵌入式Linux操作系統是將Linux操作系統進行裁剪,使Linux操作系統能夠在嵌入式計算機
    發表于 07-10 16:34 ?5314次閱讀

    LINUX操作系統的安裝與Linux常用文件命令

    LINUX操作系統的安裝與Linux常用文件命令說明。
    發表于 06-02 17:45 ?3次下載

    linux屬于什么操作系統

    Linux屬于一種類UNIX操作系統Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX
    的頭像 發表于 11-08 11:01 ?5708次閱讀

    LInux 操作系統中斷介紹

    LInux 操作系統中斷 什么是系統中斷 這個沒啥可說的,大家都知道; CPU 在執行任務途中接收到中斷
    的頭像 發表于 11-13 11:36 ?1195次閱讀
    <b class='flag-5'>LInux</b> <b class='flag-5'>操作系統</b><b class='flag-5'>中斷</b>介紹
    主站蜘蛛池模板: 天天色天天摸 | 亚洲一区二区在线播放 | 特黄大片aaaaa毛片 | 特黄一级黄色片 | 美女张开腿露尿口给男人亲 | 欧美人与zoxxxx另类 | 天天干天天射天天插 | 高颜值大长腿美女啪啪 | 色多多黄色 | 人人干视频在线观看 | yy6080三级理论韩国日本 | 欧美式free群乱 | 69日本xxxxxxxxx18 69日本xxxxxxxxx19 | 农村妇女色又黄一级毛片卡 | 日本中文字幕在线播放 | 美女扒开内裤无遮挡禁18 | 在线看黄的网站 | 色婷婷综合缴情综六月 | 2020夜夜操| 亚洲一级视频在线观看 | 最新日本免费一区二区三区中文 | 国产一级特黄毛片 | 国产成年美女毛片80s | 天天射干 | 网色视频| 美女扒开尿口给男人桶爽视频 | 久青草国产免费观看 | 亚洲a网站| 中日韩免费视频 | 色播影院性播影院私人影院 | 久久婷婷色| 奇米欧美成人综合影院 | 色香视频首页 | 一级做a爰片久久毛片看看 一级做a爰片久久毛片毛片 | 国产特黄一级毛片特黄 | 欧美伊久线香蕉线新在线 | 亚洲专区一路线二 | 男女爱爱是免费看 | 男女一进一出抽搐免费视频 | 国产情侣自拍小视频 | 青草99 |