이화여대 반효경 교수님의 운영체제 강의를 바탕으로 작성하였습니다.
운영체제
`운영체제`란, 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층에 해당한다.
`커널`은 운영체제의 핵심 부분으로, 컴퓨터가 부팅됨과 동시에 메모리 영역에 로드되어 항상 존재하는 프로그램에 해당한다.
운영 체제의 기능
운영체제는 하드웨어의 자원을 효율적으로 관리하는 기능을 한다.
또한 하드웨어를 다루는 복잡한 부분을 간단하게 추상화하여 제공하기 때문에, 사용자는 하드웨어를 어떻게 사용할지에 대해 전혀 고려하지 않고 편리하게 컴퓨터를 사용할 수 있게 된다.
컴퓨터 시스템의 기본적인 구조
컴퓨터 시스템은 기본적으로 위와 같은 구조로 되어있다.
CPU는 register라는 자체 저장장치에 있는 PC(Program Counter)를 사용해서 메모리에 있는 프로그램을 순차적으로 실행시키게 된다.
CPU가 사용자 프로그램을 수행하는 동안 예상치 못한 에러(Exception) 혹은 Interrupt가 발생하면 OS로 제어권이 넘어가게 되는데, 이 때 CPU의 mode bit는 0으로 설정된다.(즉 평소에는 mode bit가 1로 설정되어있다.)
Interrupt는 다양한 용도로 사용되는데, 가장 대표적으로 I/O를 처리하기 위한 용도로 사용된다.
HDD, SSD 와 같은 non-volatile storage나 모니터 등에 의한 I/O는 OS에 의해서만 처리될 수 있기 때문에 사용자 프로그램에서 이러한 정보를 필요로 하는 경우 OS에게 제어권을 넘겨주어야 한다.
따라서 실행중인 사용자 프로그램은 의도적으로 Interrupt를 발생시켜 OS가 CPU 제어권을 가질 수 있도록하고, 필요한 I/O가 수행될 수 있도록 한다. (이러한 Interrupt의 대표적인 예시가 System Call이다)
DMA(Direct Memory Access)
본래 메모리에 접근할 수 있는 장치는 CPU가 유일하지만, 너무 잦은 Interrupt로 인해 발생하는 overhead를 줄이기 위해 D메모리에 접근할 수 있는 DMA를 추가적으로 사용한다.
만약 DMA가 없는 경우, Disk에 대한 read 작업을 살펴보자.
CPU에서 디스크 컨트롤러에게 데이터를 읽도록 명령을 보내면 디스크 컨트롤러는 데이터를 읽어오고, 이 정보를 자신의 버퍼에 저장한다.
이후 디스크 컨트롤러는 데이터가 준비되었음을 알리기 위해 CPU에게 인터럽트를 보내고, CPU는 인터럽트를 인식하여 OS에게 제어권을 넘겨준다.
이제 CPU는 데이터를 받기 위한 인터럽트 서비스 루틴을 진행하고, 디스크 컨트롤러 레지스터에서 데이터를 복사한 후, 읽은 데이터를 메모리로 복사한다.
위 과정을 살펴보면, 디스크에 있는 정보를 메모리로 가져오기까지 CPU가 굉장히 많은 일을 하는 것을 확인할 수 있다.
할 일이 산더미 같이 쌓여있는 CPU에게 이렇게 I/O의 대부분의 과정에 대해 일을 맡기는 것은 다른 프로그램의 수행 속도에 매우 큰 영향을 줄 수 있다.
이와 비교하여 DMA가 있는 경우의 작업은 아래와 같다.
이제는 CPU가 직접 디스크 컨트롤러에게 명령을 내리는 것이 아니라 DMA 컨트롤러에게 디스크로부터 데이터를 읽도록 명령을 보낸다.
DMA 컨트롤러는 디스크 컨트롤러에게 데이터를 읽어오도록 명령을 보내고, 디스크 컨트롤러가 데이터를 읽어오면 이를 DMA 버퍼로 직접 전송한다.
DMA 컨트롤러가 데이터 전송을 완료하면, DMA 완료 인터럽트를 발생시키고 CPU는 해당 인터럽트를 인식하여 OS에게 제어권을 넘겨준다.
이후 DMA 버퍼의 데이터를 메모리로 복사한다.
위 과정을 살펴보면 CPU가 I/O 작업에 참여하는 부분이 현저하게 적어진 것을 확인할 수 있다.
Disk I/O에 쓰는 시간이 줄어든 만큼, 사용자 프로그램과 같은 다른 작업에 CPU를 할당할 수 있는 시간이 늘어난 것이고 이는 즉 성능 개선을 의미한다.
'OS' 카테고리의 다른 글
[OS] 2. Process (1) | 2023.10.27 |
---|---|
[OS] 9. File System (0) | 2023.10.08 |
[OS] 8. Virtual Memory (0) | 2023.10.03 |
[OS] 7. Address Translation (0) | 2023.10.03 |
[OS] 4. Process Scheduling (0) | 2023.10.02 |