운영체제, 메모리 관리
(1) 운영체제 종류
1. 운영체제 개념
- 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해주는 소프트웨어
- 하드웨어는중앙 처리 장치, 기억장치, 통신 장치 그리고 입출력 장치로 구분됨
2. 운영체제 특징
- 사용자 편리성 제공 : 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영
- 인터페이스 기능
- 스케줄링 담당 : 다중 사용자와 다중 응용 프로그램 환경에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링담당
- 자원 관리 : CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리
- 제어 기능 : 입출력 장치와 사용자 프로그램 제어
3. 운영체제의 기능
[1] 제어 프로그램
- 감시 프로그램 : 각종 프로그램의 실행과 시스템 전체의 작동 상태 감시 및 감독
- 작업 제어 프로그램 : 작업의 연속 처리를 위한 스케줄 및 시스템 자원 할당 담당
- 데이터 관리 프로그램 : 주기억장치와 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱신 및 유지보수 기능 수행
[2] 처리 프로그램
- 언어 번역 프로그램 : 원시 프로그램을 기계어 형태의 목적 프로그램으로 번역하는 프로그램
- 서비스 프로그램 : 효율성을 위해 사용 빈도가 높은 프로그램으로 링커, 정렬/합병 프로그램, 라이브러리, 유틸리티 프로그램이 있음
- 문제 프로그램 : 특정 업무 해결을 위해 사용자가 작성한 프로그램
4. 운영체제에서 커널의 기능
- 운영체제는 크게 인터페이스(셀)과 커널의 구조로 이루어져 있다.
- 핵심적인 기능들은 커널에, 인터페이스(쉘)은 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.
- 쉘은 가장 바깥 부분에 위치해서 사용자 명령에 대한 처리를 담당하고, 커널은 하드웨어와 관련된 내부적인 역할 담당
▼ 커널의 기능
- 프로세스 관리 : 프로세스 스케줄링 및 동기화 관리 담당(생성, 제거, 시작, 정지, 메시지 전달)
- 기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당
- 주변장치 관리 : 입출력 장치 스케줄링 및 전반적인 관리 담당
- 파일 관리 : 파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리 담당
5. 운영체제의 종류
[1] 윈도우즈
- MS-DOS의 멀티태스팅 기능과 GUI 환경을 제공
- 마이크로소프트사가 개발
- 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영 체제가 각 작업의 CPU 이용시간을 제어
- 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성
- OLE : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공
[2] 리눅스/유닉스
- 유닉스는 Bell 연구소에서 개발한 운영체제
- 대화식 운영체제 기능 제공 : 프롬프트 상태에서 사용자가 명령을 입력
- 다중 작업 기능 제공 : 다수의 작업이 중앙 처리 장치와 같은 공용자원을 나누어 한 번에 하나이상의 작업을 수행
- 이식성 제공 : 90% 이상이 C언어로 구현되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
- 계층적 트리 구조 파일 시스템 제공 : 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이
유닉스
- 리눅스는 유닉스의 호환 커널이다.
- 리눅스는 대부분 무료이지만 유닉스는 유료이다.
- 리눅스는 개발자나 일반 사용자가 사용하며, 유닉스는 메인프레임 및 대형 시스템 관리자가 사용한다.
- 리눅스는 GUI, 파일시스템, BASH 셀을 사용하지만, 유닉스는 커맨드 기반이 주였으나 GUI도 제공하는 추세다.
- 유닉스는 주로 인터넷 서버, 워크스테이션 등 대형 시스템에 주로 사용한다.
[3] 맥(Mac)
- 애플이 매킨토시용으로 개발한 그래픽 사용자 인터페이스 운영체제
[4] 안드로이드
- 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 운영체제
- 리눅스 커널 위에서 동작하며, 자바와 코틀린 언어로 응용 프로그램을 작성할 수 있다.
(2) 메모리 관리
1. 메모리 관리 개념
- 메모리 관리는 중앙 처리 장치, 메모리, 스토리지, 주변 기기 등을 적절히 관리하는 기법
- CPU가 프로그램을 읽어서 연속적으로 동작하기 위해서는 메모리 관리의 역할이 중요하다.
2. 메모리 관리 기본 사항
- 가상 메모리 : 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 부여하는 방식
- 메모리 관리 장치 : CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품, 가상 메모리 주소를 실제 메모리 주소로 변환(메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당)
- 메모리 관리자 : 기억장치의 어느 부분이 사용 중인지 또는 아닌지를 조사하여 프로세스에게 필요할 때마다 기억장치를 할당 후 회수하는 작업 수행
3. 메모리 관리 기법
기법 | 설명 | 세부 기법 |
반입 기법 | 주기억장체에 적재할 다음 프로세스의 반입시기를 결정하는 기법(When) | 요구 반입 기법 예상 반입 기법 |
배치 기법 | 디스크에 있는 프로세스를 주기억장치의 어느 위치에 저장할 것인지 결정하는 기법(Where) | 최초 적합 최적 적합 최악 적합 |
할당 기법 | 실행해야 할 프로세스를 주기억장치에 어떤 방법으로 할당할 것인지 결정(How) | 연속 할당 기법 분산 할당 기법 |
교체 기법 | 재배치 기법으로 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지를 결정(Who) | 프로세스의 Swap In/Out FiFO, LRU, LFU |
[1] 메모리 반입 기법
요구 반입 기법 : 다음에 실행될 프로세스가 참조 요구가 있을 경우에 적재하는 기법
예상 반입 기법 : 시스템의 요구를 예측하여 미리 메모리에 적재하는 방법으로 요구되는 페이지 이외 다른 페이지도 함께 적재
[2] 메모리 배치 기법
① 최초 적합(First Fit)
- 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식이다.
②최적 적합(Best Fit)
- 쓸 수 있는 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 넣는 방식(공백 최소화 장점)
③최악 적합(Worst Fit)
- 공간 중에서 가장 큰 공간에 할당하는 방식
[3] 메모리 할당 기법
- 프로세스를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지(How)
○ 연속 할당 기법
- 각 프로세스를 주기억장치 공간 내에서 인접되게 연속하여 저장(연속으로 할당)
단일 분할 할당 기법 : 오버레이, 스와핑
다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법
○ 분산 할당 기법
- 하나의 프로세스를 여러 개의 조각으로 나누어 주기억장치 공간 내에 분산하여 배치하는 기법(주로 가상기억장치 사용)
- 페이징 기법, 세그멘테이션 기법, 페이징/세그멘테이션 기법
① 페이징 기법
- 가상기억장치 내의 프로세스를 일정하게 분할하여 주기억 장치의 분산된 공간에 저장 후 프로세스를 수행시키는 기법
- 논리 주소는 페이지 번호(P)와 변위(d)로 구성되어 있다.
- 페이지 테이블에서 실제 메모리 기준 주소를 찾고 변위를 더해 물리 메모리 주소를 결정한다.
- 장점은 공유 페이지를 이용하고 메모리 활용을 통한 다중 처리 프로그래밍 가능함
- 단점은 페이징 사상 하드웨어 비용 소요, 속도 저하, 내부 단편화 현상이 발생할 수 있음
▼
페이지 크키가 작을 경우 : 더 많은 페이지 사상 테이블 공간이 필요, 기억 장치 효율도 좋ㄱ지만 매핑 속도가 늦어져서 디스크 접근 횟수가 많아지는 이유 때문에 전체적인 입, 출력 시간이 증가함
페이지 크키가 클 경우 : 주기억 장치의 공간이 절약되고 매핑 속도가 빨라짐. 전체적인 입, 출력 시간이 감소하지만 기억 공간의 낭비를 초래할 수 있음
② 세그먼테이션 기법
- 가상기억장치 내의 프로세스를 가변적인 크기의 블록으로 나누고 메모리를 할당하는 기법
- 논리 주소는 세그먼트 번호(s)와 범위(d)로 구성된다.
- 세그먼트 테이블은 기준과 한계로 메모리의 시작 주소와 길이를 확인한다.
- 세그먼트 테이블은 메인 메모리에 존재한다.
- 가변적인 데이터 구조와 모듈 처리, 자원의 효율적 이용이 장점
- 단점은 외부 단편화 현상 발생
③ 페이징/시그멘테이션 혼용기법
- 하나의 세그먼트를 정수 배의 부분 페이지로 다시 분할하는 방식
- 세그먼트가 너무 가변적이고 크기가 너무 커서 이를 해결하기 위해 개발
[4] 교체 기법
- 주기억 장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정하는 기법
▼교체기법유형
세부 기법 | 설명 |
FIFO | 각 페이지가 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와 가장 오래 있던 페이지를 교체(선입선출) |
LRU (Least Recenty Used) |
사용된 시간을 확인하여 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체 |
LFU (Least Frequenty Used) |
사용된 횟수를 확인하여 참조 횟수가 가장 적은 페이지를 선택하여 교체 |
OPT (Optimal Replacement) |
앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 |
NUR | LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법 |
SCR | 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법(FIFO의 단점을 보완) |
4. 메모리 단편화
- 분할된 주기억장치에 프로세스를 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상
[1] 내부 단편화
- 분할된 공간에 프로세스를 적재한 후 남은 공간(고정 분할 할당 방식 또는 페이지 기법 사용 시 발생하는 메모리 단편화)
- 해결방안으로는 Slab Allocator, 통합, 압축이 있다.
[2] 외부 단편화
- 할당된 크기가 프로세스 크기보다 작아서 사용하지 못하는 공간
- 가변 분할 할당 방식 또는 세그먼테이션 기법 사용 시 발생하는 메모리 단편화
- 해결방안으로는 버디 메모리 할당, 통합, 압축이 있다.
5. 페이징 기법의 문제 및 해결방안
① 페이징 기법의 문제점 - 스레싱
- 스레싱은 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 실제 처리 시간보다 페이지 교체 시간이 더 많아지는 현상
- 오류율이 클수록 스레싱이 많이 발생하고, 스레싱으로 인해 전체 시스템의 성능 및 처리율이 저하된다.
② 페이징 기법의 문제점 해결방안
[1] 워킹 세트
- 각 프로세스가 많이 참조하는 페이지들의 집합을 주기억장치 공간에 계속 상주하게 하여 빈번한 페이지 교체 현상을 줄이고자 하는 기법
- CPU 활용률을 최적화할 수 있으나, 워킹 세트 추적관리가 복잡하고 워킹 세트 크기 설정의 모호함이 발생한다.
[2] 페이지 부재 빈도(PFF)
- 페이지 부재율의 상한과 하한을 정해서 직접적으로 페이지 부재율을 예측하고 조절하는 기법
- 페이지 부재 비율에 따라 페이지 프레임 개수를 조절한다.
- 장점은 페이지 부재 발생 시 실행하여 부하가 적고, 직접적으로 페이지 부재율 조절이 가능하다.
- 프로세스를 중지 시키는 과정이 발생하고, 페이지 참조가 새로운 지역으로 이동할 수 있는 단점이 있다.
6. 지역성
- 지역성은 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 특성
- 스레싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다.
- 시간 지역성 : 최근 사용되었던 기억장소들이 집중적으로 액세스하는 현상(루프, 스택, 북프로그램, 카운팅, 집계에 사용되는 변수)
- 공간 지역성 : 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상(배열 순회, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억 장소)
- 순차 지역성 : 데이터가 순차적으로 액세스 되는 현상(순차적 코드 실행)