목록분류 전체보기 (166)
공부기록
단순 페이징, 세그멘테이션의 특징 (vs 고정 분할 혹은 가변 분할) 프로세스의 모든 메모리 참조는 논리주소 이전과 다른 메모리 위치에 적재될 능력이 있다. 한 프로세스의 주소공간은 여러 블록(페이지, 세그멘트)로 분할 이 블록들은 연속되어 배치될 필요가 없다. 테이블을 통해 찾아가면 되니까 위의 두 특성 때문에 프로세스의 모든 페이지, 세그먼트가 주기억 장치에 적재되어 있을 필요가 없다. 즉 블록들을 필요에 따라 스와핑 할 수 있다. 다음에 수행할 명령을 포함한 블록과, 그 명령에 의해 참조될 데이터가 포함된 블록이 주 기억장치에 있다면, 프로세스의 진행이 가능하다. 프로세스의 블록이 반입되는 과정 OS는 초기에 수행될 코드와 참조될 데이터가 포함되는 몇개의 블록만 주기억장치로 반입 적재 집합 : 현재..
세그먼 테이션 사용자 프로그램은 세그먼 테이션 기법을 이용하여 나누어 질 수 있고 프로그램과 그에 관련된 데이터들이 여러 세그먼트로 나누어짐 세그먼트의 크기는 각각 다를 수 있다. 세그먼테이션의 논리 주소 = 세그먼테이션 번호 + 오프셋 동적 할당과의 차이는 세그먼테이션은 하나 이상의 파티션을 차지할 수 있고 연속적일 필요가 없다는 점 외부 단편화를 초래할 수 있다. 하지만 프로세스보다 작은 크기로 쪼개지기에 상대적으로 단편화가 적은 편 프로그래머가 세그먼트를 지정할 수 있다. 프로그래머, 컴파일러는 프로그램과 데이터를 다른 세그먼트로 할당 구조적인 프로그래밍을 위해 프로그램, 데이터는 더 세분화 된 여러 세그먼트로 나뉠 수 있다. 세그먼트 기법의 단점 프로그래머가 세그먼트의 최대 크기를 알고 있어야함 ..
페이징 고정 분할 기법과 가변 크기 분할 기법은 메모리를 효율적으로 이용하지 못함 페이징은 각 프로세스의 마지막 페이지에서만 내부 단편화가 일어난다. 페이징은 메모리 프레임에 연속적으로 저장되지 않아도 된다. 이 때문에 각 프로세스가 하나의 주소 레지스터가 아닌, 페이지 테이블을 유지한다. 페이지 테이블은 각 페이지들에 해당하는 프레임의 위치를 관리한다. 프로그램 안에서 각 논리주소는 페이지 번호 + 페이지 내의 오프셋 으로 구성 논리주소는 프로그램의 시작 위치로부터 상대적인 값으로, 처리기는 논리주소를 물리주소로 변환 논리 주소 (페이지번호 , 오프셋 ) -> 처리기 -> 물리주소 (프레임 번호, 오프셋)이 된다. OS는 현재 비어있고, 페이지에 할당 가능한 모든 프레임들의 목록을 관리
동적 분할 파티션의 크기와 갯수가 가변적 나중에는 작은 구멍들이 메모리에 생긴다. 외부 단편화가 발생한다. - 현재 파티션 영역 외의 메모리를 쓸 수 없게 된다. 메모리 집약 (compaction) 이 필요하다. - 비효율적임 배치 알고리즘 first-fit, next-fit, best-fit이 있다. first-fit (최초 적합) 가장 앞에 있는 사용 가능한 빈 공간을 찾는다. next-fit (순환 적합) 현재 할당된 파티션 다음의 빈 공간을 찾는다. best-fit (최적 적합) 이용 가능한 빈 공간 중 가장 크기가 작은 공간을 찾는다.
메모리 관리 전략들에 관한 정리 기술설명장점약점고정 분할시스템 생성 시에 주기억장치가 고정도니 파티션들로 분할된다. 프로세스는 균등사이즈의 파티션 또는 그보다 큰 파티션으로 적재된다.구현이 간단하다. 운영체제에 오버헤드가 거의 없다.내부단편화로 인한 비효율적인 사용. 최대 활성 프로세스의 수가 고정동적 분할파티션들이 동적으로 생성되며, 각 프로세스는 자신의 크기와 일치하는 크기의 파티션에 적재된다.내부 단편화가 없고 주기억 장치를 보다 효율적으로 사용할 수 있다.외부 단편화를 해결하기 위한 메모리 집약(compaction)이 요구. 따라서 처리기 효율이 하락가상 메모리 페이징주기억 장치는 균등 사이즈의 프레임으로 나뉜다. 각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지들로 나누니다. 페이지를 저장..
메모리 관리 요구 조건 재배치 (Relocation) 처리기의 효율을 극대화 하기 위해 수행준비된 프로세스들은 주기억 장치로 스왑 인, 또는 스왑 아웃 된다. 스왑 아웃되서 스왑 인 될때, 그 프로세스는 이전과 동일한 주기억장치로 적재되지 않을 수 있다. 따라서 스와핑시에 주기억장치에서 프로그램의 위치가 변경 될 수 있어야 한다. 프로그램 주기억장치에서의 위치가 변경되어도, OS와 처리기 하드웨어는 프로그램 코드의 메모리 참조 부분을 실제 물리주소로 변환할 수 있어야한다. 이 실제 물리주소는 메인 메모리에서의 프로그램의 현재 위치이다. 보호 프로세스는 다른 프로세스에 의한 간섭으로 부터 보호되어야 한다. 따라서 다른 프로세스에 속한 프로그램은 허가없이 다른 프로세스의 메모리를 접근해서는 안된다. 이 것은..
단일 프로그래밍 시스템에 서의 주기억장치는 두 부분으로 구분된다. OS를 위한 공간 (커널 영역 등) 수행 중인 프로세스들을 위한 공간 (사용자 영역) 다중 프로그래밍 시스템에서는 주기억 장치의 사용자 부분이 다수의 프로세스를 수용하기 위해 여러 부분으로 분할 된다. 이러한 분할 작업은 OS에 의해 동적으로 이루어지며 이를 메모리 관리라고 한다. 메모리는 TQ을 소비할 수 있는 적절한 수의 준비된 프로세스들에게 할당되어야 한다. 적은 수의 프로세스가 주기억 장치에 반입되면, 모든 프로세스들이 대부분의 시간 동안 입출력 작업을 마치기를 기다리게 되며 처리기는 IDLE한 상태가 된다. 따라서 메모리는 TQ를 소비할 수 있는 준비된 프로세서들에게 할당되어지는 것을 보장해야 한다.
배포 환경의 구분 개발을 하고 서비스를 단 하나의 웹 컨테이너로 한다고 생각하자. 새로운 코드를 짜게 되면 그것을 테스트 해야하는데 이것을 서비스중에 동시에 한다는 것은 말이 안된다. 불안정한 코드로 인해 의도하지 않은 데이터 수정 및 삭제가 일어날 수도 있고, 테스트 중 코드를 수정하고 다시 서버를 올리는 것은 연속적인 서비스 중단을 낳게 된다. 이 때문에, 우리는 배포 환경을 구분하여 서비스를 배포하게 된다. 배포 환경 별 세팅을 구성함으로써 서비스 환경이 더욱 안정적이어 지고, 무중단 배포 만큼은 아니지만 수정된 사항이 완전히 안정화 된 이후에 서비스 환경에 단 한 번 수정이 이루어지기 때문에 업데이트 및 디버깅으로 인한 배포 중단이 최소화 될 수 있다. 1. 개발환경 서비스 개발자가 개발과 디버깅..