CS(38)
-
프로세스 동기화(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 -
DB Index(MySQL기반)
DB Index(MySQL기반) 위 그림에서 보다시피, 인덱스를 사용하지 않는다면, first_name이 "Minsoo"인 사람들을 full scan하여서 결과값을 추출해야한다. first_name에 index가 걸려있었다면? full scan이 아닌 O(logN) (B-tree based index)의 시간이 소요될 수 있다. 즉, B-tree기반의 인덱스라면 O(logN)의 시간이 소요될 수 있다. 따라서, index를 사용하는 이유를 아래와 같이 정의할 수 있다. Index를 쓰는 이유 조건을 만족하는 튜플들을 빠르게 조회하기 위해! 위 그림은, index에 대한 쿼리문을 작성한 것이다. 첫번째 쿼리문은, name attribute가 중복을 허용하기때문에 UNIQUE INDEX가 아닌 INDEX키워..
2024.01.19