-
운영체제(OS) - 1. 운영체제 자원관리 개요(CPU & 메모리 관리)Computer Basis/OS 2020. 9. 23. 19:44
# 운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것
# 메인 메모리는 CPU안에 포함된 레지스터를 제외한 CPU가 직접 접근할 수 있는 기억장치이다.
# 프로그램이 실행되려면 해당부분이 메모리에 올라가 있어야 함
# CPU와 메모리는 전원이 꺼지면 처리 중이던 정보가 모두 지워진다.
# 전원이 꺼져도 기억해야 하는 부분은 입출력 장치인 보조기억장치에 파일형태로 저장한다.
# 위의 일들과 입출력 장치들의 접근권한 및 저장방식을 운영체제가 관리한다.
# 하드웨어 자원의 종류
1. CPU
더보기컴퓨터 하드웨어 구성 및 CPU 구성 2. 메인 메모리
3. 입출력장치(=주변장치)
# CPU 관리 (CPU 스케줄링)
통상적으로 CPU가 컴퓨터 한대에 하나가 장착되므로, 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 함
CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것
# 스케줄링 기법
1. 선입선출(FCFS : First Come, First Served) 기법
먼저 도착한 프로세스를 먼저 처리
먼저 CPU를 얻은 프로세스가 원하는 작업을 완료할때까지 다른프로세스들은 CPU 사용불가
긴 수행시간의 프로세스로 인한 짧은 수행시간을 가진 프로세스들 마저 순서를 기다려야 하는 단점
2. 라운드 로빈(Round Robin) 기법
CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한
일반적으로 1회 할당시간은 밀리초 단위를 사용
선입선출기법의 단점을 해결가능
다수의 사용자가 동시에 접속하더라도 각자 1초 이하의 응답시간을 보장받을 수 있음
3. 우선순위(Priority) 기법
대기중인 프로세스들에 우선순위를 부여하여 높은 우선순위의 프로세스에게 CPU 먼저 할당
외면당하는 프로세스가 생기지 않도록, 기다린 시간이 늘어날수록 우선순위를 점차 높여주는 방법도 적용가능
# 메인 메모리 관리
프로그램이 실행되려면 해당부분이 메모리에 올라가 있어야 함
메모리 또한 시스템 내에 한정된 용량만 존재하기 때문에 서로 다른 다수의 프로세스들이 나누어 사용할 수 있도록 관리되어야 함
서로 다른 프로세스의 영역을 침범하지 않도록 유지하는 것도 운영체제의 몫
# 물리적 메모리 관리 기법
1. 고정분할(fixed partition) 기법
물리적 메모리를 n개로 임의로 분할
메모리에 동시 적재되는 최대 프로그램의 수은 n개로 한정됨
분할된 크기보다 큰 프로그램은 적재 불가
분할된 크기보다 작은 프로그램으로 인한 내부조각(internal fragmentation) 발생 => 메모리낭비
내부조각(internal fragmentation)
- 프로그램이 할당되었지만, 사용하지 않는 메모리 영역
2. 가변분할(variable partition) 기법
매 시점 프로그램의 크기에 맞게 메모리를 분할
물리적 메모리의 크기보다 더 큰 프로그램의 실행은 불가
외부조각(external fragmentation) 발생
- 프로그램이 할당되지 않았지만, 그 크기가 작아 프로그램을 적재하지 못하는 메모리 영역
예시)
더보기물리적 메모리의 크기를 200으로 가정한다.
∅은 사용되지 않고 있는 메모리영역을 뜻한다.
1. 크기가 50인 프로그램 A 먼저 실행
50+∅(150) = 200
2. 크기가 30인 프로그램 B 실행
50+30+∅(120) = 200
3. 프로그램 A 종료
∅(50)+30+∅(120) = 200
4. 크기가 80인 프로그램 C 실행
∅(50)+30+80+∅(40) = 200
5. 크기가 40인 프로그램 D 실행
40+∅(10)+30+80+∅(40) = 200
6. 크기가 70인 프로그램 E 실행
40+∅(10)+30+80+∅(40) = 200 (실행불가, 다른 프로그램의 종료까지 기다려야 함)
여기서 ∅(10), ∅(40) 이 External Fragmentation 에 해당한다
3. 가상메모리(virtual memory) 기법
가장 널리 사용되는 메모리 관리 기법
물리적 메모리보다 더 큰 프로그램이 실행되는 것을 가능하게 함
실행될 수 있는 프로그램의 크기는 가상메모리의 크기에 의해 결정
모든 프로그램은 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 가짐
운영체제는 가상메모리 주소를 물리적 메모리 주소로 매핑하여 주소 변환후 프로그램을 물리적 메모리에 올림
프로그램의 크기가 크더라도 항상 모두 동시에 사용되는 것은 아니기에, 현재 사용되는 부분만 메인메모리에 올리고
나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할때 적재하는 방식
# Swap Area(스왑영역)
- 프로그램 실행시 보조기억장치에 저장되는 영역
# Page(페이지)
- 물리적 메모리와 보조기억장치에 저장되는 동일한 크기의 작은 단위
# Paging 기법
- 동일한 단위인 Page 로 메모리를 나누는 기법
# 입출력장치(주변장치) 제어 및 관리
인터럽트(interrupt) 매커니즘을 통해 관리
입출력장치(I/O)들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위해 일종의 작은 CPU(컨트롤러 : Controller)를 가지고 있음
컨트롤러는 해당장치에 대한 업무를 처리 & CPU에 인터럽트로 보고
입출력장치들의 연산은 입출력 컨트롤러가 담당하기 때문에 CPU와 동시 수행이 가능
# 인터럽트
- 주변장치들이 CPU의 서비스가 필요한 경우에 CPU에게 전달하는 신호
- 인터럽트가 발생하면 CPU는 하던일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행
- 운영체제는 인터럽트 처리 직전에 수행 중이던 작업의 상태를 저장해두고, 인터럽트 처리 완료후 수행중인 작업으로 돌아감
# 인터럽트 처리루틴
- 인터럽트 종류마다 해야할 작업을 정의한 커널내에 존재하는 프로그램 코드
- 커널내에는 CPU 스케줄링, 메모리 관리루틴, 인터럽트 처리루틴 등이 존재
728x90'Computer Basis > OS' 카테고리의 다른 글
운영체제(OS) - 4. 프로세스 관리 (0) 2020.10.06 운영체제(OS) - 3. 프로그램 구조와 실행 (0) 2020.09.26 운영체제(OS) - 2. 컴퓨터 시스템 동작원리 (0) 2020.09.24 운영체제(OS) 기본지식 - 2. MS Windows & Unix 개요 및 비교 (0) 2020.09.22 운영체제(OS) 기본지식 - 1. 운영체제의 정의 & 운영체제의 기능 & 운영체제의 분류 (0) 2020.09.22