프로세스의 개념

프로세스란 : 실행중인 프로그램

프로세스 문맥

프로세스가 현제 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보

크게 세 가지로 분류 : 하드웨어 문맥, 프로세스 주소공간, 커널상의 문맥

- 하드웨어 문맥 : CPU의 수행 상태를 나타내는 것으로, 프로그램 카운터값과 각종 레지스터에 저장하고 있는 값들을 의미

- 프로세스의 주소공간 : 프로세스는 코드,데이터, 스택으로 구성되는 자기 자신만의 독자적인 주소 공간을 가진다. 

- 커널상의 문맥 : 운영체제는 프로세스를 관리하기 위한 자료구조인 PCB와 커널스택을 유지한다. 


프로세스의 상태

- 실행 상태 : 프로세스가 CPU를 보유하고, 기계어 명령을 실행하고 있는 상태

- 준비 상태 : 프로세스가 CPU만 보유하면 당장 명령을 실행 할 수 있지만, CPU를 할당 받지 못한 상태

- 봉쇄 상태 : CPU를 할당 받더라도 당장 명령을 실행 할 수 없는 프로세스의 상태 ( 예시, 프로세스가 요청한 입출력 작업     이 진행중인 경우) 

- 시작 상태 : 프로세스가 시작되어 그 프로세스를 위한 각종 자료구조는 생성되었지만, 아직 메모리 획득을 승인받지 못한 상태

- 완료 상태 : 프로세스가 종료되었으나 운영체제가 그 프로세스와 관련된 자료구조를 완전히 정리하지 못한 상태

 

문맥 교환

-실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정.

- 문맥교환이 일어나는 경우

  1.  타이머 인터럽트가 발생하는 경우

  2. 실행상태에 있던 프로세스가 입출력 요청등으로 봉쇄 상태로 바뀌는 경우

 

CPU 디스패치

준비상태에 있는 프로세스들 중에서 CPU를 할당받을 프로세스를 선택한 후 실제로 CPU의 제어권을 넘겨받는 과정.

 


프로세스 제어블록 PCB

운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조

 

PCB에는 

1. 운영체제가 관리상 사용하는 정보 ( 프로세스 상태, 프로세스 번호, 스케줄링 정보, 우선순위)

2. CPU수행 관련 하드웨어 값 ( 프로그램 카운터, 레지스터)

3. 메모리 관련 (코드, 데이터, 스택의 위치 정보)

4. 파일 관련 ( 프로세스가 오픈한 파일 정보)

로 구성되어있다.

 


문맥교환

- 문맥교환이란 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정을 의미한다.

- 문맥 교환이 일어나는 경우

  1. 타이머 인터럽트 발생

  2. 프로세스가 입출력 요청 시스템 콜을 하여 봉쇄 상태에 들어가는 경우 

 


프로세스를 스케줄링 하기 위한 큐

프로세스의 상태 관리는 커널의 주소 영역 중 데이터 영역에 다양한 큐를 두어 수행한다.

 

준비큐

- 준비 상태에 있는 프로세스들을 줄 세우기 위한 큐 ( CPU를 기다리는 프로세스를 줄 세우는 큐)

- 준비큐의 제일 앞에 줄 서있는 프로세스먼저 CPU할당

- 프로세스들 : 준비상태

 

장치큐

- 특정 자원을 기다리는 프로세스들을 줄 세우기 위한 자원별 큐

- 프로세스들 :  봉쇄상태

 

작업큐

- 시스탬 내의 모든 프로세스를 관리하기 위한 큐

- 프로세스 상태와 무관하게 현재 시스템 내에 있는 모든 프로세스가 작업 큐에 속한다.

- 준비 큐와 장치 큐에 있는 프로세스들은 모두 작업 큐에 속해있다.

 


스케줄러

어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 코드를 지칭한다.

 

장기 스케줄러

- 작업스케줄러

- 어떤 프로세스를 준비 큐에 진입시킬지 결정하는 역할을 한다.

  (준비큐 :CPU를 얻으면 당장 실행 될 수 있는 프로세스의 집합)

