본문 바로가기

운영체제

3:컴퓨터 시스템의 동작 원리(1)

1.컴퓨터 시스템의 구조

2.CPU 연산과 I/O연산

3.인터럽트의 일반적 기능

4.인터럽트 핸들링

5.입출력 구조

6.DMA

7.저장장치의 구조

8.저장장치의 계층 구조

9.하드웨어의 보안

10.메모리 보안

11.CPU보호

12.시스템콜을 이용한 입출력 수행


1.컴퓨터 시스템의 구조

*컴퓨터 내부 장치

:CPU,메모리

*컴퓨터 외부장치

:디스크,키보드,마우스,모니터,네트워크 장치

 

*컨트롤러:

메모리 및 입출력장치 등의 각 하드웨어 장치에 달림.

일종의 작은 CPU

ex)메모리 컨트롤러, 디스크 컨트롤러

 

*커널:운영체제는 항상 메모리에 올라가 있다.하지만 모든 코드를 다 상주시키면 메모리 낭비 발생함.전체 운영체제 중 핵심적인 부분만 항상 메모리에 올라가 있는데 이 부분을 커널(kernel)이라고 함.

 

2.CPU 연산과 I/O연산

*로컬버퍼:

각 장치마다 데이터를 임시로 저장하기 위해 작은 메모리를 가지고 있다. 이를 로컬 버퍼라고 함.

 

*인터럽트:

컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법. CPU옆에 인터럽트 라인이 있어서 CPU가 자신의 작업을 하던 중간에 인터럽트 라인에 신호가 들어오면 하던 일을 멈추고 인터럽트 관련 일을 먼저 처리한다.

 

3.인터럽트의 일반적 기능

*하드웨어 인터럽트(통상적인 인터럽트는 하드웨어 인터럽트를 의미)

:컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅

 

*소프트웨어 인터럽트(=트랩=Trap)

:소프트웨어가 그 일을 수행.

ex)예외상황:사용자 프로그램이 비정상적인 작업 시도 or  권한 없는 작업 시도할 때 이에 대한 처리를 위해 발생시키는 인터럽트 

ex)시스템 콜: 사용자 프로그램이 운영체제 내부에 정의된 코드를 실행하고 싶을 때 운영체제에 서비스를 요청하는 방법

 

*인터럽트 벡터:

인터럽트 종류마다 번호를 정해서, 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조를 말한다.

 

*인터럽트 처리루틴(=인터럽트 핸들러):

실제 처리해야 할 코드는 이 곳에 정의된다.

 

4.인터럽트 핸들링:

인터럽트가 발생한 경우에 처리해야 할 일의 절차

프로그램A가 실행되고 있을 때 인터럽트가 발생하면 A의 현재 상태(CPU에서 현재 실행중인 명령의 메모리 주소를 포함해 몇가지 부가적인 정보)를 먼저 저장한다.

운영체제는 프로세스 제어블록(Process Control Block:PCB)이라는 자료구조를 두어 현재 시스템 내에서 실행되는 프로그램들을 관리한다.

 

5.입출력 구조

*동기식 입출력(synchronous I/O)

어떤 프로그램이 입출력 요청을 했을 때 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 방식.

일반적으로는 운영체제에게 입출력 요청을 할 경우 동기식 입출력 사용. 이때 운영체제는 장치별로 입출력 처리를 기다리는 프로세스를 줄 세워 관리함으로써 동기성을 보장함

 

*비동기식 입출력

입출력 연산을 요청한 후에 연산이 끝나기를 기다리지 않고, CPU의 제어권을 입출력 연산을 호출한 그 프로그램에게 곧바로 다시 부여하는 방식

 

6.DMA

잦은 인터럽트에 의해 CPU가 업무에 방해를 받게 되어 효율성 떨어지는 문제 극복 위해 CPU 이외에 메모리 접근이 가능한 장치를 하나 더 두는데, 이를 DMA(Direct Memory Access)라고 한다.

byte단위 아닌 block이라는 큰 단위로 정보를 메모리로 읽어온 후 CPU에게 인터럽트를 발생시킴

 

출처:반효경,운영체제와 정보기술의 원리,2020