컴퓨터 시스템의 구조
1. 입출력 구조
- 입출력(I/O)이란 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것을 말한다. 입출력 방식에는 동기식 입출력과 비동기식 입출력이 있다.
1) 동기식 입출력(synchronous I/O)
- 동기식 입출력(synchronous I/O)은 어떤 프로그램이 입출력을 요청했을 때 입출력이 완료된 후에야 그 프로그램이 후속작업을 수행할 수 잇는 방식을 말한다. 동기식 입출력에서 CPU는 입출력 연산이 끝날 때까지 인터럽트를 기다리며 자원을 낭비하게 된다.
- 따라서 일반적으로 프로그램이 입출력을 수행 중인 경우 CPU를 다른 프로그램에게 이양해 CPU가 계속 쉬지 않고 일할 수 있도록 관리한다.
- 운영체제는 프로그램을 몇 가지 상태로 나누고 입출력 중인 프로그램의 경우 봉쇄 상태(blocked state)로 전환시킨다. 봉쇄 상태의 프로그램에게는 CPU를 할당하지 않고 CPU 할당 시 곧바로 명령을 수행할 수 있는 프로그램에만 CPU를 할당한다.
- 다수의 프로그램이 동시에 입출력 연산을 요청하는 경우 동기식 입출력에서는 입출력 요청의 동기화를 위해 장치별로 큐(Queue)를 두어 요청한 순서대로 처리할 수 있도록 한다. 프로그램 A가 먼저 요청했으면 이를 먼저 큐에 넣고, 그 후에 발생한 B의 요청을 A의 요청 뒤에 삽입하는 것이다. 이는 디스크 차원에서는 큐에 있는 순서대로 처리함으로써 동기화 문제를 해결할 수 있다.
- 각 입출력장치의 컨트롤러는 큐에 있는 순서에 따라 매 시점 하나씩 자신에게 주어진 입출력 작업을 처리하게 된다. 이때, CPU는 입출력과 관련 없는 프로그램을 수행하도록 하고, 요청된 입출력 연산이 완료되면 CPU에게 입출력이 완료되었다는 인터럽트를 통해서 알려준다. 이 경우, 운영체제 커널은 인터럽트 처리루틴으로 가서 입출력 연산을 끝낸 프로그램이 CPU를 할당받을 수 있도록 그 프로그램를 봉쇄 상태로부터 해제시킨다.
2) 비동기식 입출력(asynchronous I/O)
- 비동기식 입출력은 입출력 연산을 요청한 후에 연산이 끝나기를 기다리는 것이 아니라 CPU의 제어권을 입출력 연산을 호출한 그 프로그램에게 곧바로 다시 부여하는 방식을 말한다.
- 예를 들어, 입출력 요청이 디스크에서 읽어오는 요청이 아니라 디스크에 쓰는 요청이라면 쓰기 작업이 완료되기 전에도 다음 명령을 수행할 수 있으므로 비동기식 입출력이 사용될 수 있다.
3) 동기식과 비동기식 입출력의 차이
- 사용자가 I/O요청을 하면 동기식 입출력에서는 먼저 운영체제의 커널로 CPU의 제어권이 넘어와서 입출력 처리와 관련된 커널의 코드가 수행된다. 이때 입출력을 호출한 프로세스의 상태를 봉쇄 상태로 바꾸어 입출력이 완료될 때까지 CPU를 할당받지 못하도록 한다. 입출력이 완료되면 I/O 컨트롤러가 CPU에 인터럽트를 발생시켜 입출력이 완료되었음을 알린다. 그 후 프로세스의 봉쇄 상태를 해제시켜 CPU를 할당받을 수 있는 권한이 다시 생기게 된다.
- 비동기식 입출력에서는 CPU의 제어권이 입출력을 요청한 프로세스에게 곧 바로 다시 주어지며, 입출력 연산이 완료되는 것과는 무관하게 처리 가능한 작업부터 처리한다. 한편 비동기식 입출력에서도 입출력 연산이 완료되면 동기식과 마찬가지로 인터럽트를 통해 이를 CPU에게 알려준다. 그 후 그 시점부터 읽어온 데이터를 필요로 하는 명령을 수행할 수 있게 된다.
- 일반적인 경우 운영체제에게 입출력 요청을 할 경우 해당 프로그램의 입출력이 완료될 때까지 그 프로그램을 봉쇄시키는 동기식 입출력을 사용한다. 이때 운영체제는 장치별로 입출력 처리를 기다리는 프로세스를 줄 세워 관리함으로써 동기성이 보장되는 것이다.
2. DMA
- 원칙적으로는 메모리는 CPU에 의해서만 접근할 수 있는 장치이다. 따라서 CPU 외의 장치가 메모리의 데이터에 접근하기 위해서는 CPU에게 인터럽트를 발생시켜 CPU가 이를 대행하는 식으로만 가능하다.
- 그러나 모든 메모리 접근 연산이 CPU에 의해서만 이루어질 경우 입출력 장치가 메모리 접근을 원할 때마다 인터럽트에 의해 CPU의 업무가 방해를 받게 되어 CPU 사용의 효율성이 떨어지는 문제점이 발생한다.
- 이러한 비효율성을 극복하기 위해 CPU 이외에 메모리 접근이 가능한 장치인 DMA(Direct Memory Access)를 둔다.
- DMA는 일종의 컨트롤러로서, CPU가 입출력 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막아주는 역할을 한다. DMA는 바이트(byte) 단위가 아니라 블록(block)이라는 큰 단위로 정보를 메모리로 읽어온 후에 CPU에게 인터럽트를 발생시켜서 해당 작업의 완료를 알려준다.
- DMA를 통해 CPU에 발생하는 인터럽트의 빈도를 줄여 CPU를 좀 더 효율적으로 관리하고 입출력 연산을 빠르게 수행할 수 있게 된다.
3. 저장장치의 구조
- 컴퓨터 시스템을 구성하는 저장장치는 주기억장치와 보조기억장치로 나뉜다.
- 주기억장치에는 보통 메모리라고 부르며 전원이 나가면 저장되었던 내용이 모두 사라져버리는 휘발성(volatile)의 RAM을 매체로 사용하는 경우가 대부분이다.
- 보조기억장치는 전원이 나가도 저장된 내용을 기억할 수 있는 비휘발성(nonvolatile)의 마그네틱 디스크를 주로 사용한다.
- 보조기억장치의 용도는 크게 두 가지로 구분된다.
- 첫째는 파일 시스템(file system)용이다. 전원이 나가도 유지해야 할 정보가 있으면 그것을 파일 형태로 보조기억장치에 저장하게 된다. 메모리는 휘발성 매체이기 때문에 비휘발성 매체인 디스크를 파일 시스템용으로 사용하는 것이다.
- 두 번째 용도는 메모리의 연장 공간인 스왑 영역(swap area)이다. 메모리는 크기가 한정되고 가격이 상대적으로 비싼데다가 용량이 적은 경우가 대부분이다. 그러므로 다수의 프로그램이 메모리에 올라가 동시에 수행되는 현대의 컴퓨터 환경에서는 메모리 공간이 부족한 경우가 흔히 발생되며 이 경우 운영체제는 프로그램에 필요한 부분만 메모리에 올려놓고 그렇지 않은 부분은 디스크의 스왑 영역에 내려놓는 스왑 아웃(swap out) 시킨다. 스왑 영역으로는 하드 디스크가 가장 널리 사용되며 이러한 공간은 메모리의 연장 공간으로서의 역할을 담당하므로 파일 시스템처럼 비휘발성 용도로 사용되는 것과 구분된다.
- 보조기억 장치 중 가장 대표적인 저장 매체인 하드디스크에는 여러 개의 마그네틱 원판들이 있고 암(arm)이 이동하며 원판에 저장된 데이터를 읽고 쓰는 방식으로 동작한다.
- 디스크의 원판의 표면에는 트랙(track)으로 나뉘고, 각 트랙은 섹터(sector)로 나뉜다. 섹터에는 최소한의 단위 정보가 저장된다.
4. 저장장치의 계층 구조
- 컴퓨터를 구성하는 저장장치는 빠른 저장장치부터 느린저장장치까지 단계적인 계층구조로 이루어져있다.
- 빠른 저장장치는 단위 공간당 가격이 높기 때문에 적은 용량을 사용하며, 느린 저장장치는 가격이 저렴해 대용량을 사용하는 반면 접근 속도가 느리다.
- 당장 필요한 정보는 빠른 저장장치에 넣어두어 수행 속도를 높이고 그렇지 않은 정보는 상재적으로 느린 저장장치에 보관하게 된다.
- 저장장치 계층은 최상위의 CPU 내부에 존재하는 레지스터부터 캐시 메모리, 메인 메모리 등의 휘발성 저장장치로 구성되는 부분이 상위에 존재하며, CPU가 직접 접근해서 바이트 단위로 처리한다. 반면 메인 메모리보다 아랫부분을 구성하는 저장장치 계층은 비휘발성 저장장치이며 CPU가 직접 접근하지 못하며 섹터단위로 접근한다.
- 상위 저장장치 계층으로 갈수록 접근 속도가 월등히 빠르지만 용량은 상대적으로 적다. 하지만 당장 필요한 정보만을 선별적으로 저장하면 하위에 있는 큰 용량을 가진 것과 비슷한 성능효과를 낼 수 있다.
- 캐시메모리는 여러 가지 캐싱 기법을 이용해 적은 용량의 캐시 메모리를 사용해도 메인 메모리와 같이 큰 용량을 가진 것처럼 효율적으로 동작하도록 관리할 수 있다. 이때 캐싱기법은 상대적으로 느린 저장자치에 있는 내용 중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장함으로써 두 저장장치 사이의 속도를 완충시킨다.
출처 : (http://www.kocw.net/home/m/search/kemView.do?kemId=1046323)
- 강의 : 이화여자대학교, 반효경 (운영체제)
- 책 : 운영체제와 정보기술의 원리 [반효경]
위 강의와 책을 보며 공부한 내용을 기록하였습니다.
'CS > 운영체제' 카테고리의 다른 글
프로세스와 스레드의 차이 (1) | 2022.09.11 |
---|---|
컴퓨터 시스템의 동작 원리-3 (0) | 2021.10.28 |
컴퓨터 시스템의 동작 원리-1 (0) | 2021.10.28 |
운영체제(OS)의 자원 관리 기능 (0) | 2021.10.28 |
운영체제(OS)에 대하여 (0) | 2021.09.27 |