OS 23

페이징

페이징 (Paging) 페이징은 논리주소 공간이 연속된 하나의 공간에 모두 모여 있어야 한다는 제약을 없앤다. 그러므로 페이징을 사용하면, 주 메모리에 올라와 있던 부분을 디스크로 내보낼 때 디스크 상에 이들을 연속적으로 수용할 수 있는 자유 공간을 찾기 위해서 부산을 떨 필요가 없다. 전통적으로 페이징을 구현하기 위한 기능은 하드웨어가 제공해 왔다. 그러나, 최근 디자인에서는 하드웨어와 운영체제의 긴밀한 연계를 통해서 페이징을 구현하고 있다. 1. 기본 방법 물리 메모리는 프레임(frame)이라고 불리는 고정 크기의 블록으로 나누어져 있다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진..

OS/메모리 관리 2018.10.13

연속 메모리 할당 (Contiguous Memory Allocation)

연속 메모리 할당 (Contiguous Memory Allocation) 주 메모리는 운영체제뿐만 아니라 여러 사용자 프로세스도 수용해야 한다. 그리고 이 각 영역은 목적에 맞도록 효율적으로 관리되어야 한다. 메모리는 일반적으로 두 개로 나누어지는데, 하나는 메모리에 상주하는 운영체제를 위한 것이다. 그리고 다른 하나는 사용자 프로세스를 위한 것이다. 운영체제는 메모리 어느 쪽 끝에도 위치할 수 있으며, 이 결정에 영향을 미치는 중요한 요인은 인터럽트 벡터이다. 인터럽트 벡터는 흔히 0번지에 위치하기 때문에 운영체제는 하위 메모리에 위치시키는 것이 보통이다. 그러므로 운영체제는 하위 메모리에 위치하는 상황만 논의할 것인데, 다른 상황도 비슷하다. 보통 여러 프로세스가 동시에 메모리에 적재되어 있는 것이 ..

OS/메모리 관리 2018.10.08

스와핑(swapping)

스와핑(swapping) 프로세스가 실행되기 위해서는 메모리 상에 있어야 하지만 필요한 경우 프로세스는 실행 도중에 임시로 보조 메모리로 교체되어 나갔다가 다시 메모리로 되돌아 올 수가 있다. 이러한 프로세스 교체 과정을 스와핑(swapping)이라고 한다. 예를 들면, 라운드 로빈(round-robin) 스케줄링을 하는 다중 프로그래밍 환경을 생각해 보자. 한 프로세스가 CPU 할당 시간이 끝나면 주 메모리 관리기(memory manager)가 이 프로세스를 보조 메모리로 내보내고 다른 프로세스를 메모리로 불러들일 수 있다. 즉, 스왑시킨다. 이러는 동안 CPU 스케줄러는 메모리 내의 다른 프로세스에게 시간 할당량을 준다. 각 프로세스가 시간 할당량을 모두 소비하면 그 프로세스도 스왑시킬 수 있다. C..

OS/메모리 관리 2018.10.07

메모리 주소 연계 및 동적 적재

메모리 주소 연계 및 동적 적재 1. 주소 연계 (Addressing Binding) 프로그램은 원래 이진 실행 파일 형태로 디스크에 저장된다. 이 프로그램이 실행되기 위해서는 주 메모리로 이동하여 프로세스가 되어야 한다. 사용하는 메모리 관리 기법이 무엇이냐에 따라 프로세스는 실행하는 동안 디스크와 주 메모리 사이를 왕래 할 수 있다. 디스크에서 주 메모리로 들어오기를 기다리고 있는 프로세스들의 집합은 이른바 입력 큐(input queue)를 형성한다. 이 큐에서 하나의 프로세스를 선택해서 메모리로 적재한 후 실행하고 이 프로세스는 실행하는 동안 메모리에서 명령어와 데이터에 접근한다. 언젠가 이 프로세스가 종료되면, 이 프로세스가 사용했던 메모리 공간이 가용 공간이 되며 다른 프로세스를 위해 사용된다...

OS/메모리 관리 2018.10.02

가상 기계 (Virtual Machine)

가상 기계 (Virtual Machine) 1. 가상 기계란? 운영체제 구조의 계층적 접근 방법은 많은 발전을 거듭하다가 결국 가상 기계의 개념이라는 논리적인 결론에 이르게 된다.(계층적 접근 방법을 포함한 운영체제 구조에 대한 내용: ) 가상 기계의 기본적인 착상은 한 컴퓨터의 하드웨어를 다수의 다른 실행 환경으로 추상화하는 것이다. 그리하여 각각의 개별적인 실행 환경이 자신만의 독립된 컴퓨터를 사용한다는 환상을 가지게 만든다. 물론, 일반적으로 프로세스는 순수한 하드웨어(bare machine)에 의해서 제공되지 않는 시스템 호출이나 파일 시스템과 같은 부가적인 기능을 가지고 있다. 반면에, 가상 기계는 어떤 부가적인 기능을 제공하는 것이 아니라 아래에 깔려 있는 순수한 하드웨어와 동일한 인터페이스를..

OS/OS - Overview 2018.10.02

운영체제 구조

