1. 程式人生 > 其它 >Linux程式設計入門(1)-理解系統程式設計

Linux程式設計入門(1)-理解系統程式設計

一些概念

作業系統職責:計算機用作業系統來管理所有的資源,並將不同的裝置和不同的程式連線起來。

作業系統與普通程式一樣,在記憶體中執行。它的特殊之處是,能把普通程式與其他程式或者裝置連線起來。

記憶體空間用來存放程式和資料,所有的程式都必須在記憶體空間中才能執行,用來容納作業系統的記憶體空間叫做系統空間,容納應用程式的記憶體空間叫做使用者空間

作業系統也被稱為核心。程式要從鍵盤得到資料,必須向核心發出請求;若在顯示器上顯示結果,也要通過核心,程式中所有對裝置的操作都是通過核心進行的。

作業系統的基本功能:(1)防止硬體被失控的應用程式濫用;(2)嚮應用程式提供簡單一致的機制來控制複雜而又通常大不相同的低階硬體裝置。

在進行系統程式設計時,必須對系統的結構和工作方式有更深的瞭解,要知道核心提供哪些服務(系統呼叫),如何使用他們,系統有哪些資源和裝置,不同的資源和裝置如何操作。

系統資源

  1. 處理器(Processor)

    處理器是執行程式指令的硬體裝置。核心能夠安排一個程式的執行、停止、恢復執行。

  2. 輸入輸出(I/O)

    程式中所有的輸入/輸出的資料、終端的輸入/輸出資料以及硬碟的輸入/輸出資料,都經過核心。

  3. 程序管理(Process Management)

    程序指程式的一次執行。核心與程序相關的服務有:新建程序、終止程序、程序排程。

  4. 記憶體(Memory)

    記憶體是計算機系統中很重要的資源,程式必須被裝載到記憶體中才可執行。核心的職責之一是記憶體管理。

  5. 裝置(Device)

    計算機系統可以有各種各樣的外設,他們的操作方式各不相同。核心能夠提供簡單而統一的操作方式。

  6. 計時器(Timers)

    程式的工作與時間有關,核心可以通過系統呼叫嚮應用程式提供計時器服務。

  7. 程序間通訊(Interprocess Communication)

    計算機的世界中,核心提供的服務使不同的程序間通訊成為可能,通訊也是資源。

  8. 網路(Networking)

    網路通訊也是核心提供的服務。

使用者角度理解Linux

  1. 登陸-執行程式-登出

    在登陸過程中,當用戶名和密碼驗證後,系統會啟動一個叫 shell 的程序,由這個程序處理使用者的請求。shell為使用者提供服務,shell和使用者之間的連線由核心控制。

    shell在螢幕上顯示提示符,使用者可以在提示符後輸入要執行的程式的名字,核心負責把使用者的輸入傳輸給shell。

    使用者登出時,核心會結束所有分配這個使用者的程序。

  2. 目錄操作

    • 目錄樹

      在Linux系統中,檔案和目錄被組織成樹狀結構,Linux提供相應的指令來對目錄進行操作。如圖為目錄樹的一部分

      檔案系統的最頂端是“/”,叫做根目錄。大多數的Linux系統都在根目錄下有 /etc、/home、/bin、/proc 等幾個子目錄,都有特定用途。

    • 目錄操作指令

      (1)ls——列出目錄內容

      (2)cd——改變當前目錄

      (3)pwd——顯示當前目錄

      (4)mkdir、rmdir——新建、刪除目錄

  3. 檔案操作

    • 檔案操作指令

      (1)cat,more,less,pg——檢視檔案內容

      (2)cp——檔案複製

      (3)rm——檔案刪除

      (4)mv——重新命名或移動檔案

      (5)lpr,lp——列印檔案

    • 檔案許可許可權

      每個檔案都有檔案所有者和檔案許可許可權。許可許可權分為3組,通過 ls -l 命令可以看到。

      - rwx rwx rwx r:read, w:write, x:execute

      user goup other

      與3組許可許可權對應,使用者也被分為3組:user 檔案所有者;group 與檔案所有者同組的使用者;other 其他使用者。每組使用者都可以有3種許可權:讀、寫、執行。

系統角度看Linux

Linux系統程式設計中3個重要的方面:

  • 通訊。某個使用者或程序如何與其他使用者或程序交換資訊?

  • 協作。程式如何來協調多個程序使得他們能夠沒有衝突的訪問共享資源?

  • 網路訪問。互相獨立的計算機通過網路連線到一起,計算機中的程式是如何來使用網路呢?

Linux主要結構

記憶體被分為系統空間和使用者空間,核心和它的資料結構位於系統空間,使用者程式位於使用者空間。使用者通過終端連線到系統。檔案存放在磁碟上,各種各樣的裝置被核心直接管理。使用者程式可以通過核心來訪問裝置。使用者也可以通過網路接入系統。

小結

  • 計算機系統包含了很多系統資源,程式利用這些資源來對資料進行儲存、轉換和處理。
  • Linux核心是多使用者系統的一箇中央管理程式,可以對程式和資源進行管理
  • 使用者訪問裝置必須經過核心
  • 一些Linux的系統功能是由多個程式的協作而實現的。
  • 編寫系統程式,必須對系統呼叫和相關的資料結構有深入的理解。

關注微信公眾號【一起學嵌入式】,獲取更多精彩內容