2017年1月8日 星期日

[翻譯] 共享函式庫的載入期重定位

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

本文目標為解釋現代作業系統如何在有載入期重定位(load-time relocation)的情況下使用共享函式庫(shared library),雖然它聚焦於 32 位元 x86 上的 Linux 作業系統,但這些通用原則仍適用於其他作業系統與 CPU。

2016年12月18日 星期日

[翻譯] 程式是如何啟動的(下):ELF 二進位檔

  • 原文標題:How programs get run: ELF binaries
  • 原文網址:https://lwn.net/Articles/631631/
  • 原文作者:David Drysdale
  • 原文發表時間:2015 年 02 月 04 日
  • 譯註:
    • 根據原文使用的參考資料連結,原文應該是使用 3.18 版核心做為依據。

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

本系列的上一篇描述了在使用者空間對 execve() 的呼叫之後,Linux 核心用來執行程式的一般機制。然而,該文中特別描述的格式處置器(format handler)都會推延執行過程而在內部呼叫 search_binary_handler(),這個遞迴幾乎總是終止於對 ELF 二進位檔的調用,也就是本文的目標。

2016年12月10日 星期六

[翻譯] 程式是如何啟動的(上)

  • 原文標題:How programs get run
  • 原文網址:https://lwn.net/Articles/630727/
  • 原文作者:David Drysdale
  • 原文發表時間:2015 年 01 月 28 日
  • 譯註:
    • 根據原文使用的參考資料連結,原文應該是使用 3.18 版核心做為依據。

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

本文是一份系列文章中的上篇,旨在說明核心如何讓程式開始運行:當一個使用者程式調用系統呼叫 execve(),幕後到底發生了什麼?

2015年3月12日 星期四

[翻譯] 系統呼叫(system call)的剖析(下)

  • 原文標題:Anatomy of a system call, part 2
  • 原文網址:http://lwn.net/Articles/604515/
  • 原文作者:David Drysdale
  • 原文發表時間:2014 年 07 月 16 日

譯註:
  • 本文內容與圖片皆自原網址修改。
  • 根據原文使用的參考資料連結,原文應該是使用 3.14 版核心做為依據。

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

上一篇文章探索了系統呼叫(system call,或 syscall)的核心實作最平凡的形式:一個一般的系統呼叫、並在一個最普遍的架構上:x86_64。現在,用這個基本主軸的一些變體,含括了其他 x86 架構和其他系統呼叫機制,來完結我們在這方面的關注。我們要從探索各種 32 位元 x86 架構的變種開始,一張相關牽涉範圍的地圖也許對此有所幫助,這張地圖在檔案名稱和箭頭線段標籤上,都是可以點擊然後連結到被參考程式碼的:

2015年2月24日 星期二

[翻譯] 系統呼叫(system call)的剖析(上)

  • 原文標題:Anatomy of a system call, part 1
  • 原文網址:http://lwn.net/Articles/604287/
  • 原文作者:David Drysdale
  • 原文發表時間:2014 年 07 月 09 日

譯註:
  • 本文內容與圖片皆自原網址修改。
  • 根據原文使用的參考資料連結,原文應該是使用 3.14 版核心做為依據。

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

系統呼叫是使用者空間(user-space)下的程式與 Linux 核心互動的主要機制,既然它們這麼重要,那麼我們一點都不奇怪能夠發現核心引入各式各樣的機制,來確保系統呼叫能跨架構做一般性的實作,並能以一種既有效率,又有一致性的方法讓使用者空間可以使用。

2015年2月19日 星期四

[翻譯] Linux 二進位檔中的特殊區段(section)

  • 原文標題:Special sections in Linux binaries
  • 原文網址:http://lwn.net/Articles/531148/
  • 原文作者:Daniel Pierre Bovet
  • 原文發表時間:2013 年 01 月 03 日

譯註:
  • 標題中的 Linux 指的是 Linux 核心。
  • 本文內容與圖片皆自原網址修改。
  • 根據核心的釋出時間,我推論原文應該是使用 3.7 版核心做為依據,因此在相關資料查詢時也都使用 3.7 版做為探索的依據。

↓↓↓↓↓↓ 正文開始 ↓↓↓↓↓↓

一個區段(section)是目的檔(object file)中的一塊區域,包含了對於連結(link,譯註 1)有用的資訊:程式的執行碼、資料、重定位資訊(relocation information)和更多東西。事實表明了,Linux 核心存在某些額外的區段型態,稱為「特殊區段」(special section),它們被用來實作各樣的核心功能(kernel feature),由於特殊區段並不為人所熟知,所以這裡值得對這個主題做點詳細說明。

2015年2月10日 星期二

現成的 Linux 核心交互參照網站



LXR 最早是用來對 Linux 核心進行交互參照,並且提供網頁介面的工具,所以名字源自「Linux Cross-Referencer」。然而現在它已經不僅僅用於 Linux 核心,而適用於任何情況。