筆記】Operating System Security Models_作業系統_Processes and Threads, scheduling

Vienne's adventure life
5 min readMar 12, 2024

--

整理上課用的筆記~

Process 是 一個 program 執行在電腦的 memory 中,可以說它是 Program 的 instance,每個 process 都互相獨立,他並不是執行單位。

Program 是一個 binary 可以執行指令,儲存在硬碟中。

Thread 是 Process 的執行單位,同一個 Process 會有多 Thread,在同一個 Process 下的 Thread 共用資源(code, data, os resources)。是一個 lightweight process.

Process Scheduling
目標是要多工處理(Multiprogramming),利用 Time sharing 方式妥善的運用 CPU,讓 CPU可以處理很多事情。其中分別有 Job queue(New State), Ready Queue(Ready State), Device queue(Wait State) 處理 Processes。

專有名詞介紹:

  • Multiprogramming: Maximize CPU utilization
  • Time sharing: 頻繁切換 CPU 讓我使用者能跟所有程式同時互動

Schedulers (選擇誰要執行):

  • Short-term Scheduler: 很頻繁在執行。也就是 CPU Scheduler,主要分配 CPU,讓 Process 的狀態從 Ready state 改成 Run state。
  • Long-term Scheduler: 很久才會執行一次。也就是 job Scheduler,主要是讓 processes loaded 進 Memory,其狀態會從 New State 改成 Ready State。控制有多少 process 在 Memory。
  • Medium-term Scheduler: 把 Memory 的 processes Swap 回 disk,其狀態會從 Ready State 改成 Wait State。 主要是 improve process mix 和 Free up memory.
    (現代的 OS 因為有足夠的實體記憶體和虛擬記憶體,所以沒有 Medium-term Scheduler)

UNIX/Linux Process Creation:

fork system call:

  • Create Child process 就是 產生新的 process
  • 新的 process 會複製一份 Parent process 的 address space
  • Child & Parent 長得一模一樣,沒有先後順序。但都是在 fork 之後執行
  • Child 執行完的回傳執會是 0
  • Parent 的回傳值會是 Child 的 PID

execlp system call:

  • 載入新的 binary file,刪掉舊的 code

wait system call:

  • 指定 Parent 要等待 Child 執行完才能執行

Interprocess Communication (IPC)

就是多個 Process 內部的溝通。主要是分享資訊、解決同個問題、方便管理、模組化之間的溝通。溝通的方法有兩種 Shared memory、Message passing。

Shared memory: 好處很快,但有同步問題,靠 memory address 去獲得 data。同一台電腦溝通的話就是這個方式。IPC 的 processes 要自己 call system call 讓 OS 產出共用的 memory 空間。

Message passing: 比較慢,靠 system call 處理,用在小數據上很有效率。跨電腦就是用這個方式。必須建立一個溝通的 link 然後 雙方都要有 Send() 和 Recieve(),雙方也是同步的。別人無法寫入自己的 memory。

  • 建立溝通的 link 的方式有分實體上的選擇和邏輯上的選擇 。
  • Logical 上會定義 有沒有方向性、是不是同步的、是不是有 blocking、是否真的 copy、是否固定大小
  • 有方向性的溝通,有缺點因為是 one to one,不能直接換溝通的人。
  • 沒有方向性的溝通,沒有指定誰來收,要訊息的人自己去拿,是 many to many。
  • Bolcking (synchronous): 在 Send 和 Receive 端可以任意選擇。
  • Non-Blocking(asynchronous): 在 Send 和 Receive 端可以任意選擇。

溝通方式:

Sockets:

  • 網路的角度,用 IP 和 port(就是 process) 來區別溝通的人是誰。
  • 沒有資料型態,就只有 Bytes。

Remote Procedure Calls:

  • 電腦之間可以直接使用對方的 function。

Traps and System Calls and Interrupts

Traps 通常是由使用者觸發軟體產生的中斷。是同步的。

System Calls 是由 user level 的程式向作業系統發出的請求,去執行 privileged operation。

Interrupts 是由硬體設備觸發的,是非同步的。

CPU 在以下情況會抉擇要怎麼使用 process:

  1. switch from running to waiting state
  2. switch from running to ready state
  3. switch from waiting to ready
  4. terminate

Preemptive scheduling : 會被打斷的 scheduling。在所有情況下都會有可能打斷。效能叫好。但會有 process synchronization 的問題。

Non-preemptive scheduling : 不能打算的 scheduling。 Process 會 Keep CPU 直到 switch from running to waiting state 和 terminate 的時候。

Dispatcher (執行換人的動作):

就是負責 context switching 的模組。

--

--