운영체제 구조(OS Structures) 현대의 운영체제와 같이 크고 복잡한 시스템이 적절하게 동작하고 쉽게 변경될 수 있으려면, 신중히 제작되어야 한다. 일반적인 접근방법은 한 개의 일관된 시스템보다는 할 일(task)을 작은 구성요소로 분할하는 것이다. 이들 모듈들 각각은 명확하게 정의된 시스템의 일부로서 입출력 요소나 기능이 신중하게 정의되어야 한다. 1. 간단한 구조 많은 상용 시스템들은 잘 정의된 구조를 가지고 있지 않다. 종종 이러한 운영체제들은 작고 단순하며 제한적인 시스템으로 출발하여 원래 범위 이상으로 발전한 경우이다. 그러한 시스템의 예로 MS-DOS가 있다. MS-DOS는 원래 단지 몇 사람들에 의해서 설계, 구현되었고, 이들은 MS-DOS가 그렇게 대중화 되리라고는 생각하지 못했다...

OS/OS - Overview 2018.10.01

운영체제 설계 및 구현

운영체제 설계 및 구현 (OS Design and Implementation) 1. 운영체제 설계 목표 (Design Goals) 시스템을 설계하는 데에 첫번째 문제점은 시스템의 목표와 명세를 정의하는 일이다. 시스템 설계는 최상위 수준에서 하드웨어와 시스템 유형(일괄처리, 시분할, 단일 사용자, 다중 사용자, 분산, 실시간 혹은 범용)의 선택에 의해 영향을 받을 것이다. 이 최상위 설계 수준을 넘어서면 요구 조건들을 명세 하는 것이 훨씬 더 어렵다. 그러나, 이러한 요구 조건은 근본적으로 사용자 목적과 시스템 목적이라는 두가지 그룹으로 나눌 수 있다. 사용자들은 시스템이 명백한 특성을 가지기를 원한다. 시스템이 사용하기 쉽고 편리하며, 배우기 쉽고, 믿을 수 있고, 안전하고, 신속해야 한다. 물론, 이..

OS/OS - Overview 2018.10.01

하드웨어 타이머 (Hardware Timer)

하드웨어 타이머 (Hardware Timer) 우리는 운영체제가 CPU에 대한 제어를 유지할 수 있도록 보장해야 한다. 사용자 프로그램이 무한 루프(infinite loop)에 빠져 제어가 운영체제로 복귀하지 않는 경우가 없도록 반드시 방지해야 한다. 이러한 목적을 달성하기 위해 타이머(timer)를 사용할 수 있다. 타이머는 지정된 시간 후 컴퓨터를 인터럽트하도록 설정할 수 있다. 이 시간은 고정(예를 들면, 1/60초) 혹은 가변(예를 들면, 1밀리 초에서 1초까지 1밀리초 단위로 증가)일 수 있다. 가변 타이머는 일반적으로 fixed-rate clock과 계수기로 구현한다. 운영체제는 계수기 값을 설정한다. 클록이 똑딱(tick) 할 때마다 계수기의 값이 감소한다. 계수기가 0이 될 때 인터럽트가 ..

OS/OS - Overview 2018.09.24

운영체제 이중 동작 모드 (OS dual-mode operation)

운영체제 이중 동작 모드 (OS dual-mode operation) 1. 이중 동작 모드란? (Dual-mode operation) 이중 동작 모드는 쉽게 말해 운영체제를 보호하기 위한 기법이다. 알다시피, 사용자와 운영체제는 시스템 자원을 공유한다. 그렇기 때문에, 사용자에게 제한을 두지 않으면 사용자가 메모리 내의 주요 운영체제 자원을 망가뜨릴 위험이 생기게 된다. 즉, 운영체제의 원활한 작동과 기능을 위해서는 사용자의 시스템 자원 접근을 제한하는 보호 장치가 필수불가결하다. 이러한 보호 장치가 바로 이중 동작 모드(dual-mode operation)이다. 이중 동작 모드의 기본 개념은 사용자가 접근할 수 없는 커널 모드(kernel mode)와 사용자가 접근할 수 있는 사용자 모드(user mo..

OS/OS - Overview 2018.09.24

입출력 구조

입출력 구조 (I/O Structure) 저장장치는 컴퓨터 내 여러 형태의 입출력 장치 중 하나이다. 시스템의 신뢰성과 성능에 미치는 중요성, 그리고 장치들의 다양한 특성 때문에 운영 체제 코드의 많은 부분들이 입출력 기능을 관리하는데 할애된다. 범용 컴퓨터 시스템은 공통 버스에 의해 연결된 여러 개의 장치 제어기와 CPU들로 구성된다. 각 장치 제어기가 특정 유혀으이 장치를 담당하는데, 장치 제어기에 따라 하나 이상의 장치가 부착될 수도 있다. 예를 들어, SCSI(Small Computer System Interface) 제어기에는 7개 이상의 장치를 붙일 수 있다. 장치 제어기는 약간의 로컬 버퍼 저장장치와 특수 목적용 레지스터 집합을 유지한다. 장치 제어기는 자신이 제어하는 주변장치와 자신의 로컬..

OS/OS - Overview 2018.09.20