본문 바로가기

OS

💻 KOCW-OS-2: System Structure & Program Execution 1

🗣 서론

KOCW 반효경 교수님의 운영체제 수업을 들으면서 작성한 글입니다.

컴퓨터 시스템 구조, Mode bit, Timer, Device Controller, 입출력(I/O)의 수행, 시스템 콜(System Call), 인터럽트(Interrupt)


📌 컴퓨터 시스템 구조


Main Memory

CPU의 작업 공간을 말한다.

device controller

각각의 IO 디바이스를 전담하는 작은 CPU 역할을 한다.
device controller에는 디바이스의 정보를 담기 위한 local buffer라는 것이 존재한다.

[local buffer]
메인 CPU의 작업 공간인 메인 메모리가 있듯이 디바이스 컨트롤러도 작업 공간이 필요한데 local buffer가 그 역할을 한다.

[질문] CPU 대신에 device controller가 전담하는 이유는 무엇인가?
CPU와 디바이스의 속도 차이가 매우 많이 나기 때문에 CPU가 전담하지 않고 device controller가 전담하게 된다.

[질문] device driver & device controller는 무슨 차이인가?
device driver는 소프트웨어를 뜻하며, CPU가 실행하는 각 디바이스에 접근하기 위한 소프트웨어를 말한다.
device controller는 하드웨어를 뜻하며, 각 장치를 통제하는 일종의 작은 CPU를 말한다.

CPU

CPU는 클럭마다 메모리에서 인스트럭션을 하나씩 읽어서 실행하는 역할을 한다. (CPU의 운명..?)
IO가 일어나면 CPU가 직접 접근하는 것이 아니라 disk controller에서 시킨다.
(CPU는 인스트럭션 실행뿐 아니라, 인터럽트 라인도 확인한다)
CPU 내부에는 인터럽트 라인(interreupt line), 레지스터(register), mode bit이 존재한다.

[접근 범위]
CPU는 메인 메모리와 local buffer에 접근 가능

[인터럽트 라인(interrupt line)]
예를 들어 디스크에서 뭔가 읽던가, 키보드에서 입력을 받는 등 작업이 완료되면 인터럽트 라인으로 알린다.

[레지스터(register)]
CPU 내부에 메모리보다 더 빠르면서 정보를 저장할 수 있는 작은 공간이다.
레지스터 중에 메모리 주소를 가리키는 레지스터인 PC(Program Counter) 레지스터가 있다.
CPU는 PC 레지스터가 가리키는 메모리 위치에서 인스트럭션을 읽어서 수행한다.

[Mode bit]
CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분해준다.

1 (사용자 모드) - 사용자 프로그램
사용자 프로그램이 CPU를 가질 때, 제한된 인스트럭션만 실행시킬 수 있다.
사용자 모드는 나쁜 짓(?)을 할 수 있기 때문에 보호가 필요하다.

0 (커널 모드) - 운영체제
운영체제가 CPU에서 실행 중일 때, 모든 인스트럭션을 실행할 수 있다.
(모니터 모드 or 시스템 모드라고도 불림)

Timer

사용자 프로그램에서 while문으로 무한 루프를 돌게 된다면 특정 프로그램이 CPU를 독점할 수 있다.
Timer는 특정 프로그램이 CPU를 독점하는 것을 막기 위한 하드웨어이다.

[동작]
컴퓨터를 시작하면 처음에 운영체제가 CPU를 가지고 있다가 사용자 프로그램에게 CPU를 넘겨준다.
하지만 그냥 넘겨주지 않고 Timer에 값을 세팅하고 넘겨주게 된다.
(운영체제에서 프로그램뿐만 아니라, 프로그램에서 다른 프로그램도 마찬가지)
(클럭 틱 때마다 1씩 감소하고, 0이 되면 타이머 인터럽트가 발생한다)


📌 CPU가 인터럽트를 너무 많이 당하고 있는 게 아닐까?

