CS(39)
-
프로세스 동기화(3) monitor
monitor 실행 순서를 위한 동기화 및 상호 배제를 위한 동기화에 대해 모두 제공한다. mutual exclusion을 보장한다. 조건에 따라 스레드가 대기(waiting)상태로 전환 가능하다. monitor에는 두개의 큐가 존재한다. entry queue : critical section에서 진입을 기다리는 큐로서, mutex에 의해 관리된다. waiting queue : 조건이 충족되길 기다리는 큐로서, condition variable에 의해 관리된다. 프로그래밍 언어 레벨에서 지원하는 것임! 구성요소 mutex critical section에서 mutual exclusion을 보장하는 장치로 critical section에 진입하려면 mutex lock을 취득해야한다. mutex lock을 취..
2024.01.30 -
프로세스 동기화(2) - deadlock?
Deadlock 위 오른쪽 그림이 deadlock임을 말할 수 있다. 숫자 1, 2, 3, 4가 리소스이고, 자동차가 프로세스라고 생각해보자. 각 차들은 직진하기 위해 2개의 리소스를 점유해야한다. 각 차들이 마음이 급해 자원을 하나 점유는 하였으나, 그 외에 리소스들은 각 다른 차량들이 점유하고 있어 교착상태에 빠지게 되어 계속 하염없이 기다리게 되었다. (=deadlock) 즉, 두 개 이상의 프로세스 혹은 스레드가 서로가 가진 리소스를 기다리는 상태를 의미한다. Deadlock이 발생하기 위한 4가지 조건, 4가지 조건이 모두 만족해야 deadlock이 발생한다. Mutual Exclusion 리소스를 공유해서 사용할 수 없다. Hold and Wait 프로세스가 이미 하나 이상의 리소스를 취득(h..
2024.01.30 -
프로세스 동기화(1)
동시성 : cpu core가 한개일때, 시분할 시스템으로 프로세스를 짧은 시간 동안 번갈아 가면서 실행하는 것 병렬성 : cpu core가 여러개일때, 각각의 core가 각각의 프로세스를 실행하는 것 동기화를 이해하기 위해 필요한 용어 race condition(경쟁 조건) 여러 프로세스 혹은 여러 스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 이를 해결하기 위해 mutal exclusion을 이용하자! synchronization(동기화) 여러 프로세스 혹은 여러 스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 critical section(임계 영역) 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스 혹은 하나의 스레드만 진입(=mu..
2024.01.29 -
preemptive / non-preemptive
preemptive 스케줄링은 어떤 프로세스가 cpu를 할당받아 실행중인 상태에서, 다른 프로세스가 실행중인 프로세스를 중지하고 cpu를 강제로 점유하는 방식 non-preemptive 스케줄링은 어떤 프로세스가 cpu를 할당받으면 그 프로세스가 종료되거나 입출력 요구에 의해 프로세스가 자발적으로 중지될때까지 계속 실행하는 것 non-preemptive 선입선출 스케줄링(FCFS, First Come First Service) Ready queue에 도착한 순서대로 차례로 cpu를 할당하는 기법 아무리 앞의 프로세스 실행시간이 길다고 하더라도, 모든 프로세스에게 순서는 돌아가기때문에 starvation이 없다. 문제 ) convey effect 발생, 실행시간이 긴 프로세스들에 의해 발생한다. cpu이용..
2024.01.23 -
cpu스케줄링의 의미와 종류?
cpu스케줄링의 의미와 종류 cpu 스케줄링 : ready queue에 있는 프로세스 중 어느 프로세스에 cpu를 할당할 것인가를 결정하는 문제를 의미한다. cpu 스케줄링 종류 단기 스케줄러 어떤 프로세스를 running시킬 것인가 중기 스케줄러 어떤 프로세스를 메모리에 디스크로 쫓아낼 것인가 장기 스케줄러 어떤 프로세스를 ready queue로 보낼 것인가 중기 스케줄러와 장기 스케줄러 모두 degree of multiprogramming을 제어하는데 이때, degree of multiprogramming은 프로세스를 메모리에 얼만큼 올릴 것인가를 의미한다. 과거에는 프로세스가 생성이 되고 장기스케줄러에 admitted되어야 ready상태가 될 수 있었다. 이 장기 스케줄러로 degree of mul..
2024.01.23 -
기아상태? 이를 위한 해결방법은?
기아상태란? Starvation 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태 예를 들어서, 50개의 task가 있고 50개 중 49개는 1번 우선순위를 갖고, 나머지 1개는 2번 우선순위를 갖는다고 가정하자. 또한 해당 프로그램은 10번의 실행과정을 거치면 종료된다. 이때, 2번의 우선순위를 갖는 작업은 자원을 할당받을 수 없다. 자원을 할당받더라도 우선순위가 높은 자원에게 자원 할당을 뺏기기때문이다. Starvation과 자주 비교되는 DeadLock? 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기때문에 다음 단계로 진행하지 못하는 상태 예를 들어서, a, b라는 임계 자원이 있다고 가정하자. ThreadA에서는 a임계 자원을 요청하고 그 내부에서 b..
2024.01.23