日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

当你打开终端并输入命令时会发生什么?(上)

發布時間:2023/12/24 windows 32 coder
生活随笔 收集整理的這篇文章主要介紹了 当你打开终端并输入命令时会发生什么?(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哈嘍大家好,我是咸魚

參加過校招面試的小伙伴們肯定對下面這道面試題很熟悉:“當你在瀏覽器輸入一段網址后會發生什么?”。這道面試題可以說是很經典了,因為其涉及大量網絡協議,可以非常直觀的看出小伙伴們對計算機網絡體系的整體把握程度

但如果問題換成:“當你打開終端并輸入 ls 時會發生什么?”,有多少小伙伴能夠回答出來呢?

終端的前世今生

大多數現代終端應用程序的工作方式都來自于其歷史前輩——電傳打字機(teletypes,簡稱 tty)

在大型計算機的時代,當時數據存儲在磁帶上,計算機的內存以 kB 為單位,電傳打字機就是為了它們而被設計出來

如上圖,左邊的是 IBM 2741電傳打字機,右邊是 IBM System/360 Mo. 40大型計算機

電傳打字機是允許用戶與計算機交互的基本文本客戶端。teletypes 其實是 teletypewriter的縮寫,因為它是從打字機(typewriters)演變過來的

如上圖所示,電傳打字機和大型計算機通過連接兩端的物理線來進行通信。溝通過程如下:

  • 當用戶從電傳打字機輸入時,ASCII 文本將一個字符一個字符地通過網絡傳輸
  • 計算機的內核接收字符并對其進行解碼
  • 接著字符被送到一個名為 TTY driver 的驅動程序,這里負責將輸入發送到用戶程序并收集輸出
  • 最后,內核將輸出發送回電傳打字機 ,以便顯示給用戶

需要提到的一點是 line discipline(行規則),它會將字符緩沖到內核內存中,直到按下 Enter” 鍵,程序才會接收到輸入

line discipline 允許這塊緩沖區是可編輯的,并提供了一些與程序無關的快捷鍵(例如 ctrl-w)

這在當時是一項重要的性能優化,因為讓程序員一個字符一個字符的處理是非常低效的

隨著計算技術的進步,這些獨立組件中的許多都實現了現代化。比如說電傳打字機被終端所取代,終端是完全電子的機器,包括電子顯示器

上圖是 DEC 于 1978 年發布的 VT100 終端機(VT = video terminal),它實現并推廣了至今仍在使用的 ANSI 轉義碼

隨著電子終端的誕生,出現了越來越多的功能(例如顏色、鈴聲)。但本質上跟電傳打字機完全相同——發送輸入字符流并顯示輸出

現如今人人都有一臺自己的電腦,這些電腦的操作系統可以監督許多應用程序,終端不再是專門的硬件,而是變成了這些應用程序中的一個

與典型的 GUI 應用程序一樣,終端是操作系統監督下的一個進程,它監聽來自用戶的事件和輸入,并告訴操作系統在窗口中顯示什么(終端不直接與外設交互,而是通過驅動程序和窗口管理器)

有時候我們還會聽到 ”終端模擬器“ 這個詞,而不是簡單的稱之為 ”終端“。這是因為 ”終端“ 指的是專門的硬件(終端機),而現在大多數的終端只是對該設備的模擬,是一個應用程序

但是我們這里不做區分,”終端模擬器“ 和 ”終端“ 含義一樣

那么當我們打開終端時會發生什么呢?

打開終端

上面我們提到過,終端是一個應用程序,能夠讓你 ”使用你的電腦“(即在上面運行程序)。我們的電腦上可能已經存在了 ls、rm、mv 等程序

但是我們不滿足于使用這些簡單的命令,我們還希望使用腳本來實現自動化, 這些腳本將許多命令的序列組合在一起,使用分支條件邏輯,運行重復循環或并行化命令等

為了讓計算機能夠讀懂我們的腳本并執行起來,我們需要一個完整的可交互的解釋型的編程環境——shell

將其他程序作為進程運行,讓操作系統內核讀懂你寫的腳本,這些工作都由 shell 完成。目前常見的 shell 有 Bash、Zsh 等

終端和 shell 是兩個獨立的程序:

  • shell 負責解釋你輸入的命令
  • 終端負責 UI 相關的東西,比如字體、顏色等

當我們打開終端時,終端會根據用戶生成一個 shell 進程,以及用戶與 shell 之間,用戶與 shell 啟動的進程之間通信的方法

這個 shell 進程負責解釋和執行用戶輸入的命令,并與用戶進行交互。用戶在終端輸入的命令將通過這個通信通道傳遞給 shell 進程進行解釋執行,并將執行結果反饋給用戶顯示在終端上

創建 PTY

偽終端設備(PTY)是在計算機操作系統中創建的一個虛擬設備,用于模擬物理終端的功能

在 UNIX、Linux 和類 UNIX 系統中,PTY 用于在用戶和程序之間建立一個通信通道,允許用戶通過終端會話與程序進行交互

PTY通常由兩個主要部分組成:主設備(leader)和從設備(follower)。leader端連接到用戶終端,follower端連接到一個或多個程序

當用戶打開終端并啟動一個 shell 時,終端模擬器會創建一個 PTY,并將 leader 端連接到用戶界面,同時將 follower 端連接到 shell 或其他命令行程序。用戶輸入的命令通過 leader 端傳輸到 follower端,follower端執行這些命令并將輸出發送回 leader 端,最終顯示在用戶界面上

在 Unix 中,一切皆文件,這句話指的是 Unix 中的所有東西都有與文件相同的讀/寫接口。leader 的 fd(文件描述符) 指向內存中的一個緩沖區,而 follower 是一個在磁盤上具有實際路徑的字符設備文件。

上圖可以看到,我們打開了兩個終端(/dev/pts/0、/dev/pts/1),啟動了兩個 shell 進程。如果我們在終端1(/dev/pts/1)中敲命令并重定向到終端0(/dev/pts/0),可以看到輸出結果是在終端0中顯示的

生成 shell

終端會話在啟動時可能會為shell創建一個子進程,這個子進程將作為 shell 的實例來執行用戶的命令

UNIX 和類 UNIX 系統中,終端會話會使用偽終端設備(PTY)來與 shell 進程進行通信,通過這種方式,終端會話可以讀取和寫入 shell 的輸入、輸出和錯誤輸出(fd 0到2)

shell 初始化

在Linux中,用戶打開終端啟動 shell 進程時會進行 shell 初始化,這個過程涉及一些配置文件和腳本的執行,用來設置用戶的環境和啟動 shell 的行為

步驟大致如下:

  1. 讀取配置文件:在用戶登錄時,shell 會讀取一系列的配置文件來設置用戶的環境變量、別名、函數等。這些配置文件可以包括全局配置文件(例如/etc/profile)和用戶特定的配置文件(例如~/.bash_profile~/.bashrc等)
  2. 執行配置命令:配置文件中可以包含各種設置和命令,例如設置環境變量、修改提示符、定義別名和函數等。這些命令會在 shell 啟動時執行,以確保在用戶登錄后設置了所需的環境和行為
  3. 啟動shell:一旦執行了配置文件中的命令,shell 就會準備就緒,等待用戶的輸入。這時,shell 的提示符會出現,等待用戶輸入命令。

總結

以上是生活随笔為你收集整理的当你打开终端并输入命令时会发生什么?(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品亚洲一区二区三区在线观看 | 性淫影院 | 在线观看中文字幕 | 国产十区 | 欧美调教视频 | 一区二区三区有限公司 | www.日韩.com| 麻豆av影视| 伊人福利在线 | 日本不卡一二 | 三级少妇 | 日本一区二区三区在线观看视频 | 日韩色| 国产小视频网址 | 国产永久精品 | 亚洲欧美91 | 精品一区二区三区成人免费视频 | 国产在线久久久 | 一边摸一边做爽的视频17国产 | 乱老熟女一区二区三区 | 国产视频123区 | yjizz视频网 国产乱人对白 | 午夜时刻免费入口 | 久久国产成人精品国产成人亚洲 | 91黄瓜视频| 国产激情图片 | 久久免费激情视频 | 国产精品久久久久久久久晋中 | 欧美日韩亚洲激情 | 久久丫精品国产亚洲av不卡 | 波多野结衣99 | 揄拍自拍| 国产精品永久免费视频 | 亚洲精品乱码久久久久久久久久久久 | 丁香综合网 | 成人v片 | 特大黑人巨人吊xxxx | 国产专区在线视频 | 亚洲一区二区在线免费观看 | 久在线 | 香蕉人人精品 | 最新国产拍偷乱偷精品 | fc2ppv色の美マンに中出し | 免费黄色一级片 | 中文在线亚洲 | 日韩经典一区二区 | heyzo北岛玲在线播放 | 国产深喉视频一区二区 | av2014天堂| 最黄一级片 | 亚洲熟女少妇一区二区 | 日韩综合一区二区三区 | 一道本久久 | 男人干女人视频 | 毛片全黄| 大香焦久久 | 精品99久久久久成人网站免费 | 亚洲xx网 | 在线看日本 | 成人自拍一区 | 亚洲精品国产精品乱码桃花 | 最近免费中文字幕大全免费版视频 | 玖玖色资源 | 婷婷欧美 | 恶虐女帝安卓汉化版最新版本 | 亚洲av无码一区二区乱子伦as | 久久一区欧美 | 欧美人与禽性xxxxx杂性 | 伊人91 | 亚洲男人天堂网站 | 欧美激情视频一区二区三区在线播放 | 一区二区91 | 精品国偷自产国产一区 | 一级不卡| 他趴在我两腿中间添得好爽在线看 | 法国性xxxx精品hd | 精品久| 成人国产精品一区二区 | 亚洲AV成人午夜无码精品久久 | 黄色大片aaa | 91在线精品李宗瑞 | 成人久久av | 93久久精品日日躁夜夜躁欧美 | 毛片无码免费无码播放 | 婷婷丁香花五月天 | 国产乱子视频 | 日韩免费视频一区 | 在线免费黄色网址 | 蜜臀av88 | 自拍偷拍2019 | 日韩xxx视频| 国产呦小j女精品视频 | 国产乱码精品一区二区三 | 精品国产av鲁一鲁一区 | 一区二区视频在线看 | 婷婷一级片 | www毛片| 草草在线影院 | 天天干天天噜 |