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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LInux 操作系統(tǒng)中斷介紹

科技綠洲 ? 來源:Linux開發(fā)架構(gòu)之路 ? 作者:Linux開發(fā)架構(gòu)之路 ? 2023-11-13 11:36 ? 次閱讀

LInux 操作系統(tǒng)中斷

什么是系統(tǒng)中斷

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

CPU 在執(zhí)行任務(wù)途中接收到中斷請求,需要保存現(xiàn)場后去處理中斷請求!保存現(xiàn)場稱為中斷處理程序!處理中斷請求也就是喚醒對應(yīng)的任務(wù)進(jìn)程來持有CPU進(jìn)行需要的操作!

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

  • 軟中斷(80中斷)

由CPU產(chǎn)生的;CPU檢查到程序代碼段發(fā)生異常會切換到內(nèi)核態(tài);

  • 硬中斷

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

CPU收到信號后就會執(zhí)行網(wǎng)卡對應(yīng)的中斷處理程序!

內(nèi)核在系統(tǒng)中斷時做了什么事

每種中斷都有它對應(yīng)的中斷處理程序;

對應(yīng)到內(nèi)核的某一個代碼段;

CPU接收到中斷后;首先需要將寄存器中數(shù)據(jù)保存到進(jìn)程描述符!PCB

隨后切換到內(nèi)核態(tài)處理中斷處理程序!執(zhí)行網(wǎng)卡的程序;

執(zhí)行完畢之后切換到用戶態(tài),根據(jù)PCB內(nèi)容恢復(fù)現(xiàn)場!然后就可繼續(xù)執(zhí)行代碼段了!

硬件中斷觸發(fā)的過程

圖片

中斷請求寄存器:保存需要發(fā)送中斷請求的設(shè)備記錄!

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

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

圖片

操作系統(tǒng)啟動時需要將硬件向量值與處理程序地址進(jìn)行映射!當(dāng)硬件發(fā)送中斷信息時只會發(fā)送向量值,通過匹配找到對應(yīng)的處理程序!

Socket基礎(chǔ)

Socket讀寫緩沖區(qū)機制

圖片

所謂socket,在底層也無非就是一個對象,通過對象綁定兩個緩沖區(qū),也就是數(shù)據(jù)隊列,然后調(diào)用系統(tǒng)API對這兩個緩沖區(qū)的數(shù)據(jù)進(jìn)行操作罷了!

發(fā)數(shù)據(jù);用戶態(tài)轉(zhuǎn)內(nèi)核態(tài),將數(shù)據(jù)拷貝到send緩存區(qū),然后調(diào)用write系統(tǒng)調(diào)用將數(shù)據(jù)拷貝到網(wǎng)卡,再由網(wǎng)卡通過TCP/IP協(xié)議進(jìn)行數(shù)據(jù)包的網(wǎng)絡(luò)發(fā)送!

socket兩種工作模式

  • BIO

總結(jié):讀數(shù)據(jù)讀不到就一直等,發(fā)數(shù)據(jù)發(fā)不了就一直等!

  • NIO

讀數(shù)據(jù)讀不到就等一會再讀,取數(shù)據(jù)取不到就等一會再取!

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

最后發(fā)送端的數(shù)據(jù)緩沖區(qū)也會被打滿!

系統(tǒng)調(diào)用;用戶態(tài)------內(nèi)核態(tài)

  • 系統(tǒng)調(diào)用:

int 0X80對應(yīng)的就是系統(tǒng)調(diào)用中斷處理程序;向量值為128;system_call;

圖片

IRQ是有限的,不可能為每一個系統(tǒng)調(diào)用都分配一個向量值,所以統(tǒng)一使用80中斷來進(jìn)行系統(tǒng)調(diào)用的路由!

為什么要有這兩種狀態(tài)

指令的危險程度不一樣;

對于不同的指令,為了保證系統(tǒng)安全,劃分了用戶空間和內(nèi)核空間;

linux中:0表示內(nèi)核態(tài),3表示用戶態(tài)!

所以:linux在創(chuàng)建進(jìn)程的時候就會為進(jìn)程分配兩塊空間;

用戶棧:分配變量,創(chuàng)建對象

內(nèi)核棧:分配變量!

什么時候進(jìn)程進(jìn)行切換至內(nèi)核態(tài)

硬中斷;

用戶態(tài)中代碼出現(xiàn)錯誤也要切換!

進(jìn)程切換時都做了什么

CPU中存在很多寄存器

圖片

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