- 가끔 호출되기 때문에 상대적으로 속도가 느린 것이 허용된다. 

- 메모리에 동시에 올라가있는 프로세스의 수를 조절하는 역할을 한다.

단기 스케줄러

- CPU 스케줄러

- 준비상태의 프로세스중에서 어떤 프로세스를 다음번에 실행 상태로 만들 것인지 결정한다.

- 준비 큐에 있는 여러 프로세스들 중 어떠한 프로세스에게 CPU를 할당할것인지 결정

- 시분할 시스템에서는 타이머 인터럽트가 발생하면 단기 스케줄러가 호출된다.

- 매우 빈번하게 호출되기 때문에 수행 속도가 충분히 빨라야 한다.

 

중기 스케줄러

- 너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하되는 경우, 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절하기 위해 추가된 스케줄러.

- 프로세스당 보유하고 있는 메모리 양이 지나치게 적어진 경우 이를 완화시키기 위해 메모리에서  일부 프로세스를 디스크의 스왑영역에 저장한다. (스왑아웃)

 

 

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

4. 컴퓨터 시스템의 동작 원리  (0) 2022.09.12
3. 프로그램의 구조와 실행  (0) 2022.09.12
2. 운영체제 개요  (0) 2022.09.09

컴퓨터 시스템의 구조

- 컴퓨터 시스템의 구조 = 컴퓨터 내부장치(CPU, 메모리) + 컴퓨터 외부장치(디스크, 키보드, 마우스, 모니터, 네트워크 장치)

- 입력 : 컴퓨터 내부로 데이터가 들어오는 것

- 출력 :  컴퓨터 외부로 데이터가 나가는 것

 

컨트롤러

일종의 작은 CPU로서, 각 하드웨어 장치마다 존재하면서 이들을 제어한다.

커널

운영체제 중 항상 메모리에 올라가있는 핵심적인 부분.

 


CPU 연산과 I/O 연산

- 컴퓨터에서 연산을 한다 = CPU가 무언가 일을 한다.

- 입출력 장치의 I/O연산 : 입출력 컨트롤러가 담당

- 컴퓨터 내에서 수행되는 연산 : 메인 CPU가 담당

- 입출력 장치와 메인CPU는 동시 수행 가능

 

로컬버퍼

- 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위해 장치 컨트롤러가 가지고있는 작은 메모리

- 외부 장치에서 데이터를 읽어오는 경우, 로컬버퍼에 데이터가 임시로 저장된 후 메모리에 저장된다. 이때, 장치에서 로컬버퍼로 읽어오는 일은 컨트롤러가 담당한다. 

 

인터럽트

- 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법.

- CPU옆에는 인터럽트 라인이 있는데, CPU가 작업을 처리하는 중간에 인터럽트 라인에 신호가 들어오면 하던 일을 멈추고 인터럽트와 관련된 일을 먼저 처리한다. 

- 인터럽트는 컨트롤러가 발생시킨다. 

 


인터럽트의 일반적 기능

인터럽트 처리루틴 : 운영체제 커널 내에 있으며, 다양한 인터럽트에 대해 각각 처리해야 할 업무들을 정의한것.

 

하드웨어 인터럽트와 소프트웨어 인터럽트 차이

하드웨어 인터럽트는 하드웨어 장치가  CPU의 인터럽트 라인을 세팅하고, 스프트웨어 인터럽트는 소프트웨어가 CPU의 인터럽트 라인을 세팅한다. 

 

인터럽트 벡터

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

실제 처리해야 할 코드는 인터럽트 처리루틴 또는 인터럽트 핸들러라고 불리는 다른곳에 정의된다. 

 

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

- 통상적으로 인터럽트라고하면 하드웨어 인터럽트를 의미하고, 소프트웨어 인터럽트는 트랩(trap) 이라고 한다.

- 소프트웨어 인터럽트의 예 : 예외상황, 시스템콜

 

예외상황

-비정상적인 작업을 시도하거나, 권한이 없는 작업을 시도할 때 이에 대한 처리를 발생시키는 인터럽트

시스템콜

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

 


인터럽트 핸들링

