티스토리 뷰

운영체제

컴퓨터 시스템 구조

복슬회고 2021. 7. 19. 21:41

※ 이 블로그 운영체제 카테고리의 모든 글은

1. 이화여자대학교 반효경 교수님의 KOCW 운영체제 강의

 

운영체제

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

www.kocw.net

2. Operating System Concepts (저자 SILBERSCHATZ, 일명 공룡책)

두 자료를 공부 후 참고해서 작성했음을 밝힙니다 

 

 

컴퓨터 시스템 구조도

컴퓨터 시스템의 구조도

위 구성 요소들에 대해 하나씩 정리한다

 

CPU

중앙 처리 장치(Central Processing Unit)는 명렁을 실행하는 하드웨어다.

CPU는 매 클럭마다 Memory에서 기계어 Instruction을 읽어와 실행한다.

인터럽트(Interrupt)가 들어오면 하던 일을 중단하고 고정된 위치로 실행을 옮겨 인터럽트 서비스 루틴을 실행한다. 실행이 완료되면 중단되었던 연산을 재개한다.

 

 

Mode bit 

현재 실행중인 프로그램이 사용자 프로그램인지 운영체제인지 알려준다.

이 mode bit가 0일 시 모니터 모드(=커널 모드, 시스템 모드)로 운영체제 코드를 실행한다.

이는 사용자 프로그램의 실행으로부터 다른 프로그램과 운영체제를 보호하기 위함이다. 

그래서 중요한 명령어는 모니터 모드에서만 실행 가능한 "특권명령"으로 규정되어 있다. 

1이면 사용자 프로그램을 수행하는 것이며,  CPU가 넘어갈 때 전환된다. 

 

 

Memory 

CPU는 메모리에서만 명령을 적재할 수 있으므로 실행에 앞서 메모리에 프로그램이 적재된다. 

메인 메모리(RAM, Random Access Memory)에 있는 바이트 배열은 운영체제에 의해 CPU의 레지스터로 적재되거나,

반대로 레지스터에 있는 바이트 배열이 메모리에 저장된다. 

 

 

Memory Controller 

위의 일을 해주는 것이 메모리 컨트롤러이다.

메모리에는 메모리 주소와 값만 담겨 있고, 적재와 저장은 메모리가 하는 것이 아니다. 

 

 

I/O Device 

입출력 장치이다. 

모니터, 헤드셋, 키보드, 디스크 등이 해당된다. 

 

 

Device Controller 

I/O 장치를 내부 통제하는 일종의 작은 CPU이다.

즉, I/O 장치를 통제하는 것은 메인 CPU의 역할이 아니다. 

 

 

Local Buffer 

각각의 장치에 붙어있는 내부 저장 공간(=data register)이다. 

디스크에서 파일을 읽는 것 처럼 값을 읽어 오면 여기에 임시 저장된 후,  메모리로 전달된다. 

 

Timer

특정 프로그램의 CPU 독점을 막는 역할을 한다.

클럭 틱 당 1씩 값이 감소하며, 운영체제는 사용자 프로그램에게 CPU를 주기 전에 값을 세팅한다.

시간이 끝나면 운영체제에 CPU가 반납된다. 

 

 

DMA Controller

이름처럼 Direct Memory Access, 즉 메모리에 직접 접근할 수 있는 컨트롤러이다.I/O 장치에서 값을 읽을 때 마다 CPU에 바로 인터럽트를 건다면 너무 잦은 인터럽트가 발생할 것이다.그래서 CPU가 다른 프로그램을 실행하는 동안, 요청되었던 데이터를 Memory에 적재해놓는 일을 한다.

 

 

인터럽트란

위에서 설명했듯, CPU는 인터럽트로 제어된다. 

보통 인터럽트는 하드웨어 인터럽트를 말하며, 소프트웨어 인터럽트는 트랩(Trap)이라고 불린다. 

각각의 인터럽트에는 인터럽트 벡터라는 해당 인터럽트의 루틴 주소가 있다. 

예를 들어 마우스 인터럽트는 2번을 해라는 식이다.

각 인터럽트 처리 루틴(Interrupt Service Routine, 인터럽트 핸들러)는 인터럽트를 처리하는 커널 함수이다. 

2번은 차례로 무엇을 실행하라는 식이다. 

 

 

 

프로그램이 실행될 때 일어나는 일 

종합해서 프로그램이 실행될 때 아래와 같은 일이 일어나게 된다.

그림에서 표현된 <사용자 모드>는 CPU가 작업 중인 Instruction의 메모리 주소가 사용자 프로그램에 위치할 때, 

<커널 모드>는 운영체제에 위치할 때를 뜻한다. 

내 운영체제는 윈도우, 엑셀에서 불러오기로 디스크에서 파일을 읽어오려 한다고 가정하자. 

내 사용자 프로그램은 I/O 장치에 직접 접근할 수 없다.

따라서 시스템 콜을 호출해 CPU 제어권을 OS에 넘겨주게 된다.

이 때 발생하는 소프트웨어 인터럽트를 Trap이라 한다.

모드 비트가 모니터 모드(=커널 모드)를 뜻하는 0으로 전환되고, 

OS는 I/O 장치인 디스크에서 입력을 받아오기 위해 device controller에 요청을 한다.

 I/O가 처리되는 동안 CPU는 다른 사용자 프로그램의 Instruction을 실행한다. 

이때, 모드 비츠는 다시 사용자 모드를 뜻하는 1로 돌아간다. 

읽어진 파일 데이터는 Local Buffer를 거쳐 DMA Controller를 통해 Memory에 적재된다.

작업이 끝나면 DMA Controller가 하드웨어 인터럽트(=Interrupt)를 건다.

모드 비트는 다시 0으로 전환되고, CPU 제어권은 OS로 넘어간다.

OS는 파일을 요청했던 사용자 프로그램에게 다시 제어권을 넘겨주고, 모드 비트는 1이 된다.

이와 같이 CPU는 끊임없이 사용자 모드와 모니터 모드가 전환되며 여러 프로그램을 동시에 실행한다.

 

 

'운영체제' 카테고리의 다른 글

운영체제의 정의와 목적  (0) 2021.07.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글