전체 글(81)
-
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 -
Thread-Safe의 의미와 설계방법
Thread-Safe의 의미와 설계방법 Thread-Safe란 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없는 것을 말한다. 하나의 함수가 한 스레드로부터 호출되어 실행중일때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행결과가 올바르게 나오는 것을 의미한다. Thread-Safe 구현방법 Re-entrancy(재진입성) 어떤 함수가 한 스레드에 의해 호출되어 실행중일때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야한다. Thread-Local Storage(스레드 지역 저장소) 공유자원이 사용을 최대한 줄여, 각각의 스레드에만 접근 가능한..
2024.01.19 -
스레드, tcb, 사용자 수준 스레드 및 커널 수준 스레드, 멀티 프로그래밍, 멀티스레드?
스레드 프로세스 안에서 실행되는 흐름의 단위로, stack영역을 제외한 나머지 영역을 공유하게 된다. stack을 스레드마다 독립적으로 할당하는 이유? stack은 함수 호출시, 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간을 의미한다. stack메모리 공간이 독립적이라는 것은, 독립적인 함수 호출이 가능하다는 것이고, 이것은 곧 독립적인 실행흐름을 추가되는 것을 의미한다. 따라서, 스레드의 정의에 따라 독립적인 실행흐름을 추가하기 위해서 최소 조건으로 독립된 stack을 할당한다. 장점 시스템의 처리량이 향상된다. 단점 여러개의 스레드를 이용하는 프로그램을 작성하는 경우에는 critical section을 잘 관리하여 여러 스레드가 함꼐 공유 자..
2024.01.18 -
프로세스끼리 협력하는 방법
프로세스끼리 협력하는 방법 IPC(Interprocess Communication)는 협력 프로세스 사이에서 서로 데이터를 주고 받는 방법을 의미한다. IPC에는 크게 두가지 모델로 나뉜다. Shared Memory 서로 다른 프로세스 간에 일부 주소 공간을 공유하여 데이터를 주고받는 방식을 의미한다. 프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당해준다. 공유메모리 영역이 구축된 이후에는 모든 접근이 일반적인 메모리 접근으로 취급되기 때문에 더 이상 커널의 도움없이도 각 프로세스들이 해당 메모리 영역에 접근할 수 있다. 공유 메모리 방식은 프로세스 간의 통신을 수월하게 만들지만, 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있다. 커널은 ..
2024.01.17