인터럽트가 많이 당하면, 빠른 장치인 CPU가 효율적이지 않다.
일을 시작하려고 하면 인터럽트가 발생하고 이런 과정이 반복된다면 제대로 일을 하지 못하는 상황이 발생하게 된다.
그래서 해결방안으로 DMA controller를 두고 있다.

DMA(Direct Memory Access) controller

이름이 암시하듯이 직접 메모리에 접근할 수 있는 컨트롤러이다.
기존에는 CPU만 메인 메모리에 접근 가능했지만, DMA controller도 접근이 가능하게 된다.

[질문] CPU와 DMA controller가 메인 메모리에 접근 가능했을 때, 문제점이 있나?
특정 메모리 영역에 동시에 접근할 때 문제점이 발생할 수 있다.

그래서 해결방안으로 memory controller가 이를 중재한다. 즉, 교통정리 역할을 한다.

[질문] 그래서 DMA controller는 왜 있는 걸까?
I/O 장치가 자주 인터럽트를 하니 CPU가 너무 방해받고 있다.
작업이 들어왔을 때, CPU에게 인터럽트를 거는데 CPU가 local buffer에 있는 데이터를 메모리에 카피하는 일이 오버헤드가 크다.
그래서 DMA controller가 local buffer에 있는 데이터를 메모리에 카피를 해준다.
작업이 끝났으면 CPU에게 인터럽트를 한 번만 걸어서
"내가 메모리에 카피까지 했어"라는 보고를 하면, CPU는 자신이 맡은 일에 더 집중할 수 있다.


📌 사용자 프로그램은 어떻게 I/O를 할까?

시스템 콜(system call)

사용자 프로그램이 운영체제에게 I/O를 요청하는 것을 말한다.
(운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것)

[질문] 사용자 프로그램이 운영체제에게 바로 요청하는 게 가능한가?
결론은 불가능하다. 프로그램이 실행되고 있다가 I/O를 해야 하는 상황이 오면 바로 OS로 주소 점프를 할 수 없다.

mode bit이 1로 설정되어 있기 때문에 접근이 불가능하다.
그래서 프로그램이 직접 인터럽트 라인을 세팅을 해야 한다.
위에서 설명했지만 CPU는 인스트럭션을 수행하는 것만 아니라 인터럽트 라인도 계속 확인을 하기 때문에
CPU는 다음 인스트럭션을 수행하는 게 아니라 mode bit을 0으로 바꾸고  CPU 제어권을 OS로 넘기게 된다.
그렇게 사용자 프로그램이 OS에게 I/O를 요청하여 수행할 수 있다.

인터럽트의 의미

넓은 의미로는 인터럽트이지만, 인터럽트도 하드웨어가 발생시켰냐, 소프트웨어가 발생시켰냐에 따라 나뉠 수 있다.
(일반적으로 인터럽트는 하드웨어 인터럽트를 뜻한다)

[Interrupt]
하드웨어가 발생시킨 인터럽트를 뜻한다.

[Trap]
소프트웨어가 발생시킨 인터럽트를 뜻한다.

인터럽트 관련 용어

[인터럽트 처리 루틴(interrupt service routine, 인터럽트 핸들러)]
인터럽트마다 실제 처리해야 하는 코드를 인터럽트 처리 루틴이라고 한다.

[인터럽트 벡터]
1번 인터럽트가 들어오면 어떤 함수인지, 2번 인터럽트가 들어오면 어떤 함수를 실행해야 하는지
이에 해당하는 주소가 인터럽트 벡터라고 한다.


 

반효경 [운영체제] 3. System Structure & Program Execution 1

설명이 없습니다.

core.ewha.ac.kr

 

운영체제

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

www.kocw.net

 

'OS' 카테고리의 다른 글

💻 KOCW-OS-4: Process  (0) 2020.10.26
💻 KOCW-OS-3: System Structure & Program Execution 2  (0) 2020.10.05
💻 KOCW-OS-1: Introduction to Operating Systems  (0) 2020.10.03