•Compter Science

    [OS/OSTEP] 13.vm-intro : 주소공간(address space)와 메모리 가상화(virtual memory) 의 개념 #8

    [OS/OSTEP] 13.vm-intro : 주소공간(address space)와 메모리 가상화(virtual memory) 의 개념 #8

    13.vm-intro # 시작하며 지금까지는 CPU가 어떻게 다중 프로세스를 처리하는지에 대해서 공부했다. CPU를 가상화하여 시분할방법을 사용해서 프로세스끼리 자원을 나눠 사용했다. 지금까지 운영체제를 공부하면서 또 내가 지금까지 알고있던 컴퓨터 지식으로는 이러한 CPU가 가장 복잡하고 중요할 것이라고 생각했다. 물른 컴퓨터구조측면이나 하드웨어적으로 접근한다면 어쩌면 맞는 말일 수 도 있다. 그러나 내가 VM 단원을 공부하면서 CPU보다 이 메모리를 어떻게 사용하냐가 더 중요한 관점인 것 같다. 어디서 읽기로는 이미 CPU는 매우 빨라지고 있지만 그 빠른 CPU는 결국 메모리에 올라와 있던 작업을 실행한다. 그런데 메모리는 한정적이다. 이 흔히 말하는 메모리는 여러 특성을 가지고 있기도 하고, 간단히 ..

    [OS/OSTEP] 09.CPU-sched-lottery-CFS : 비례, 배분을 이용한 스케줄링 #7

    09.CPU-sched-lottery 에서 추가적으로 CFS 스케줄링에 대해서 정리한다. # 시작하며 # 완전 배분 스케줄러 (Completely Fair Scheduler)

    [OS/OSTEP] 09.CPU-sched-lottery : 비례, 배분을 이용한 스케줄링 #6

    [OS/OSTEP] 09.CPU-sched-lottery : 비례, 배분을 이용한 스케줄링 #6

    09.CPU-sched-lottery # 시작하며 비례 배분(Proportional Share) 혹은 공정 배분(fair share)의 개념은 우리가 지금까지 다뤄왔던 스케줄러와는 목적이 다르다. 지금까지는 반환시간이나 응답 시간을 최적화하는 방법으로 스케줄링을 했다면, 비례배분 방식은 CPU의 일정 비율을 실행 할 수 있도록 보장하는 것이 주된 목적이다. 비례 배분 스케줄링의 좋은 예가 추첨 스케줄링(lottery scheduling)라고 한다. 다음 실행될 프로세스를 추첨하여 결정하는데 더 자주 수행되어야 하는 프로세스는 당첨 기회를 더 많이 준다. 이 기법이 과연 효과적인지, 또 어떻게 설계할 수 있는지에 대해서 알아보는 것이 목적이다. # 추첨(lottery)권은 나(작업)의 몫이다. lotter..

    [OS/OSTEP] 08.CPU-sched-mlfq : 멀티 레벨 피드백 큐(MLFQ) #5

    [OS/OSTEP] 08.CPU-sched-mlfq : 멀티 레벨 피드백 큐(MLFQ) #5

    08.CPU-sched-mlfq # 시작하며 멀티레벨피드백큐(Multi-level Feedback Queue, MLFQ)는 기본적으로 두가지 문제를 해결하기 위해 고안 됐다. 첫번째는 짧은 작업을 먼저 실행시켜 반환 시간을 최적화 하려는 것이다. SJF와 STCF도 같은 목적을 띄지만 실행되는 작업시간을 알아야하지만, 그것을 아는 것은 불가능하다. 두번째로는 응답이 빨라보이도록 하는 것이다. RR은 응답시간을 최적화 시켜 응답시간은 매우 빠르지만 반대로 반환시간이 매우 최악이었다. 프로세스의 실행시간에 대한 정보가 없이 이러한 조건을 만족시키는 스케줄러를 고안해보는 것이다. 즉 작업의 대한 정보 없이 반환시간도 빠르고, 응답시간도 빠른 스케줄링을 해보자는 것이다. # MLFQ : 기본 규칙 MLFQ는 우..

    [OS/OSTEP] 07.CPU-sched : CPU 스케줄링 정책(scheduling policy) #4

    [OS/OSTEP] 07.CPU-sched : CPU 스케줄링 정책(scheduling policy) #4

    07.CPU-sched # 시작하며 앞선 06포스팅 에서는 어떻게 cpu가 가상화하여 다중작업을 수행하는지에 대해서 알아 봤다면, 어떻게 그 다음 프로세스를 결정하는지에 데해서 알아보도록 한다. 즉 스케줄링 정책(scheduling policy)에 대해서 알아본다. 처음에는 초창기에 방식부터 점점 많은 요소들을 고려해가며 현대의 접근방법에 대해서 알아본다. 그렇기 때문에 처음에는 여러 가정을 통해서 조금 특별한 요소들을 제한하고 그 요소들을 하나씩 없애는 방식으로 설명한다. # 워크로드에 대한 가정 일련의 프로세스들이 실행하는 상황을 워크로드(Workload)라고 한다. 일단 지금은 많은 특별한 케이스들을 배제하는 가정을 세워야 했다. 하나씩 지워나가며 이 포스팅이 끝날때는 마지막 5의 가정 한개만 남게..

    [OS/OSTEP] 06.CPU-mechanisms : 제한적 직접 실행 원리 #3

    [OS/OSTEP] 06.CPU-mechanisms : 제한적 직접 실행 원리 #3

    06.CPU-mechanisms : 제한적 직접 실행 원리 # 시작하며 여러 작업들이 동시에 실행되는 것처럼 보이게 하기 위해서 CPU를 가상화 해야한다. 이렇게 가상화된 CPU들은 동시에 실행되는 것처럼 보이지만 실제로는 물리적인 CPU를 공유하고 있는 것이다. 즉 돌아가면서 쓰고 있다는 것이다. 잠깐씩 실행시키면서 번걸아 쓰는 이러한 방식을 시분할방식(Time sharing)이라고 했었다. 이렇게 시분할방식을 사용하면 두가지 문제가 생긴다. 첫번째는 성능에 관한 이슈이다. 나눠쓴다는 것은 하나를 계속 쓸때보다는 성능 저하가 일어날 수 밖에 없다. 어떻게하면 과중한 오버헤드를 주지 않고 가상화를 구현 할 수 있을까? 두번째는 제어문제이다. CPU를 나눠쓰끼 때문에 제어를 명확히 하지 않으면, A프로세스..