---
# System prepended metadata

title: OS HW3

---

# OS HW3

## 問題
* RR task斷點怎麼紀錄
* PP multilevel queue
* running state才能用del打斷，還是任何時候都可以
* turnaround = waiting + running ?


## 解決方案
* RR task斷點怎麼紀錄
  直接用 swapcontext 
* PP multilevel queue
    sort queue (by priority)
* running state才能用del打斷，還是任何時候都可以
    先實作ready queue刪除，測資裡沒有中途刪除的動作
## Block signal(建議)
```c=
void block_sigprof(void){
    sigset_t sigprof;
    sigemptyset(&sigprof);
    sigaddset(&sigprof, SIGPROF);
    if(sigprocmask(SIG_BLOCK, &sigprof, NULL) == -1){
        perror("sigprocmask");
        abort();
    }
}

void unblock_sigprof(void){
    sigset_t sigprof;
    sigemptyset(&sigprof);
    sigaddset(&sigprof, SIGPROF);

    if (sigprocmask(SIG_UNBLOCK, &sigprof, NULL) == -1) {
        perror("sigprocmask");
        abort();
    }
}
```


### CPU Idle 的時機
* ready queue 為空 waiting list 不為空 (FCFS例外?)
* 進sleep，拿不到resource

~~### Process Dispatch(function)~~



### Queue


