본문 바로가기

CS/운영체제5

운영체제 - 페이지 교체와 프레임 할당 페이징을 통해 물리 메모리보다 큰 프로세스를 실행할 수 있었다. 하지만 그럼에도 물리 메모리의 크기는 한정되어 있다. 물리 메모리의 크기가 한정되어 있으므로 운영체제는 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고 프로세스들에게 적절한 수의 프레임을 할당해야 한다. 요구 페이징 (Demand Paging) 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법이다. 즉, 요구되는 페이지만 적재하는 기법이다. 1) cpu가 특정 페이지에 접근하는 명령어를 실행한다. 2) 해당 페이지가 현재 메모리에 있을 경우 (유효 비트 = 1) cpu는 페이지가 적재된 프레임에 접근한다. 3) 해당 페이지가 현재 메모리에 없을 경우 (유효 비트 = 0) 페이지 폴트가 발생한다. 4.. 2024. 2. 20.
운영체제 - 페이징 가상 메모리 실행하고자 하는 프로그램을 일부만 적재해서 실제 물리 메모리보다 더 큰 프로세스를 실행할 수 있는 기술이다. 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 둔다. 이를 통해 프로세스 전체가 물리적 메모리에 있는 것처럼 수행되는, 즉 물리적 메모리가 훨씬 많이 있는 것처럼 보이게 된다. 결과적으로 메모리에 작은 양의 주소 공간만 있으면 충분히 프로세스를 수행할 수 있고, 더 많은 프로그램을 동시에 실행할 수 있게 된다. 가상 메모리의 핵심은 각각의 프로세스에게 메모리 공간이 독립적으로 부여된다는 것이다. 부여 받은 메모리 영역은 해당 프로세스만이 접근할 수 있도록 보호된다. 즉, 메모리 영역이 프로세스에게 독립적으로 부여되므로 타 프로세스가 해당 메모리 영역을 .. 2024. 2. 20.
운영체제 - 연속 메모리 할당과 단편화 프로그램이 실행되기 위해서는 디스크에서 메모리로 로드해와야 한다. 이때 운영체제는 한정된 자원 내에서 프로세스들에게 메모리를 효율적으로 할당할 필요가 있다. 연속 메모리 할당은 초창기에 메모리를 할당하는 방식이었다. 연속 메모리 할당 하나의 프로세스를 연속적인 물리 메모리 공간에 할당하는 기법이다. 즉, 가상 주소 공간에 할당된 프로세스가 물리 메모리 공간에 "하나의 덩어리"로 로드된다. 연속 할당은 크게 고정 분할 방식과 가변 분할 방식으로 나뉜다. 1) 고정 분할 방식 (fixed partition allocation) 메모리 공간을 미리 고정된 크기로 분할한 후 프로세스를 할당하는 방식이다. 이때 분할되는 크기는 다양할 수 있으며, 분할된 공간이 영구적으로 고정되기에 메모리에 올릴 수 있는 프로그램.. 2024. 2. 19.
운영체제 - 데드락 (Deadlock, 교착 상태) 데드락 (Deadlock, 교착 상태) 프로세스를 실행하기 위해서는 자원이 필요하다. 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못하고 무한히 다음 자원을 기다리게 되는 상태를 "데드락"이라고 부른다. 데드락이 왜 발생하는지, 어떻게 해결할 수 있을지 아이디어를 주는 고전적인 문제인 식사하는 철학자 문제를 먼저 살펴보자. 식사하는 철학자 문제 원형 테이블에 철학자가 5명이 앉아있고, 철학자들 사이에는 포크가 존재한다. 음식을 먹기 위해서는 포크 2개가 꼭 필요하다. 여기서 각 용어는 다음을 비유한 것이다. 철학자 = 프로세스, 스레드 포크 = 실행에 필요한 자원 식사 = 실행 철학자들은 다음의 과정을 진행한다. 1. 계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어든다. 2. 계속 생각을 하다.. 2024. 2. 18.
운영체제 - 동기화 프로세스들은 동시에 실행되며 서로 협력하고 영향을 주고 받는다. 이 과정에서 자원의 일관성을 보장해야 하기에 프로세스를 동기화할 필요가 있다. 실행의 문맥을 가지는 모든 대상은 동기화의 대상이 되기에 스레드도 동기화 대상이 된다. 동기화 프로세스들의 수행 시기를 맞추는 것을 동기화라고 한다. 프로세스의 동기화는 크게 두 가지를 의미한다. 1) 실행 순서 제어 프로세스를 올바른 순서대로 실행하기 위한 동기화 2) 상호 배제 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하는 동기화 예를 들어, 공동의 목적을 위해 동시에 수행되는 프로세스가 있다고 가정해보자. (e.g. 워드 프로세서 프로그램 => 맞춤법 검사 프로세스, 입력 내용을 화면에 출력하는 프로세스 등) 프로세스들의 올바른 수행을 위.. 2024. 2. 16.