인터럽트 핸들링이란, 인터럽트가 발생한 경우에 처리해야 할 일의 절차를 의미한다.

 

PCB 프로세스 제어블록

- 운영체제가 현재 시스템 내에서 실행되는 프로그램들을 관리하기 위한 자료구조 

- PCB는 각각의 프로그램마다 하나씩 존재하며 해당 프로그램의 어느 부분이 실행 중이었는지를 저장하고 있다. 

  (프로그램이 실행중이던 코드의 메모리 주소, 레지스터값, 하드웨어 상태등)

 


 

 

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

5. 프로세스 관리  (0) 2022.09.14
3. 프로그램의 구조와 실행  (0) 2022.09.12
2. 운영체제 개요  (0) 2022.09.09

프로그램의 구조와 인터럽트

프로그램의 주소영역

- 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소영역이 메모리에 올라가 있어야 한다.

- 프로그램 주소 영역은 코드 영역, 데이터 영역, 스택 영역으로 구분된다.

- 코드 영역 : 우리가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 부분

- 데이터 영역 :  프로그램이 사용하는 데이터를 저장하는 부분

- 스택 영역 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소및 데이터를 임시로 저장하는데 사용되는 공간

 

함수의 호출 원리와 인터럽트의 동작  원리도 비슷하다.

차이점 : 함수호출에 필요한 복귀주소는 스택 영역에 보관. 반면 인터럽트 때문에 CPU를 빼앗긴 위치는 PCB(운영체제가 관리하는 프로세스 제어블록)에 저장된다. 

 


 컴퓨터 시스템의 작동 개요

프로그램 카운터

- CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터

- CPU는 매번 프로그램 카운터가 가리키는 메모리 위치의 명령을 처리하게 된다.

- CPU가 커널모드에서 수행중 : 프로그램 카운터가 메모리 주소중 운영체제가 존재하는 부분을 가리키고 있어서 현재 운영체제의 코드를 수행중이라는 의미

- CPU가 사용자 모드에서 수행중 : 프로그램 카운터가 사용자 프로그램이 존재하는 메모리 위치를 가리키고 있어서 사용자 프로그램이 수행중이란느 의미

 

CPU가 수행하는 명령 : 일반명령, 특권명령

- 일반명령 : 모든 프로그램이 수행할 수 있는 명령

- 특권명령 : 보안이 필요한 명령. 입출력 장치, 타이머등 각종 장치에 접근하는 명령이다. 특권명령은 항상 운영체제만 수행할 수 있도록 제한되어있다. 

- 컴퓨터 시스템은 이 두 명령의 실행 가능성을 체크하기 위해 CPU내에 모드비트를 둔다. 

 

시스템 콜

사용자 프로그램이 특권명령의 수행이 필요할 때, 운영체제에게 특권명령의 대행을 요청하는 것.

사용자 프로그램이 특권명령의 수행이 필요한 경우 : 디스크의 파일에 접근, 수행결과를 화면에 출력하는 작업 등

 


프로그램의 실행

프로그램이 실행되고있다의 의미

1. 디스크에 존재하던 실행파일이 메모리에 적재된단는 의미

2. 프로그램이 CPU를 할당받고 명령을 수행하고 있는 상태라는 의미

 

프로세스란?

현재 실행중인 프로그램

가상메모리 

프로그램마다 독자적으로 존재하는 주소공간. 논리적 메모리 라고도 한다.

 
운영체제 커널의 주소공간

- 커널의 코드 영역 : 시스템 콜 및 인터럽트 처리 코드, 자원관리를 위한 코드, 편리한 서비스 제공을 위한 코드

- 커널의 데이터 영역 : 각종 자원을 관리하기 위한 자료구조인 PCB가 저장되어있다. 

- 커널의 스택 영역 : 함수호출시의 복귀 주소를 저장하기 위한 용도로 사용된다. 커널의 스택은 현재 수행중인 프로세스마다 별도의 스택을 두어 관리한다. 

 

* 프로세스가 함수를 호출할 때, 자기 주소 영역 내부에 정의된 함수를 호출하면 > 자신의 스택에 복귀 주소를 저장

