운영체제/쓰레드와 스케쥴링(4)
-
운영체제 공부 4 - scheduler 3 ( 멀티프로세스 scheduler )
[ 시작하기 전에 ] 사실 이 부분만 정리를 해도 되는데 예전 내용을 복습하는 김에 앞을 설명했었다. 아마도 멀티 프로세스 환경에서의 프로그램 성능에 대한 고민은 이 부분을 이해하면 더 쉽게 할 수 있지 않을까란 막연한 생각에 시작을 했고 이 부분에 대해 설명을 하려고 한다. 약간의 정리를 하자면, 싱글 CPU 상황에서 여러 프로세스를 작업하면 생기는 문제점은 CPU 내에 있는 cache의 이점을 살리기가 어렵다는 점, 프로세스의 생성과정에서 생기는 오버헤드 그리고 프로세스가 context switch가 일어날 때의 오버헤드가 있다. 그렇다면 멀티 CPU 상황에서는 어떻게 Scheduling이 일어나야지 멀티프로세스 작동에서의 장점을 가질까? [ 멀티 CPU 상황 ] 멀티 CPU 상황에서 여러 프로세스가..
2023.12.28 -
운영체제 공부 3 - Scheduler 2(CFS)
[ 시작하기에 전에 ] CFS 알고리즘은 이전 배경지식에서 말했던 대부분의 문제를 해결하고 상당히 합리적인 Scheduling을 가능하게 해준다. 이를 이해하기 위해서는 프로세스의 state에 대해서 이해를 해야하고 이전 priority에 따른 scheduling에 관해서 이해하고 있으면 조금 더 이해가 쉽다. [ CFS 알고리즘 ] CFS는 운영체제 공부 3에서 말한 모든 상태들에 대해서 괜찮은 답을 내준다. CFS에서 알아야 될 개념은 Weight, time slice, vruntime이다. Weight는 priority에 따라 프로세스 자체가 가지는 비중을 의미한다. wieght에 따라서 time slice의 값과 vruntime에서의 값이 결정되게 된다. MLFQ에서의 Priority와 뭐가 다른..
2023.12.21 -
운영체제 공부 2 - Scheduler 1(배경지식)
[ 작성 이유 ] 운영체제이 미치는 영향 중 프로그램의 성능과 가장 관련이 있는 게 Scheduler가 아닐까 싶다. 우선 이것에 대해서 잘 이해하고 싶다면 메모리의 계층 구조와 프로세스의 state에 관한 지식을 알고 있어야지 이해가 쉬울 것이라고 생각한다. 배경지식을 설명한 후에는 Scheduler에 관해서 설명을 하겠다. 많은 Scheduler가 있지만 간단하게 기존 Scheduler의 문제점만 이야기를 하고 넘기고 가장 핵심인 CFS scheduler와 Multiprocessor Scheduling에 대해서 알아보면 왜 쓰레드의 개수와 작업 속도가 꼭 비례하지 않는 지를 알 수 있다. 책에선 Process로 설명을 하니 프로세스로 설명하지만 이건 쓰레드에도 적용이 된다. [ 배경지식1 - 메모리의..
2023.12.21 -
운영체제 공부 1 - Process와 Thread
[공부 이유] 운영체제 전공이 끝난 지 1년 정도가 되었고 대부분의 내용을 까먹은 것 같다는 생각이 든다. 모든 내용을 다 정리하는 것은 시간적으로 불가능하다고 생각이 되고 학교에서 배운 교안과 인터넷 검색 내용 중 나에게 반드시 필요하다고 생각되는 부분만 조금 정리를 해보려고 한다. 이게 끝나면 Java Thread 프로그래밍을 따로 공부하는 중인데 상관 관계를 적는 방식으로 사용하기에 좋을 것 같다고 생각이 돼서 정리를 남긴다. 운영체제와 관련된 내용은 모두 C언어로 진행이 되었어서 코드는 C를 사용할 것 같다. [프로세스] 제일 먼저 알아야 될 것은 프로세스에 관해서 알아야 하지 않을까 싶다. 사전적 의미는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램", "메모리에 올라와 실행되고 있는 프..
2023.12.21