파이버 (컴퓨터 科學)

위키百科, 우리 모두의 百科事典.

파이버 (Fiber)는 컴퓨터 工學 에서 特히 가벼운 實行 스레드 이다.

스레드와 마찬가지로 파이버는 住所 空間 을 共有한다. 그러나 파이버는 協力的 멀티 태스킹을 使用하는 反面 스레드는 先占型 멀티 태스킹을 使用한다. 一般的인 스레드는 커널의 스레드 스케줄러에 依存해 實行 權限이 讓渡되지만, 파이버는 스스로 實行 權限을 讓渡한다.

파이버와 코루틴 [ 編輯 ]

파이버는 本質的으로 코루틴 과 類似하다. 差異點은 코루틴의 境遇 프로그래밍 言語 水準에서 具現되는 制御 흐름 人 反面, 파이버는 시스템 水準에서 具現되며 同時에 實行되지 않는 스레드의 母音인 것이다 두 槪念 中 어느 것이 먼저 나왔는지에 對한 異見이 있다. 코루틴을 시스템 水準으로 具現한 것인가 [1] , 코루틴을 具現하기 위한 基盤으로 만들어진 것인가에 對한 紛爭이다. [2]

長點과 短點 [ 編輯 ]

파이버가 協力的으로 멀티 태스킹하기 때문에 스레드 安全性 은 先占型 스레드보다 問題가 적으며, 스핀落 원自省 作業 을 包含한 同期化 構成은 파이버 單位가 自體的으로 讓渡를 하는 特性 德分에 동기화되므로 不必要하다. 그러나 많은 라이브러리는 非同期 I/O 를 遂行하기 위해 暗示的으로 파이버를 生成한다.

短點은 파이버가 先占型 스레드를 使用하지 않고는 多衆 프로세서 시스템을 使用할 수 없다는 것이다. 그러나 CPU 코어보다 더 많은 先占 스레드가 없는 M : N 스레딩 모델은 純粹 파이버 또는 純粹 先占 스레딩보다 더 效率的일 수 있다.

一部 서버 프로그램에서 파이버는 自體的으로 소프트 블록(soft block)을 使用하여 單一 스레드로 作動하는 上位 프로그램이 繼續 作動할 수 있도록 한다. 이런 設計에서 파이버는 CPU 處理가 必要없는 I/O 액세스에 主로 使用된다. 그래서 메인 프로그램이 旣存에 遂行中인 作業을 繼續할 수 다. 파이버는 單一 스레드 메인 프로그램에 對한 制御를 讓步하며 I/O 作業이 完了되면 파이버가 中斷 된 地點에서 繼續된다.

運營 體制 支援 [ 編輯 ]

파이버는 스레드에 비해 運營 體制의 支援이 相對的으로 덜 必要하다.

모던 유닉스(Unix) 시스템에서는 GNU Portable Threads 처럼 ucontext.h 라이브러리에서 提供되는 getcontext, setcontext와 swapcontext 函數를 利用해 具現하거나 boost.fiber 처럼 어셈블러를 使用하여 具現할 수 있다.

Microsoft Windows 에서 파이버는 ConvertThreadToFiber CreateFiber 呼出을 통해 스레드에 使用可能한 파이버를 生成할 수 있고, 스레드 로컬 스토리지와 類似한 파이버 로컬 스토리지는 變數(variable)의 固有한 複寫本을 生成할 수 있다. [3]

Symbian OS 의 Active Scheduler는 Fiber와 類似한 構造로 갖고 있다. 하나의 파이버를 갖고 있는 Symbian OS의 活性 客體(Active obejct) 는 非同期 呼出이 完了되면 Active Scheduler를 통해 實行된다.

여러 Active Object는 優先順位에 따라 實行되기까지 待機 狀態일 수 있으며, 各各의 Active Obejct는 實行時間에 制限을 갖는다.

같이 보기 [ 編輯 ]

參考 文獻 [ 編輯 ]

  1. A Fiber Class
  2. Shankar, Ajai (September 2003). “Implementing Coroutines for .NET by Wrapping the Unmanaged Fiber API” . 《MSDN Magazine》. Microsoft. 2003年 8月 19日에 原本 文書 에서 保存된 文書 . 2006年 12月 24日에 確認함 . This article shows how coroutines can be implemented for the .NET Framework by using the Fiber API and Managed Extensions for C++, and how they can be easily used with other .NET-compliant languages  
  3. Fibers , MSDN Library

參考 [ 編輯 ]