SW Engineering 264

44_디렉토리 구조 (Directory Structure)

44_디렉토리 구조 (Directory Structure) 디스크는 파일 시스템으로 사용 될 수 있다. 사용에 따라 하나의 디스크에 여러 개의 파일 시스템을 사용하거나 파일 시스템으로 일부분을 사용하고 나머지 부분은 스왑 공간이나 포맷되지 않은(raw) 디스크 공간으로 사용한다. 이러한 공간을 파티션(partition), 슬라이스(slice) 등 다양하게 부르기도 한다. 파일 시스템은 이러한 부분에 각각 생성될 수 있으며 각 부분은 볼륨(volume)이라고 불리는 좀 더 큰 구조를 형성하기 위해 합쳐질 수 있으며 여기에도 파일 시스템이 생성될 수 있다. 각 볼륨은 논리적인 가상 디스크(virtual disk)로 취급 될 수 있으며 볼륨은 한 개 이상의 시스템이 부팅되고 실행 될 수 있도록 여러 개의 운영..

43_파일 접근 방법 (Access Method)

43_파일 접근 방법 (Access Method) 파일이 사용될 때는 이 정보가 반드시 메모리로 적재되어야 한다. 어떤 시스템은 파일에 대해 단 하나의 접근 방법만 제공한다. IBM의 파일과 같은 다른 파일은 많은 접근 방법을 제공한다. [순차 접근 (Sequential Access)] 가장 간단한 접근 방법은 순차 접근이다. 디스크에 있는 파일을 마치 테이프를 재생하는 것처럼 접근한다. 여기서의 접근 방법은 저장되어 있는 레코드 순서로 접근함을 의미한다. 이 접근 모드는 가장 일반적이며 편집기나 컴파일러는 보통 이러한 형식으로 파일을 접근 한다. 파일에 대한 대부분은 읽기(read), 쓰기(write)이다. 읽기는 파일의 다음 부분부터 차례로 읽어 나가며 자동적으로 현재 위치를 추적하는 파일 포인터(o..

42_파일 개념 (File Concept)

42_파일 개념 (File Concept) 메모리는 통상적으로 프로그램과 자료를 영구 보관하기에는 용량이 작고 비용이 많이 들어가므로 보조 저장 장치를 사용한다. 컴퓨터에 부착되는 보조 저장 장치들은 여러 면에서 서로 다른 특징을 가지고 있으며 접근방법, 전송방법, 전용, 공용 등 다양한 특징이 있다. 또한 현재 컴퓨터의 구성 요소 중에서 가장 속도가 느리다. 운영체제의 입/출력 서브시스템의 중요 목적은 시스템에 대하여 간단한 인터페이스를 제공하고 각 장치들이 성능 병목을 피하기 위해 최대한의 동시성(concurrency)을 확보를 위한 입/출력의 최적화를 이루는 것이다. 파일은 운영체제에 의해서 물리 장치들로 매핑되며 이들 저장 장치들은 일반적으로 비휘발적 성질을 갖기 때문에 전원이 나가거나 시스템이 ..

41_커널 메모리 할당

41_커널 메모리 할당 사용자 모드에서 수행중인 프로세스가 추가적인 메모리를 요구하면 커널이 관리하는 자유 페이지 프레임의 리스트에서 페이지들이 할당된다. 페이지 교체 정책으로 인하여 물리 메모리 상에 흩어져 있는 자유 페이지들로 채워진다. 사용자 프로세스가 1바이트만 필요하더라도 프로세스가 한 페이지 프레임을 할당 받았으므로 내부 단편화가 발생 한다. 가상 메모리 프레임 할당 : http://sqlmvp.kr/140192392430 커널 메모리는 보통 사용자 모드 프로세스에게 할당해 주기 위한 페이지 리스트와는 별도의 자유 메모리 풀에서 할당 받는다. 이는 다양한 크기의 자료 구조를 할당 할 수 있으며 단편화에 의한 낭비를 최소화 한다. 또한 사용자 모드 프로세스에 할당되는 페이지들은 물리 메모리에서 ..

40_가상 메모리 매핑 파일 (memory Mapped File)

40_가상 메모리 매핑 파일 (memory Mapped File) Open(), read(), write() 시스템 호출을 사용하여 디스크에 있는 파일을 사용하면 파일이 매번 접근될 때마다 시스템 호출을 해야 하고 디스크를 접근해야 한다. 이와 같은 방법 대신 입/출력을 메모리 참조 방식으로 대신할 수도 있다. 메모리 매핑(memory mapping)이라고 불리는 접근 방식은 프로세스의 가상 주소 공간 중 일부를 관련된 파일에 할애하는 것을 말한다. 가상 메모리 : http://sqlmvp.kr/140191866773 파일의 메모리 매핑은 프로세스의 페이지 중 일부분을 디스크에 있는 파일의 블록에 매핑 함으로써 이루어진다. 첫 번째 접근은 일반적인 페이징 과정에 따라 페이지 부재를 발생 시킨다. 그 때 ..

39_가상 메모리 쓰레싱(Thrashing)

39_가상 메모리 쓰레싱(Thrashing) 어떤 프로세스에게 할당된 프레임 수가 명령어 집합 아키텍처(instruction set architecture)가 요구하는 최소한의 수보다 적게 되면 그 프로세스는 실행을 한 동안 일시 중단(suspend)하여야 한다. 프로세스의 모든 페이지를 포기하고 다른 프로세스들에게 넘겨 주는 스왑인(swap in), 스왑아웃(swap out) 단위의 CPU 스케줄링이 필요하다. 프레임을 충분히 할당 받지 못한 프로세스는 페이지 부재가 발생한다. 이때 페이지 교체가 발생하지만 이미 활발하게 사용되는 페이지들만으로 이루어져 있으면 어떤 페이지가 교체되든 바로 다시 필요해질 것이다. 이런 상황이 반복해서 페이지 부재가 과도하게 발생하는 것을 쓰레싱(thrashing)이라 한..

38_가상 메모리 프레임 할당 (Allocation of Frame)

38_가상 메모리 프레임 할당 (Allocation of Frame) 여러 개의 프로세스들에게 제한된 자유 메모리를 어떻게 할당할까? 각 프로세스는 몇 프레임씩 할당 받아야 할까? 다양한 할당 정책 및 종류를 알아 보자. [최소로 할당 해야 할 프레임의 수] 메모리 할당에는 다양한 제한이 존재 한다. 페이지 공유가 없으면 사용할 수 있는 자유 프레임 수보다 더 많이 할당 할 수는 없다. 또한 최소한 몇 페이지는 할당해야만 한다. 최소한의 프레임을 할당 해야만 하는 이유는 성능과 관계 된다. 각 프로세스에 할당되는 프레임 수가 줄어들면 페이지 부재율은 증가하고 프로세스 실행은 늦어지게 된다. 명령 수행을 완료되기 전에 페이지 부재가 발생하면 그 명령을 재실행되어야 한다는 점을 주의해야 한다. 하나의 명령이..

37_가상 메모리 페이지 교체(Page Replacement) - LRU 근사 페이지 교체, 계수 기반 페이지 교체 , 페이지 버퍼링 알고리즘

37_가상 메모리 페이지 교체(Page Replacement) LRU 근사 페이지 교체, 계수 기반 페이지 교체 , 페이지 버퍼링 알고리즘 [LRU 근사 페이지 교체 (LRU Approximation Page Replacement)] LRU 페이지 교체 지원을 충분히 할 수 있는 하드웨어는 거의 없다. 그러나 많은 시스템은 참조 비트(reference bit)의 형태로 어느 정도 지원하고 있다. 페이지 참조가 있을 때마다(페이지 내의 어떤 바이트라도 읽거나 쓸 때) 하드웨어가 그 페이지에 대한 참조 비트를 설정 한다. 참조 비트는 페이지 테이블에 있는 각 항목과 대응 된다. 얼마가 지나면 페이지 사용의 순서는 모르겠지만 어떤 페이지가 그 동안 사용되었고 어떤 페이지가 한번도 사용되지 않았는지를 알 수 있..

36_가상 메모리 페이지 교체(Page Replacement) - FIFO, 최적(optimal), LRU(Least Recently Used) 페이지 교체

36_가상 메모리 페이지 교체(Page Replacement) FIFO, 최적(optimal), LRU(Least Recently Used) 페이지 교체 [FIFO 페이지 교체 (FIFO Page Replacement)] FIFO 페이지 교체 알고리즘은 어떤 페이지를 교체해야 할 때 메모리에서 가장 오래된 페이지를 내보낸다. FIFO 페이지 교체 알고리즘은 이해하기도 쉽고 프로그램 하기도 쉬우나 항상 성능이 좋은 것은 아니다. 예를 들어 교체된 페이지 중 오래 전 사용된 후 더 이상 사용되지 않는 경우도 있으나 교체된 페이지가 초기화 된 후 계속 사용되는 페이지의 경우에는 다시 적재 하는 동안 부재율을 높이고 프로세스의 실행속도를 떨어뜨리기 때문이다. 그러나 FIFO 페이지 교체 알고리즘은 잘못된 실행을..

35_가상 메모리 페이지 교체(Page Replacement)

35_가상 메모리 페이지 교체(Page Replacement) 페이지 부재율에서 각 페이지는 처음 그 페이지가 접근될 때 한번만 페이지 부재가 발생한다고 가정하였다. 하지만 전체 10페이지 중 실제 5페이지만 사용하는 프로세스가 있다면 요구 페이징을 통해 전혀 사용되지 않을 5페이지를 적재하는데 필요한 입/출력을 피할 수 있다. 또한 다중 프로그래밍 정도를 높여서 프로세스 수를 2배로 늘릴 수 있다. 즉 40프레임이 있다면 10개의 페이지가 전부 필요했다면 4개의 프로세스만이 수행 될 수 있었지만(10개 중 5개가 사용되지 않으므로)실제로는 8개의 프로세스를 실행 할 수 있다. 페이지 부재 : http://sqlmvp.kr/140191934297 다중 프로그램 정도를 더 올리면 메모리 과할당(over a..