Machineboy空
연속 메모리 할당의 두 가지 문제점 외부 단편화 (빈 공간들이 파편화되어 있어 활용도가 낮은 것) 물리 메모리보다 큰 프로세스 실행 불가 가상 메모리란? 실행하고 싶은 프로그램을 일부만 메모리에 적재해서 실제 물리 메모리 보다 큰 프로세스을 실행할 수 있는 기술 방법: 페이징, 세그멘테이션 페이징(Paging) 외부 단편화가 발생했던 근본적인 문제? 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문 모든 프로세스의 크기가 같다면, 외부단편화가 발생하지 않을 것 따라서, 프로세스를 일정 크기로 자르고 이를 메모리에 불연속적으로 할당할 수 있다면? 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정 단위..
가장 일반적인 메모리 관리 방식 : 연속 메모리 할당 연속메모리 할당에서 프로세스 배치 방식 연속 메모리 할당의 부작용 운영체제의 메모리 관리 기능 중 스와핑(Swap) 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역(swap 영역)으로 쫓아내고 그렇게 생긴 빈 공간에 새 프로세스를 적재 효율적으로 메모리 관리 swap out: 메모리에서 스왑영역으로 쫓아내는 것 swap in: 스왑 영역에서 메모리로 다시 적재 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 일 때도 프로세스를 실행할 수 있다. 연속 메모리 할당 프로세스는 메모리의 빈 공간에 할당되어야 한다. 빈 공간이 여러 개 있다면? 연속 메모리 할당의 방법: 어떤 빈 공간에 어떻게 할당할지 최초 적합(first-fit) 빈공..
교착 상태 해결(3) 예방 회피 검출 후 회복 1) 교착 상태 예방 애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 없애버리기 상호 배제를 없앤다면? 모든 자원을 공유 가능하게 만든다? 이론적으로는 가능하지만 현실적으로는 불가 점유와 대기를 없앤다면? 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 단점: 자원의 활용률을 낮출 수 있는 방식 비선점을 없앤다면? 선점이 가능한 자원 (ex.CPU)에 한해 효과적 모든 자원이 선점 가능한 것은 아니다 프린터 등 원형 대기를 없앤다면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않는다 한계 자원에 번호를 붙이는 것은 어려운 작업 어떤 자원에 어떤..
프로세스 실행을 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각각의 자원을 그저 기다리기만 한다면 어떤 프로세스도 실행되지 못하고 꽉 막혀 멈춰버리는 현상이 발생할 것. 교착 상태란? 식사하는 철학자 문제 (Dining Philosopher's Problem) 왜 발생하고 어떻게 해결하는지 힌트를 주는 문제. 모든 철학자가 모두 동시에 이 프로세스를 진행하게 되면, 그 누구도 식사를 할 수 없다. 계속 생각만 하게 될 것. 모두 왼쪽 포크를 들게 되면 놓을 때 까지 오른쪽 포크를 사용할 수 없으니 계속 생각만 하게 될 것. 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상. 철학자 = 프로세스, 스레드 포크 = 실행에 꼭 필요한 자원 식사하는 것 = 실행하는 것 컴퓨터 상황으로 예시를 들어보..