關於核心態與使用者態以及重定向

2021-10-07 03:32:55 字數 772 閱讀 4430

核心態與使用者態:

使用者態如何切換到核心態?

發起系統呼叫。fwrite write read memcpy(中間兩個是系統呼叫)

重定向:改變資料流向,將寫入指定檔案的資料,改變之後寫入到另外乙個檔案

重定向指的是描述符的重定向—因為描述符並沒有改變,改變的是描述符所對應的檔案資訊(1號座位的故事)

如何實現重定向:

1)通過close實現

2)還可以通過重定向介面實現:dup2(int oldfd ,int newfd)。 讓newfd也指向了oldfd所指的檔案,如果newfd本身也開啟了乙個檔案,則關閉newfd所指向的檔案,此時newfd和oldfd都指向了oldfd所指向的檔案

minishell中的重定向實現:

ls -l >> test.txt

在命令字串中若有重定向符號

追加重定向

清空重定向

如果遇到符號,則從符號其實位置進行截斷,前邊是命令,後邊是重定向檔案

字串檢測》:重定向符號之前是命令及引數,按照原先解析方式進行解析即可。

重定向符號》之後,有要重定向的檔名稱

在子程序中,進行程式替換之前

按照重定向方式(追加/清空)開啟檔案,dup2(fd,1)

因為ls瀏覽目錄的內容—實際上就是將目錄中的檔名稱列印到標準輸出

重定向的操作就是,將要列印到標準輸出的資料寫入到新檔案中

因此子程序的操作就是:開啟新檔案–》標準輸出重定向dup2()

核心態與使用者態

核心態與使用者態是作業系統的兩種執行級別,intel cpu提供ring0 ring3三種級別的執行模式。ring0級別最高,ring3最低。其中特權級0 ring0 是留給作業系統 裝置驅動程式 使用的,它們工作於系統核心態 而特權極3 ring3 則給普通的使用者程式使用,它們工作在使用者態。執...

核心態與使用者態

一 unix linux的體系架構 如上圖所示,從巨集觀上來看,linux作業系統的體系架構分為使用者態和核心態 或者使用者空間和核心 核心從本質上看是一種軟體 控制計算機的硬體資源,並提供上層應用程式執行的環境。使用者態即上層應用程式的活動空間,應用程式的執行必須依託於核心提供的資源,包括cpu資...

核心態與使用者態

核心態 cpu可以訪問記憶體的所有資料,包括外圍裝置,例如硬碟,網絡卡,cpu也可以將自己從乙個程式切換到另乙個程式。使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置,占用cpu的能力被剝奪,cpu資源可以被其他程式獲取。為什麼要有使用者態和核心態?由於需要限制不同的程式之間的訪問能力,防止他們...