운영체제를 공부하기에 앞서 컴퓨터 시스템 구조를 보면 이전에 PC 조립을 통해 보았듯 메인 보드 위에 CPU, RAM, SSD, I/O 포트등이 있다. 운영체제는 이러한 컴퓨터 하드웨어 바로 위에 설치되어 하드웨어 소프트웨어 사이에서 컴퓨터의 자원(CPU, 메모리, 입출력 장치 등)을 효율적으로 관리하는 역할을 한다. (CPU 스케줄링, 메모리 관리, 인터럽트 입출력 관리, 프로세스 관리 등)

 

각각의 디스크, I/O 장치들에는 메인 CPU와 메모리처럼 이를 전담하는 device controller와 작업 공간인 local buffer가 있고 CPU에는 register, Interrupt line, mode bit이 붙어있다. 

 

 

먼저 레지스터는 CPU의 내부 메모리중 하나로 내부 메모리는 레지스터와 캐시 메모리인 L1, L2, (L3)으로 구성 되어 있는데 메인 메모리(RAM)가 HDD, SSD에 비해 아무리 빠르다고 해도 CPU와 속도 차이가 심하기 때문에 효율적으로 처리하기 위해 CPU 내부에 임시 메모리 저장소가 있는 것이다. (레지스터는 주로 연산 결과를 기억하는 용도)

 

CPU는 매우 빠르게 메인 메모리로부터 입력을 처리하는데만 집중을 하는데 입출력 처리 같은 경우는 CPU가 기다리기에 너무 비효율적이라 입출력이 되는 동안 다른 프로그램으로 넘어가 명령을 처리한다. 입출력 요청을 받으면 device controller는 입출력을 처리하는데 이후 interrupt line에 인터럽트가 전달(DMA Controller)되어 처리가 끝났다는 것을 알리는데 인터럽트가 들어오면 CPU 제어권이 운영체제에 넘어오면서 운영체제는 CPU를 넘겨 받고 인터럽트 처리를 한다.

 

운영체제가 프로그램에 CPU를 넘겨주고 받는 등의 처리를 하지만 다른 프로그램에 CPU를 넘겨주면 다시 강제로 받아올 수가 없기 때문에 CPU가 묶이는 상황(무한 루프 등)이 발생할 수 있다. 그래서 또 다른 하드웨어 요소인 타이머를 사용해 시간 제한을 걸어두고 초과가 되면 타이머 인터럽트에 의해 CPU 제어권이 다시 운영체제에 돌아가도록 한다. 이렇게 타이머 인터럽트에 의해 강제로 반납되는 것 외에도 사용자 프로그램은 직접 입출력을 받아오거나 할 수 없기 때문에 운영체제에 입출력 요청을 하고 CPU를 반납한다. 이를 시스템 콜이라 하며 일반적으로 디바이스 컨트롤러에서 발생하는 하드웨어적 인터럽트와 달리 트랩(소프트웨어적 인터럽트)이라고 한다.

 

운영체제에는 다양한 인터럽트에 따라 처리하는 인터럽트 처리 루틴이 있고 인터럽트를 처리하는 함수인 인터럽트 처리 루틴의 주소를 가지는 인터럽트 벡터가 있다.

 

운영체제와 사용자 프로그램은 이렇게 처리할 수 있는 권한에도 차이가 있기 때문에 보호 장치인 mode bit가 존재하는데 사용자 프로그램을 수행하는 사용자 모드(1)과 OS 코드를 수행하는 모니터 모드(0)로 계속 전환하면서 처리를 한다. (인터럽트 발생시 mode bit가 0으로, 사용자 프로그램에 cpu를 넘기기 전 1로 셋팅하는 등)

 

그리고 CPU에 인터럽트가 너무 걸려도 비효율적이기 때문에 DMA(Direct Memory Access) 컨트롤러가 존재하는데 DMA 컨트롤러는 입출력 처리가 끝나면 로컬 버퍼의 데이터를 메인 메모리에 복사하고 CPU에 인터럽트를 한번만 걸어서 요청한다. 

 

 

 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

'CS' 카테고리의 다른 글

[운영체제] 가상 메모리  (0) 2023.04.05
[운영체제] 프로세스와 스레드  (0) 2022.12.08
[운영체제] 프로세스  (0) 2022.12.02
컴퓨터 구조  (0) 2022.12.01

+ Recent posts