운영체제

이번 포스팅에서는 Page table에 대해 좀 더 구체적으로 살펴보겠습니다. 1. Memory Protection 이전 포스팅에서 Page Table에는 Entry와 물리적 주소 정보로 구성된다고 했습니다. 그런데 이 두 가지뿐 아니라 Valid-Invalid bit와 Protection bit이라는 부가적인 bit가 페이지 테이블의 Entry마다 존재합니다. (1) Valid - Invalid Bit in a Page Table  Valid-Invalid bit은 정말 엔트리가 사용되는지 여부를 나타내기 위한 것입니다. 테이블이라는 자료 구조상 인덱스로 접근하기 때문에 프로그램에 주소 공간이 가질 수 있는 최대 크기만큼 페이지 테이블 Entry가 있어야 합니다.  위 그림에서는 논리적 메모리가 Pa..
이전 포스팅에서 연속 할당에 대해 살펴보았습니다. 연속 할당 방법은 프로그램이 메모리에 올라갈 때 통째로 메모리에 올라가는 방식입니다. 각각의 프로세스가 메모리의 연속적인 공간에 적재됩니다.   반면 불연속 할당은 프로그램을 구성하는 주소 공간을 같은 크기의 단위(페이지)로 잘개 쪼개서 페이지 단위로 메모리에 올리는 방식입니다. 즉 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있습니다.  불연속 할당에는 Paging 기법과 Segmentation기법, Page Segmentation기법 등이 있습니다.    이번 포스팅에서는 불연속 할당의 Paging 기법에 대해 살펴보겠습니다.   1. Paging (1) Paging 기법이란? Paging 기법은 프로그램을 구성하는 논리적 메모리(가상 ..
이번 포스팅부터는 물리적인 메모리를 어떻게 관리할 것인가에 대해 살펴보겠습니다. 물리적 메모리는 일반적으로 두 영역으로 나뉘어 사용됩니다.낮은 주소 영역에는 운영체제 커널이 항상 상주해있고, 높은 주소 영역에는 사용자 프로그램이 있습니다.   사용자 프로그램이 올라간 영역을 관리하는 방법은 크게 두 가지로 나누어 볼 수 있습니다.  첫 번째는 연속 할당(Contiguous allocation)으로 프로그램이 메모리에 올라갈 때 통째로 메모리에 올라가는 방식입니다. 즉 각각의 프로세스가 메모리의 연속적인 공간에 적재되는 것입니다.  두 번째는 불연속 할당(Noncontiguous allocation)으로 프로그램을 구성하는 주소 공간을 같은 크기의 페이지 단위로 쪼개서 페이지 단위로 메모리에 올리는 방식입..
1. 동적 로딩(Dynamic loading) 프로그램을 메모리에 동적으로 올린다는 것은 프로그램 전체를 메모리에 미리 다 올리는 것이 아니라, 필요할 때마다 해당하는 루틴을 메모리에 올리는 것을 말합니다.  프로그램이 실행될 때 프로그램 전체가 균일하게 사용되는 것이 아니라, 자주 사용되는 부분은 한정적이고, 오류 처리 루틴과 같이 가끔씩 사용되는 많은 양의 코드가 있습니다. 그래서 프로그램이 실행될 때마다 이것을 전부 메모리에 올리는 것은 비효율적이기 때문에, 미리 올려놓는 것이 아닌 필요할 때마다 메모리에 올리는 방식을 동적 로딩이라고 합니다.    여기서 주의해야할 개념이 한 가지 있습니다. 이후에 다룰 Paging 기법인데, Paging은 물리적인 메모리를 고정 크기의 페이지로 나누어 프로그램 ..
메모리는 주소를 통해 접근하는 매체입니다. 그렇기 때문에 메모리를 찾아가기 위해서 메모리별로 주소가 매겨집니다. 이 주소는 크게 2가지로 나뉩니다. 1.  논리적(Logical) 주소  vs 물리적(Physical) 주소 논리적 주소 프로그램이 실행되면 프로그램 별로 독자적인 주소 공간이 형성됩니다. 이처럼 프로그램마다 가지고 있는 주소를 논리적 주소(가상 주소)라고 합니다. 프로세스마다 0번지부터 시작하는 독자적인 주소 공간입니다.  물리적 주소 물리적인 주소는 말 그대로 실제 물리적인 메모리의 주소를 말합니다. 메모리에 실제 올라가는 위치를 의미합니다. 물리적인 메모리는 하나임으로 모든 프로그램 주소를 0번지부터 통으로 관리합니다. 그래서 물리적인 메모리 주소의 아랫부분에는 운영체제 커널, 상위에는 ..
1. Deadlock (교착 상태) 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리면서 잠들어있는 상태를 말합니다. 위의 그림에서 자동차는 프로세스, 도로는 자원으로 생각하면 이해가 쉬운데요. 자동차(프로세스)들이 각각의 도로(자원)를 점유한 상태에서 다른 자동차(프로세스)들이 사용하고 있는 도로(자원)를 사용하기 위해 대기하고 있지만, 진행이 더 이상 되질 않는 상태를 말합니다.  다시 말해, 두 개 이상의 프로세스가 자원을 점유한 상태에서, 다른 프로세스가 점유하고 있는 자원을 요구하여 서로의 작업이 끝나기만을 기다리며 영원히 끝나지 않는 상황입니다.   프로세스가 자원을 사용하는 절차는 크게 4단계로 자원 요청 -> 자원 획득-> 자원 사용 -> 자원 반납의 단계를 거칩니다. 데드락을 각각..
동구름이
'운영체제' 태그의 글 목록 (3 Page)