進(jìn)程PCB:在OS創(chuàng)建進(jìn)程的時候同時也會分配一段空間存放進(jìn)程的一些信息;其中就有一個字段指向一個數(shù)據(jù)結(jié)構(gòu);叫做進(jìn)程控制塊PCB:

用來描述和控制進(jìn)程的運行的一個數(shù)據(jù)結(jié)構(gòu)——進(jìn)程控制塊PCB(Process Control Block),是進(jìn)程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。

  • PCB是進(jìn)程存在的唯一標(biāo)志
  • 系統(tǒng)能且只能通過PCB對進(jìn)程進(jìn)行控制和調(diào)度
  • PCB記錄了操作系統(tǒng)所需的、用于描述進(jìn)程的當(dāng)前情況以及控制進(jìn)程運行的全部信息

所以:在進(jìn)程進(jìn)行切換的時候CPU中的數(shù)據(jù)保存到了PCB中,供CPU回來時讀取恢復(fù)!

Linux select 多路復(fù)用函數(shù)

select就是一個函數(shù):只要傳入相應(yīng)的參數(shù)就能獲得相應(yīng)的數(shù)據(jù):

1、們所關(guān)心的文件描述符fd;

2、描述符中我們關(guān)心的狀態(tài):讀事件、寫事件、等

3、等待時間

調(diào)用結(jié)束后內(nèi)核會返回相關(guān)信息給我們!

做好準(zhǔn)備的個數(shù)

哪些已經(jīng)做好準(zhǔn)備;有了這些返回信息,我們就可以調(diào)用合適的IO函數(shù)!這些函數(shù)就不會再被阻塞了;-

函數(shù)詳解

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

- maxfdp1 readset 和 wirteset中的最大有數(shù)據(jù)位
- readset  bitmap結(jié)構(gòu)的位信息;保存我們需要讀取的socket序號;
- writeset 寫數(shù)據(jù)信息
- exceptset 異常信息

圖片

select函數(shù)這里不再細(xì)講,可以翻看以前的文章

圖片

將函數(shù)需要的參數(shù)準(zhǔn)備好之后調(diào)用select;

select進(jìn)行80中斷;將rset數(shù)據(jù)拷貝到內(nèi)核中;查詢對應(yīng)的狀態(tài)之后設(shè)置rset對應(yīng)的位置值,

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

隨后遍歷這些位信息就可以調(diào)用read或wirte進(jìn)行緩沖區(qū)的操作了!

缺點

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

select多路復(fù)用器底層原理分析

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

epoll函數(shù)

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

既然是函數(shù),看看相關(guān)的函數(shù)實現(xiàn):

實現(xiàn)思路:

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

事件隊列:存放已經(jīng)建立所有socket連接

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

其實epoll就像一個數(shù)據(jù)庫;里面有兩個數(shù)據(jù)表;一個放連接列表;一個放準(zhǔn)備就緒的連接列表;

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

創(chuàng)建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);

對事件隊列進(jìn)行增刪改:

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

op : 參數(shù)op有以下幾個值:EPOLL_CTL_ADD:注冊新的fd到epfd中,并關(guān)聯(lián)事件event;EPOLL_CTL_MOD:修改已經(jīng)注冊的fd的監(jiān)聽事件;EPOLL_CTL_DEL:從epfd中移除fd,并且忽略掉綁定的event,這時event可以為null;

fd : 表示socket對應(yīng)的文件描述符。

圖片