* CPU의 수행 주체가 운영체제로 바뀌는 순간 (프로세스가 특권명령을 수행하려고 커널에 정의된 시스템 콜이나 인터럽트등의 운영체제의 코드가 실행되면) >직전에 수행되던 프로그램의 복귀정보는 PCB에 저장

* 커널의 코드가 수행되는 도중 이루어지는 함수호출 > 복귀주소를 커널스택에 저장

 


사용자 프로그램이 사용하는 함수

사용자 정의함수

프로그래머 본인이 직접 작성한 함수

라이브러리 함수

이미 누군가 작성해놓은 함수를 호출만 하여 사용하는 경우 

커널 함수

운영체제 커널의 코드에 정의된 함수. 시스템 콜 함수와 인터럽트 처리 함수가 있다.

- 시스템 콜 함수 :  사용자 프로그램이 운영체제의 서비스를 요청하기 위해 호출하는 함수

- 인터럽트 처리 함수 : 각종 하드웨어 및 소프트웨어가 CPU의 서비스를 요청하기 위해 발생시키는 함수

 


인터럽트

인터럽트란 하드웨어 장치의 컨트롤러가 CPU의 서비스가 필요할 때 이를 통보하는 방법

컴퓨터 시스템의 동작 원리 

CPU는 매번 프로그램 카운터가 가리키고 있는 지점의 명령을 하나씩 수행하고 나서, 인터럽트 라인을 체크한다.

> 인터럽트가 발생했으면 CPU는 현재 수행하던 프로세스를 멈추고 운영체제의 인터럽트 처리루틴으로 이동해서 인터럽트 처리를 수행한다.

> 처리를 마치면, 인터럽트가 발생하기 직전의 프로세스에게 CPU의 제어권이 넘어간다. 

 

인터럽트 처리중에 또 다른 인터럽트가 발생한다면

현재 처리중인 인터럽트보다 더 높은 우선순위의 인터럽트가 발생한다면, 현재 처리중이던 인터럽트 코드의 수행지점을 저장하고 우선순위가 높은 인터럽트를 처리하게 된다. 처리가 끝나면 저장된 주소로 복귀해 이전에 수행하던 인터럽트 처리 코드를 마저 수행하게 된다. 

 


시스템 콜

사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것

 

사용자 프로그램이 특권명령의 수행이 필요할 때, 운영체제에게 특권명령의 대행을 요청하는 것.

사용자 프로그램이 특권명령의 수행이 필요한 경우 : 디스크의 파일에 접근, 수행결과를 화면에 출력하는 작업 등

 

프로그램이 CPU를 할당받고 명령을 수행하다가 중간에 CPU를 빼앗기는 경우

1. 타이머에 의해 인터럽트가 발생하는 경우

2. 입출력 요청을 위해 시스템 콜을 하는 경우

 

타이머 : 특정 프로그램에 의해 CPU가 독접 되는것을 방지하기 위한 하드웨어로, CPU 할당 시간이 만료되면 인터럽트를 발생시킨다. 

 


프로세스의 두 가지 실행 상태

프로그램이 시작되어 종료될 때까지 다양한 함수호출을 하며 실행되는데, 이를 사용자모드와 커널모드의 실행상태로 구분지을 수 있다.

 

프로그램이 사용자 정의함수나 라이브러리함수를 호출 할 때에는 > 사용자모드에서 실행

시스템콜을 하는 경우 > 커널모드 실행

시스템 콜의 실행이 끝나면 다시 사용자모드로 복귀

프로그램의 실행이 끝날 때에는 > 커널 모드로 진입해 프로그램 종료 

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

5. 프로세스 관리  (0) 2022.09.14
4. 컴퓨터 시스템의 동작 원리  (0) 2022.09.12
2. 운영체제 개요  (0) 2022.09.09

운영체제 정의

운영체제란

- 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어

- 사용자 및 다른 모든 소프트웨어와  하드웨어를 연결하는 소프트웨어 계층

 

커널(kernel)

- 메모리에 상주하는 운영체제의 핵심 부분

 

소프트웨어가 컴퓨터 시스템에서 실행되려면 메모리에 그 프로그램이 올라가야 한다.

