운영체제 (OS)(13)
-
[17] CPU Scheduling (2)
CPU scheduling Goals -- 스케쥴러는 한 process 에 CPU 시간을 얼마나 할당할 것인가 ? ++ 한 프로세스를 실행완료 시키기까지 정확한 시간을 알수 없기에 1/1000 초씩 할당하고 있다. -- 스케줄러는 여러 process 어느 순서로 실행킬 것인가 ? ++ average waiting time 을 최소화하기 위해 가장 짧은 프로세스를 먼저 실행시키는 것이 좋을 수 있다. ++ 가장 짧은 프로세스를 먼저 실행시키면 해당 프로세스가 빠르게 끝나기 때문에 결과적으로 context switching 을 줄여 overhead 를 줄일 수 있다. ++ 하지만 각 프로세스가 정확히 얼마나 걸릴지 알 수 없기에 스케쥴링하기 어렵다. ++ 코드가 짧더라도 무한 루프와 같은 상황에 빠지만 무한..
2023.05.15 -
[16] CPU Scheduling(1)
-- cpu scheduler 는 'dispatcher' 나 'short-term scheduler' 라고 불린다. ++ ready que 에 있는 프로세스를 하나 선택해서 cpu 에 실행시킨다. ++ scheduler 가 매우 빠르기에 모든 프로세스는 메모리 안에 있고 그 중 한 프로세스가 cpu 에서 돌고 있다고 가정한다. ++ 멀티 프로그래밍 환경에서 가장 중요한 것은 CPU 활용도를 최대로 하는 것이다. -- Non-preemptive scheduling 은 중간에 resource를 뺐기지 않는 것을 말한다. ++ Non-preemptive : priority 가 높은 process가 있어도 해당 time-quantum 에는 본인 process 만 실행하는 것이다 ++ 발생하는 시점 : 1. CP..
2023.05.15 -
[14] Monitor & Dining Philoshophers
Semaphores vs Condition Variables -- 위의 둘은 매우 유사하며 semaphore -> condition variable 구현 가능 : condition variable : 대기 중인 스레드 집합을 나타내고, 특정 이벤트가 발생할 때까지 대기하는 스레드들 : 세마포어를 사용하여 대기 중인 스레드 집합 추적 wait() ++ lcok 획득 후 세마포어를 생성해 대기 중인 스레드 집합에 추가함 ++ lock 을 해제하고 해당 세마포어를 기다리며 블록 signal() ++ lock 획득 후 대기 중인 스레드 집합에서 하나의 스레드를 선택하고, 해당 스레드를 세마포어에서 해제 ++ lock 해제 -- 둘의 차이는 기록을 추적하는 방법이 다름 : 세마포어는 이전의 기록을 추적하지 않고 ..
2023.04.24 -
[13] Lock & Condition Varialbles
Semaphores Two purpose -- Mutual exclsuion : 공유자원을 보호하기 위함 - 공유자원에 하나의 스레드만 접근 가능 : semaphore P(s)&V(s) : 항상 이진 세마포어 -- Synchronization : 여러 스레드가 프로세스 사이에서 순서를 조정하여 공유자원을 보호하는 것 : coke machine 두 기능을 보장하지 위해 각각을 분리 : Lock : mutual exclusion 보호 : Condition Variables : Synchronization 보호 : 둘 다 언어에 독립적이며 많은 프로그래밍 환경에서 사용할 수 있음 Lock -- Locked or Unlocked = Busy or Free -- Nachos : Lock(*name) : 'unlo..
2023.04.24 -
[12] Implementing Semaphores
Two version of Semaphores -- -- Classical Implementing Semaphores -- Busy-waiting : 세마포어를 기다리는 스레드에 대한 대기 큐 지원을 안함 : busy-waiting 을 통해 자원 낭비를 함 ++ busy-waiting : 주머니 속의 돌이 들어왔는지 아닌지를 무한 루프를 돌며 확인하는 것 : wait(s) , signal(s) 또한 CS의 일부인데 보호되지 않음 --Disabling interrupts : 세마포어를 기다리는 스레드에 대한 대기 큐 지원을 안함 : busy-waiting 을 통해 자원 낭비 : muti-processor 에서는 작동하지 않음 ++ CPU1 에서는 인터럽트가 비활성화 될 수 있지만 CPU2 에서는 인터럽트가..
2023.04.24 -
[10 & 11] Mutual Exclusion & Semaphore
Sysnchronization Terminology ( 동기화 용어 ) -- Synchronization : 두 개의 thread 가 충돌없이 협력하는 것 -- Mutual exclusion : 한 개의 thread 가 수행되는 동안 해당 thread 만 수행하는 것을 보장, 다른 thread 들은 해당 시점에서는 배제됨,프로세스가 동시에 공유 자원에 접근하는 것을 막음 -- Critical section : 한 thread 가 주어진 시간에 실행할 수 있는 코드 -- Lock : 다른 thread 가 침범하는 것을 막는 것 : CS : critical section : thread 가 CS 들어가기 전에 lock -> CS 나올 때 unlock 하면 CS 들어가고 싶어하는 thread 는 unlock ..
2023.04.23