epoll底層原理解析

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11054

    瀏覽量

    216262
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11479

    瀏覽量

    213035
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7113

    瀏覽量

    125110
  • 程序代碼
    +關(guān)注

    關(guān)注

    4

    文章

    43

    瀏覽量

    15638
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Linux操作系統(tǒng)

    linux的教學(xué)內(nèi)容1 、Linux概述 2 、Linux操作系統(tǒng)安裝3、 Linux的內(nèi)核 4 、Li
    發(fā)表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b>

    Linux操作系統(tǒng)原理及應(yīng)用

    Linux操作系統(tǒng)原理及應(yīng)用 1.1  操作系統(tǒng)的地位 1.2  操作系統(tǒng)的功能 1.3  操作系統(tǒng)的發(fā)
    發(fā)表于 04-28 14:53 ?0次下載

    linux操作系統(tǒng)的安全性

    linux操作系統(tǒng)的安全性 計算機系統(tǒng)安全性的內(nèi)涵 操作系統(tǒng)的安全性功能 操作系統(tǒng)的安全機制 安全
    發(fā)表于 04-28 15:05 ?0次下載

    Linux操作系統(tǒng)實時性分析及改進(jìn)策略

    實時操作系統(tǒng)要求具有速度快和可預(yù)測性的特點,必須保證實時任務(wù)在要求的時間內(nèi)完成。本文在分析Linux 操作系統(tǒng)中斷方式和進(jìn)程調(diào)度等影響實時性的因素后,對
    發(fā)表于 06-15 10:13 ?14次下載

    Linux與其他操作系統(tǒng)的區(qū)別

    Linux與其他操作系統(tǒng)的區(qū)別 Linux與其他操作系統(tǒng)的區(qū)別  Linux可以與MS-DOS、OS/2、Windows等其他
    發(fā)表于 01-18 12:42 ?1730次閱讀

    什么是Linux操作系統(tǒng)

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

    手機支持的Linux操作系統(tǒng)

    手機支持的Linux操作系統(tǒng)   Linux系統(tǒng)Linux系統(tǒng)是一個源代
    發(fā)表于 01-28 17:07 ?1907次閱讀

    Linux操作系統(tǒng)分析

    一、簡介和開發(fā)工具鏈 二、Linux操作系統(tǒng)內(nèi)核部分 啟動 中斷、異常和系統(tǒng)調(diào)用 時鐘管理 內(nèi)存管理 進(jìn)程管理 文件系統(tǒng) 三、基本的應(yīng)用開發(fā)
    發(fā)表于 04-13 21:13 ?78次下載

    Linux的Ubuntu操作系統(tǒng)的安裝教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux的Ubuntu操作系統(tǒng)的安裝教程免費下載。
    發(fā)表于 12-03 16:36 ?22次下載
    <b class='flag-5'>Linux</b>的Ubuntu<b class='flag-5'>操作系統(tǒng)</b>的安裝教程

    趣談Linux操作系統(tǒng)

    趣談Linux操作系統(tǒng)
    的頭像 發(fā)表于 01-13 16:00 ?6758次閱讀

    基于linux的十大操作系統(tǒng)排名

    眾多的版本中找到自己需要的操作系統(tǒng)呢?下面小編介紹了基于linux的十大操作系統(tǒng)排名,大家可以從中找到自己需要的linux
    發(fā)表于 07-10 16:23 ?1.6w次閱讀

    Linux操作系統(tǒng)與Windows操作系統(tǒng)的五大區(qū)別

    Linux操作系統(tǒng)和Windows操作系統(tǒng)身為三大操作系統(tǒng)巨頭里面的兩大巨頭,他們有什么區(qū)別呢?首先,先要聲明一點,所有以Linux內(nèi)核為基
    發(fā)表于 07-10 16:28 ?8157次閱讀

    Linux嵌入式操作系統(tǒng)有哪些優(yōu)勢

    嵌入式Linux操作系統(tǒng)是將Linux操作系統(tǒng)進(jìn)行裁剪,使Linux操作系統(tǒng)能夠在嵌入式計算機
    發(fā)表于 07-10 16:34 ?5329次閱讀

    LINUX操作系統(tǒng)的安裝與Linux常用文件命令

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

    什么是LInux 操作系統(tǒng)中斷

    LInux 操作系統(tǒng)中斷 什么是系統(tǒng)中斷 這個沒啥可說的,大家都知道; CPU 在執(zhí)行任務(wù)途中接收到中斷
    的頭像 發(fā)表于 11-10 11:29 ?906次閱讀
    什么是<b class='flag-5'>LInux</b> <b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>中斷</b>
    主站蜘蛛池模板: 亚洲第一免费网站 | 女人张腿让男子桶免费动态图 | 调教r18车肉高h男男 | av天天看| 色婷婷久| 天天操夜夜摸 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 骚淫| 一本大道高清在线视频 视频 | 欧美67194| 香港三澳门三日本三级 | 亚洲一二三区在线观看 | 亚洲成人免费网站 | 国产毛片农村妇女aa板 | 色多多在线 | 国模精品 | 视频一区 在线 | 深夜动态福利gif动态进 | 亚洲激情 | 黑人黑粗硬视频 | 天天操综| 一级特黄特黄的大片免费 | 9久久99久久久精品齐齐综合色圆 | 欧洲人体超大胆露私视频 | 日本www色| 久久精品亚洲 | 激情综合在线观看 | bt种子磁力天堂torrent | 午夜日韩精品 | 亚州1区2区3区4区产品乱码2021 | 久久成人国产精品免费 | 午夜看片影院在线观看 | 久久这里只有精品任你色 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲国产综合久久精品 | 免费爱爱网址 | 中文字幕一区二区三区永久 | 欧美伊人网 | 精品国内一区二区三区免费视频 | 黄黄视频免费看 | 超级碰碰青草久热国产 |