錄影內容
排程器原理(上)
Scheduling Internals
Scheduling動畫說明,說明Scheduler如何安排任務,
概念為一種程式架構,將程式拆分成多個可獨立執行運作的工作,以並行不悖說明最好,例如像是驅動程式都可獨立運作,但不需要平行化,在 Concurrent 中,工作可拆分成「獨立執行」的部份,於是「可以」讓很多事情一起做,但「不一定」要真的同時做。但 Parallelism 著重規劃, 將能夠並行的程式,分配給不同硬體單元,使其同時執行。
指同時進行,不會互相妨礙。語本《禮記.中庸》。 例你白天讀書,晚上工作,這兩件事可以並行不悖。
指的是程式執行時候,同時執行多個程式。
Concurrency 可能會用到 Parallelism,但不一定要用 Parallelism 才能達成 Concurrency
確保多個執行單元運作並存取資源時,執行結果不會因為單個執行單元執行的先後順序去影響結果,而導致錯誤發生。
協程是一種用戶態的輕量級線程,可以想成一個線程裡面可以有多個協程,而協程的調度完全由用戶控制,協程也會有自己的registers、context、stack等等,並且由協程的調度器來控制說目前由哪個協程執行,哪個協程要被 block 住。當前任務進行時,如果有額外任務切入,就會是否切換到新任務。
coroutine可以藉由setjmp
/longjmp
在C語言中實做出來
以事件來觸發程式繼續處理或者暫停的概念
在程式設計中,有可能因為兩個不同線程同時存取到相同記憶體空間,造成不可預期的輸出,這邊稱作 race condition ,表示兩個 Thread 在競爭同一筆資料並修改。
死鎖(Deadlock)的定義是指在 Multi-Thread 或 Multi-Program 的計算機系統中,若干進程或線程因相互等待對方持有的資源而陷入一種無限等待的狀態,導致這些進程或線程無法繼續執行
Program意思就是我們平常在寫的程式碼,也就是藍圖
Process 就是實際上當 Program 被 loading 進入到記憶體,每一段程式碼都有可能會被 cpu 所執行,Process就是將 Program 這個藍圖跑起來
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing