정처기(필기)/프로그래밍언어활용

운영체제, 메모리 관리

jjonse 2022. 6. 9. 17:35
더보기

(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. 지역성

- 지역성은 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 특성

- 스레싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다. 

 

  • 시간 지역성 : 최근 사용되었던 기억장소들이 집중적으로 액세스하는 현상(루프, 스택, 북프로그램, 카운팅, 집계에 사용되는 변수)
  • 공간 지역성 : 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상(배열 순회, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억 장소)
  • 순차 지역성 : 데이터가 순차적으로 액세스 되는 현상(순차적 코드 실행)