운영체제는 컴퓨터 전원이 켜지는 것과 동시에 실행이 된다. 

운영체제는 규모가 큰 프로그램이므로 메모리 공간의 낭비를 막기 위해 필요한 부분(커널)만 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용한다.  

 


운영체제의 기능

1. 컴퓨터 시스템 내의 자원을 효율적을 관리한다.

  자원 : 소프트웨어자원 + 하드웨어 자원

 

2. 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경(인터페이스) 제공

 예를들어, 사용자는 파일이 디스크에 어떻게 저장되는지 알지 못하지만, 운영체제가 제공하는 편리한 인터페이스를 통해   파일을 손쉽게 저장하고 꺼내볼 수 있다. 

 

3. 보안 및 보호 기능


운영체제 분류

동시작업 지원 여부

1. 단일작업용 운영체제

- 한번에 하나의 프로그램만 실행 

 

2. 다중작업용 운영체제

- 동시에 2개 이상의 프로그램을 처리

- 시분할 시스템 : CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템

- 다중 프로그래밍 시스템 : 메모리 공간을 분할 해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템

- 대화형 시스템 : 사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템

 

* 다중처리기 시스템 : 하나의 컴퓨터 안에 CPU가 여러개 설치된 경우. 서로다른 CPU로 여러 프로그램이 동시에 실행되 처리 속도가 더 빨라지지만, 운영체제가 더 복잡한 메커니즘을 필요로 한다.  

 

다중 사용자에 대한 동시 지원 여부

1.단일 사용자용 운영체제

 - 한번에 한명의 사용자만이 사용하도록 허용

 

2. 다중 사용자용 운영체제

 - 여러 사용자가 동시에 접속해 사용할 수 있음.

 - 예를들어 이메일서버, 웹서버등 서버라 부르는 컴퓨터

 

작업을 처리하는 방식 

1. 일괄처리 방식 

 - 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식.

 - 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다.

 - 단점 : 응답 시간이 길다

 

2. 시분할 방식

 - 여러 작업을 수행할 때 컴퓨터의 처리능력을 일정한 시간 단위로 분할해 사용하는 방식 

 - 대화형 시스템 :  사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템으로 시분할 방식의 대표적 특성이다. 

 

3. 실시간 운영체제

 - 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용.

 - 경성 실시간 시스템 

         : 주어진 시간을 지키지 못할경우 매우 위험한 결과를 초래할 가능성이 있는 로켓, 원자로 제어 시스템등을 말한다. 

 - 연성 실시간 시스템 

         : 멀티미디어 스트리밍 같이 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템.

 


운영체제의 자원 관리 기능 

자원 : 하드웨어 자원과 소프트웨어 자원을 의미한다.

하드웨어 자원

 - CPU : 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리

 -  메모리 : 서로 다른 다수의 프로세스들이 한정된 용량의 메모리를 나누어 쓸 수있도록 관리

 - 입출력 장치 : 보조기억장치 관리


CPU 스케줄링

- 매 시점 어떠한 프로세스에 CPU를 할댕해 작업을 처리할 것인지 결정한다. 

- CPU 스케줄링 기법으로는 선입선출, 라운드 로빈, 우선순위 기법이 있다.

 

선입선출 기법

- CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온것을 먼저 처리해주는 방식

- CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못한다.

- 전체 시스템 입장에서는 비효율적인 결과를 초래할 가능성이 있다. 

라운드 로빈 기법

- 선입선출 기법의 단점을 보완.

- CPU를 한번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한으로 제한한다.

- 긴 작업을 요하는 프로세스는 정해진 시간이 지나면 CPU 대기열의 제일 뒤에가서 줄을 서야한다.

우선순위 기법 

- CPU 사용을 위해 대기 중인 프로세스들에 우선순위를 부여하고, 우선순위가 높은 프로세스에 CPU를 먼저 할당한다. 


메모리

- 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다.

- 운영체제는 프로그램에 메모리가 필요할 때 할당하고, 더 이상 필요하지 않을 때 회수하여 전체 메모리 공간이 효율적으로 사용될 수 있도록 관리한다. 또한 각 프로세스가 자신의 메모리 영역에만 접근 할 수 있도록 관리한다. 

