본문 바로가기
반응형

반도체 그 다음 학문/운영체제 (OS)37

운영체제 Kernel Memory ( Buddy System, Slab Allocator ) Allocating Kernel Memory 결국 kernel도 메모리에 존재하고 코드가 수행돼야 한다. 커널도 메모리 할당을 받아야 하기 때문에 어떻게 메모리를 할당받는지 보자. 많은 kernel에서의 코드들은 paging을 사용하지 않는다. 왜냐면 page in, page out 같은 동작을 하면 느려지기 때문이다. kernel 코드의 처리가 시스템 전체에 영향을 미치기 때문에 속도가 굉장히 중요하다. 그럼 어떻게 메모리 할당이 이루어질까?? 2가지 방법이 있는데 하나는 Buddy System이고 다른 하나는 Slab Allocator이다. Buddy System 고정된 크기의 segment를 할당해준다. 고정된 크기라 함은 2의 지수성 크기를 가지고 할당해준다. 최소 4K 이상을 가진다. 만약 요청.. 2022. 6. 8.
운영체제 Thrashing ( Working Set Model, Page-Fault Frequency, PPF ) Thrashing frame을 적게 할당받으면 프로그램을 돌릴 때 계속 page in, page out을 반복하며 수행하게 된다. 즉, 프로세스가 코드를 수행하는 것보다 swapping 하느라 바쁜 것을 Thrashing이라고 한다. 이렇게 되면 CPU의 utilization이 낮아진다. 즉, waiting queue에는 page들이 쌓이는데 ready queue는 비어있는 상황이 생긴다. 이런 상황에서 운영체제는 멀티프로그래밍을 하고 있다고 착각하여 계속 새로운 프로세스를 생성한다. 그러면 아래 그래프와 같은 선이 그려진다. 즉, 할당된 frame보다 프로세스의 크기가 더 클 때 발생한다. 수식으로는 아래와 같다. 전체 locality size를 계산해서 전체 메모리보다 많아지는 시점에서 하나의 프로세.. 2022. 6. 8.
운영체제 Allocation of Frames ( Global Allocation, Local Allocation, Fixed Allocation, Priority Allocation ) Allocation of Frames page fault가 발생했을 때 frame을 몇 개를 할당해야 할까에 대해 알아보자. 그전에 먼저 Global Allocation, Local Allocation의 차이점에 대해 알아야 한다. Global Frame Replacement는 우선순위가 높은 프로세스에 빈 frame이 없을 때 우선순위가 낮은 프로세스의 빈 frame을 뺏어서 사용 가능하다. 즉 시스템에 존재하는 모든 frame을 같이 사용하는 것과 같다. 하지만 이렇게 되면 낮은 우선순위의 프로세스가 뺏긴 부분의 frame을 다시 필요로 할 때 이미 정보가 바꿨기 때문에 page fault를 발생시킨다. 이에 시간이 많이 소요된다. 즉 이런 정책을 쓰는 시스템은 프로세스의 동작 시간이 매우 가변적이게.. 2022. 6. 8.
운영체제 COW ( Copy on Write, zero-fill-on-demand-page ) COW ( Copy On Write ) 부모 프로세스가 자식 프로세스를 생성할 때 ( fork() ) 생기는 메모리 이슈에 대한 해결책으로 나온 방법이다. 자식 프로세스를 생성하면 부모 프로세스가 가지고 있던 page table을 그대로 물려받는다. 조금 다르게 말하면 부모 프로세스의 메모리를 다 복사한다. 그렇게 되면 너무 많은 메모리 overhead가 발생한다. 그렇다고 메모리를 공유하면 독립적인 동작을 하지 못한다. 즉, 메모리는 적게 잡아먹어야 하고 독립적으로 움직여야 한다. 그렇게 해서 나온 게 COW다. 먼저 자식 프로세스를 생성하면, 부모 프로세스의 주소 공간을 공유하고, 운영체제는 자식 프로세스에게 독립적인 page table을 만들어 준다. 단, 이때 부모 page table의 read-.. 2022. 6. 8.
운영체제 Demand paging ( 요구 페이징, page fault란? ) Demand paging Demand paging은 간단히 말해서 필요한 page만 메모리에 올리겠다는 의미다. 그전에 swapping이라는 개념을 알고 있어야 하는데 아래 포스팅을 읽고 오면 더욱 이해가 쉬울 것이다. 2022.06.08 - [내가 하는 공부/운영체제 (OS)] - 운영체제 Swapping ( page in, page out ) 운영체제 Swapping ( page in, page out ) Swapping 여러 프로그램을 메모리상에서 돌리다 보면 메모리가 부족할 수밖에 없다. 이런 메모리 부족을 해결하기 위해서 나온 방법이 Swapping이다. 더 많은 프로세스가 메모리에 존재할 수 있도 wpaud16.tistory.com 시간이 없는 사람을 위해 간단히 설명하자면, Swpping이란.. 2022. 6. 8.