STUDY LOG/Operating Systems

컴퓨터 시스템의 구조

Jinwang Mok 2022. 7. 7. 18:59

*본 강의는 KOCW에서 이화여대 반효경 교수님의 2014년도 1학기 공개 강의를 공부하며 요약 및 정리한 내용입니다.

컴퓨터 시스템의 구조

컴퓨터라고 하는 시스템은 CPU와 메모리로 구성된 협의의 컴퓨터 부분과 모니터, 키보드, 마우스, 프린터 그리고 하드 디스크와 같은 입출력 장치(I/O device)들로 구성되어 있다.

CPU

CPU는 오직 메모리와 작업하며 입출력 장치들과는 인터럽트(Interrupt)를 통해 커뮤니케이션 한다. CPU는 매우 빠른 자원이기 때문에 입출력 장치들을 직접 관리할 경우 비효율적인 동작을 하게 된다. 따라서 각각의 입출력 장치들은 해당 장치를 제어하는 디바이스 컨트롤러(device controller)와 로컬 버퍼(local buffer)를 가지고 있고, 디바이스 컨트롤러를 통해 해당 입출력 장치의 수행을 제어한다. 그리고 이렇게 수행되는 정보는 로컬 버퍼에 저장되게 된다. 입출력 장치는 수행이 완료되면 CPU에 인터럽트를 발생시켜 해당 입출력을 처리하도록 알린다.

Memory

메모리에는 운영체제와 사용자 프로그램들이 올라가있다. CPU는 운영체제 또는 사용자 프로그램이 점유하게 되는데(단일 CPU의 경우) 만일 사용자 프로그램이 보안상 위험한 작업을 CPU에 수행시킨다면 문제가 될 수 있기 때문에 mode bit를 통해 권한을 부여하게 된다. mode bit이 1일 때는 사용자 모드로 일반 명령만 가능하며 제한적이고, 0일 때는 모니터 모드 또는 커널 모드라고 부르며 특권 명령으로 제약이 없다. 인터럽트나 예외가 발생하면 해당 시점의 레지스터의 PC(program counter)를 저장하고 운영 체제 코드에 정의된 인터럽트 처리 루틴으로 CPU의 제어권을 넘긴다. 즉, 인터럽트가 발생하면 사용자 프로그램이 CPU를 점유하고 있더라도 그 제어권이 운영체제로 넘어가게 된다.

이 때 사용자 프로그램이 입출력을 발생시키고자 한다고 하더라도 입출력 장치를 사용하는 것은 운영체제의 코드 내에 정의되어 있기 때문에 CPU 점유권을 운영체제로 넘겨줘야 한다. 따라서 직접 CPU에 인터럽트를 발생시켜 운영체제로 CPU 점유권을 넘겨주고 입출력을 처리하도록 한다. 이를 시스템콜(System Call)이라고 한다.

DMA

그런데 만약 키보드로 여러 문자를 입력받는다고 가정한다면 하나의 문자를 입력 받을 때마다 인터럽트를 발생시켜 CPU가 매우 비효율적으로 일하게 된다. 이를 해결하기 위해서 DMA(Direct Memory Access)로 컨트롤한다. 이는 CPU의 관여 없이 디바이스 컨트롤러가 해당 장치의 로컬 버퍼의 내용을 메모리에 블록 단위로 직접 전송하는 것을 말하며 블록 단위로 인터럽트를 발생시키기 때문에 CPU는 여러번 받을 인터럽트를 한 번만 받으면 되기 때문에 보다 효율적으로 동작할 수 있게 된다. 메모리 또한 메모리를 위한 디바이스 컨트롤러를 가지고 있는데 이는 CPU와 DMA의 접근으로부터 교통정리를 해주는 역할을 수행한다.

Timer

또 만약 어떤 사용자 프로그램에 무한 루프가 있다고 가정하자. 이 무한 루프 때문에 CPU를 특정 사용자 프로그램이 계속 점유한다면 효율성이 떨어지고 문제가 발생한다. 이를 해결하기 위해 타이머라는 장치가 존재하며 이는 설정된 시간이 지나면 인터럽트를 발생시켜 CPU 점유권을 OS로 넘기는 역할을 수행한다.

입출력 과정

앞서 설명한 것처럼 사용자 프로그램은 입출력을 하기 위해 인터럽트를 발생시키는데 이를 소프트웨어 인터럽트라고 하며 트랩(trap)이라고도 부른다. 이후 입출력 장치가 수행을 마치고 이를 알리기 위해서도 인터럽트를 발생시키는데 이는 하드웨어 인터럽트라고 부르며 일반적으로 인터럽트라는 용어는 이 경우에 해당한다.

 

정정할 부분은 알려주시면 감사하겠습니다:)

'STUDY LOG > Operating Systems' 카테고리의 다른 글

운영 체제란?  (0) 2022.07.04