- 물리적 메모리를 관리하는 방식 : 고정분할 방식, 가변분할 방식, 가상메모리 방식

 

고정분할 방식

- 물리적 메모리를 몇 개의 분할로 미리 나누어 관리하는 방식. 나뉜 각각의 분할에는 하나의 프로그램이 적재 될 수 있다.

- 단점 :

      메모리에 동시 적재되는 최대 프로그램의 수가 분할 개수로 한정됨.

      분할의 크기보다 큰 프로그램은 적재가 불가능하다. 

       분할이 고정적이므로 분할의 크기보다 작은 프로그램이 적재되는 경우 해당 분할 내에 남는 영역이 발생 > 내부조각

- 내부조각

: 해당 분할에 올라온 프로그램에 의해서도 사용되지 않고, 다른 프로그램에도 할당될 수 없는 비효율적으로 낭비되는 공간

 

가변 분할 방식

- 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식

- 분할의 크기 때문에 큰 프로그램의 실행이 제한되는 문제는 발생하지 않지만, 물리적 메모리의 크기보다 큰 프로그램의 실행은 여전히 불가능하다.  

- 외부조각 : 현재 비어있는 공간이지만, 그 크기가 작아 아직까지 프로그램에 할당되지 못한 공간을 의미한다. 

 

가상메모리 방식

- 현대의 범용 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 기법

- 물리적 메모리보다 더 큰 프로그램이 실행되는것을 지원한다.

- 모든 프로그램은 자신만의 가상 메모리 주소를 갖는다. 운영체제는 가상메모리 주소를 물리적 메모리 주소로 맵핑하는 기술을 이용해서 프로그램을 물리적 메모리에 올린다.

- 프로그램 크기가 커도 전체가 항상 동시에 사용되는것이 아니다. 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 보조기억장치(스왑 영역)에 저장해두었다가 필요할 때 적재하는 방식을 취한다. 

- 가상메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다. 

- 페이징기법 : 동일한 단위로 메모리를 나누는 기법


주변장치 및 입출력장치 

-인터럽트라는 메커니즘을 통해 관리가 이루어진다. 

 

인터럽트( interrupt)

- CPU의 서비스가 필요할 때 발생시키는 신호. 

- CPU는 CPU 스케줄링에 따라 주어진 작업을 수행하다가 인터럽트가 발생하면 하던일을 멈추고 인터럽트에 의한 요청 서비스를 수행한다. 처리 후에는 원래 하던일 계속 수행 (운영체제가 인터럽트 처리 직전 수행중이더 작업의 상태 저장)

- 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있다. 운영체제는 인터럽트의 종류마다 서로 다른 인터럽트의 처리 루틴을 가지고 있다. 

- 인터럽트 처리루틴 : 운영체제의 커널 내에 존재하는 코드로, 인터럽트 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드

 

주변장치

- 컨트롤러 : 각 장치마다 일어나는 업무를 관리하기 위한 일종의 작은 CPU. 컨트롤러는 해당 장치에 대한 업무를 처리하고, 인터럽트를 발생시켜 메인 CPU에 보고하는 역할을 한다. 

 

- 주변장치가 인터럽트를 통해서 CPU의 서비스를 받는 예시 : 

키보드에 입력이 들어옴 > 키보드 컨트롤러가 인터럽트를 발생시킴. > CPU는 현재 수행중이던 작업의 상태를 저장하고 > 운영체제 내에 정의된 키보드 인터럽트 처리루틴을 실행 > 인터럽트 처리 완료 > 인터럽트가 발생하기 직전의 상태를 복구시켜 중단되었던 작업을 재개

 

출처

운영체제와 정보기술의 원리 - 이화여자대학교출판문화원 출판, 반효경 저

 

 

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

5. 프로세스 관리  (0) 2022.09.14
4. 컴퓨터 시스템의 동작 원리  (0) 2022.09.12
3. 프로그램의 구조와 실행  (0) 2022.09.12

+ Recent posts