본문 바로가기

Dev.Basic/운영체제

[OS] 2-2. System Structure & Program Execution II

Chapter 2-2. System Structure & Program Execution II




입출력 방식에는 두 가지로 나뉜다.

동기식 입출력, 비동기식 입출력이다.


synchronous I/O

I/O 요청 후 입출력 작업이 완료된 후에어 제어권이 사용자 프로그램에 넘어가는 방식이다.

동기식 입출력은 구현 방법에 따라서 또 두 가지로 나뉜다.


구현방법1>

I/O 작업이 끝날 때까지 CPU를 갖고 있는다. 즉 반환하지 않는다.

이렇게 되면 매 시점마다 하나의 I/O만 일어날 수 있으며 CPU의 낭비가 상당하다.

구현방법2>

I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗는다.

I/O 처리를 기다리는 줄에 그 프로그램을 줄 세운다.

그리고 다른 프로그램에게 CPU를 할당한다.


asynchronous I/O

I/O요청 후 기다리지 않고 제어권이 사용자 프로그램 프로세스에게 즉시 넘어간다.

즉, 프로세스가 다른 일(다른 Instruction)을 동시에 수행할 수 있다는 것이다.


두 경우 모두 완료되었다는 것을 인터럽트를 통해 알린다



저장장치 계층구조

Register

Cache Memory

Main Memory(DRAM)

HDD,Flash Memory, SSD


위로 갈 수록 속도가 빨라지고, 단위 공간당 가격이 비싸진다. 그래서 용량이 작아진다.

Register, Cache Memory, Main Memory는 Volatility(휘발성)의 특성을 갖고 있다.

그리고 CPU가 직접 접근이 가능하여 Byte 단위 접근이 가능하다.

하지만 HDD는 CPU가 직접 접근할 수 없고 sector단위로 접근하게 된다.


이러한 계층 구조를 취하는 이유는

전체적으로 Caching이라는 목적을 갖는다.

Caching이란 접근 속도가 빠른 메모리에 올려서 재사용하는 것이 목적인 방법이다.



프로그램 실행 과정

File System(HDD)에서 실행 파일이 실행되면

Virtual Memory에 올라가고(프로그램만의 독자적인 주소 공간이 생성된다)

이 공간은 code / data / stack 으로 나뉘어 형성되게 된다.

그 다음 Physical Memory에 올라간다.

이 때, 프로그램이 통째로 모두 올라가지 않고 지금 당장 실행에 필요한 부분만 올라간다.

메모리 낭비 방지를 위해 필요한 부분만 올리는 것이다.

그리고 운영체제는 올라와있는 것이 필요없다고 판단되면 다시 버리기 까지 한다.

그만큼 메모리를 효율적으로 사용한다.

Swap area라는 것이 존재한다.

메모리의 연장선 상으로 하드디스크라고 할 수 있다.

메모리 공간의 한계로 사용된다.


Chapter 2-2 끝

이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.