1. 가상 기억장치 기타 관리 사항 <중요>
1) 페이지 크기
페이징 기법을 사용하면 프로그램을 페이지 단위를 나누는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다르다
페이지 크기가 작을 경우
페이지 단편화 감소. 페이지를 주기억장치로 이동하는 시간 감소
불필요한 내용이 적재될 확률이 적음 -> 효율적인 워킹 셋 유지 가능
Locality(구역성) -> 기억장치 효율 상승
맵 테이블 크기가 커지고, 매핑 속도가 늦어짐
디스크 접근 횟수가 많아져 전체적인 입출력 속도가 증가
페이지 크기가 클 경우
페이지 단편화 증가, 페이지를 주기억장치로 이동하는 시간 증가
불필요한 내용이 적재될 확률이 높음
맵 테이블 크기가 감소, 매핑 속도 상승
디스크 접근 횟수 감소, 전체적인 입출력의 효율성 증가
페이지 크기 작을 경우 | 페이지 크기 클 경우 | |
페이지 단편화 | 감소 | 증가 |
주기억장치 이동시간 | 감소 | 증가 |
불필요한 내용 | 적재 확률 감소 | 적재 확률 증가 |
맵 테이블 크기 | 증가 | 감소 |
매핑 속도 | 늦음 | 빠름 |
디스크 접근 횟수 | 증가 | 감소 |
전체적인 입출력 | 속도 증가 | 효율성 증가 |
* A4용지 100장을 A교실에서 B교실 옮긴다고 했을 때, 한 장씩 옮기면 꼼꼼하게 옮길 수가 있고, 여러 장씩 옮기면 효율성 있게 옮길 수가 있겠죠?
2) Locality
국부성, 지역성, 구역성, 국소성이라 부름.
프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질
스래싱을 방지하기 위한 워킹셋의 기반이 됨
프로세스가 집중적으로 사용하는 페이지를 알아내는 방법.
데닝(Denning) 교수에 의해 개념 증명
시간 구역성
프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높다
시간 구역성이 이뤄지는 기억 장소 : Loop(반복,순환), 스택(Stack), 부 프로그램(Sub Routine), Counting(1씩 증감), 집계에 사용되는 변수
공간 구역성
프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스 하는 현상
어느 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음.
공간 구역성이 이뤄지는 기억 장소 : 배열 순회(Array Traversal), 순차적 코드의 실행, 프로그래머들이 관련된 변수(데이터를 저장할 기억 장소)들을 서로 근처에 할당되는 기억장소, 같은 영역에 있는 변수
3) 워킹 셋(Working Set)
프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합
데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델, 프로그램의 Locality 특징을 이용함
자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로서 페이지 부재 및 페이지 교체 현상을 줄이고 프로세스의 기억 장치 사용이 안정됨
시간이 지남에 따라 자주 참조하는 페이지들이 집합이 변화하기 때문에 워킹셋은 시간에 따라 변함
4) 페이지 부재 빈도 방식
페이지 부재(Page Fault)는 참조할 페이지가 주기억장치에 없는 현상으로, 페이지 부재 빈도(PFF)는 페이지 부재 횟수를 의미함.
페이지 부재 빈도 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식
5) 프리페이징(Prepaging)
처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법
6) 스래싱(Thrashing)
프로세스의 처리 시간 보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
다중 프로그래밍 시스템이나 가상 기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로 나타나는 현상으로, 전체 시스템의 성능이 저하됨.
다중 프로그래밍 정도가 상승하면 CPU의 이용률은 어느 특정 시점까지 높아지며, 정도가 더욱 커지면 스래싱이 발생해 CPU의 이용률이 급격히 감소하게 된다.
* 500m 달리기를 전력으로 달리다가 400m 즈음에서 갑자기 한계가 오는 느낌입니다!
스래싱 현상 방지 방법
- 다중 프로그래밍 정도를 적정 수준으로 유지
- 페이지 부재 빈도를 조절하여 사용
- 워킹 셋 유지
- 부족한 자원을 증설, 일부 프로세스 중단
- CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하며 운영
2. 프로세스의 개요
1) 프로세스의 정의
프로세스는 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 실행중인 프로그램을 의미하며 작업(Job), 태스크(Task)라고 한다.
정의
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로 디스패치가 가능한 단위
- 프로시저가 활동 중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
*프로세스 정의에 대해 꼭 외우세요! 비동기적 행위는 수동적이라고 생각하시면 됩니다.
2) PCB(프로세스 제어 블록)
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB가 제거 된다.
PCB의 저장정보 | 설명 |
프로세스 현재 상태 | 준비,대기,실행 등의 상태 |
포인터 | 부모 프로세스에 대한 포인터 자식 프로세스에 대한 포인터 프로세스가 위치한 메모리에 대한 포인터 할당된 자원에 대한 포인터 |
프로세스 고유 식별자 | 프로세스를 구분할 수 있는 고유의 번호 |
스케줄링 및 프로세스의 우선순위 | 스케줄링 정보 및 프로세스가 실행될 우선 순위 |
CPU 레지스터 정보 | Accumulator(누산기), 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC) 등에 대한 정보 |
주기억장치 관리 정보 | 기준 레지스터, 페이지 테이블에 대한 정보 |
입출력 상태 정보 | 입출력장치, 개방된 파일 목록 |
계정 정보 | CPU 사용 시간, 실제 사용시간, 한정된 시간 |
* 개정 전에 잘 나오는 개념이였습니다. 개정 후에도 또 나올 것 같아요
3) 프로세스 상태 전이
프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미
제출(Submit, 생성) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold, 생성) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
*생성 과정 안에 (제출->접수)이 포함되있습니다!
준비(Ready)
프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
프로세스는 준비상태 큐에서 실행을 준비
접수(Hold) 상태에서 준비상태로의 전이는 Job 스케줄러에 의해 수행된다.
* Hold ----(Job 스케줄러)---->Ready
실행(Run)
준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간(Timer Runout)이 종료 되면 프로세스는 준비 상태로 전이됨.
실행중인 프로세스에 입출력 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이됨.
대기(Wait), 보류, 블록(BlocK) : 프로세스에 입출력처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력처리가 완료될 때까지 대기하고 있는 상태
종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
* 요약 : 사용자가 작업을 요청하면 프로세스가 스풀 공간에서 생성되고, 프로세서를 할당받기 위해 준비하며 프로세서가 할당되면 실행됩니다. 이때 할당시간이 종료되면 다시 준비로 가거나 입출력 처리가 필요하면 대기로 가서 입출력이 완료되면 Wake Up에 의해 다시 준비로 갑니다!
4) 프로세스 상태 전이 관련 용어
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행상태로 전이되는 과정
Wake Up : 입출력작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력장치의 처리속도를 보완하고 다중프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정 ( * 접수(Hold) 상태에서 프로세스를 디스크 공간에서 꺼내오는 걸 말합니다.)
5) 스레드(Thread)
프로세스 내의 작업 단위. 시스템의 여러 자원을 할당 받아 실행하는 프로그램 단위
하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 함.
프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 함.
스레드 기반 시스템에서 스레드는 독립적인 스케쥴링의 최소 단위임.
동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
분류
사용자 수준의 스레드 | 사용자가 만든 라이브러리를 사용해 스레드 운용 속도는 빠르지만 구현이 어려움 |
커널 수준의 스레드 | 운영체제의 커널에 의해 스레드를 운용 구현이 쉽지만 속도가 느림. |
스레드 사용 장점
- 하나의 프로세스를 여러 개의 스레드로 생성해 병행성 증가
- 하드웨어, 운영체제의 성능, 응용프로그램 처리율 향상
- 응답 시간 단축
- 실행 환경 공유로 기억장소의 낭비가 줄어듬
- 프로세스들 간의 통신이 향상
- 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신
'2020 정보처리기사 필기 > 4과목 - 프로그래밍 언어 활용' 카테고리의 다른 글
[2020 정보처리기사 필기 요약] 4과목 - 프로그래밍 언어 활용(응용 SW 기초 기술 활용_5) (0) | 2020.08.13 |
---|---|
[2020 정보처리기사 필기 요약] 4과목 - 프로그래밍 언어 활용(응용 SW 기초 기술 활용_4) (0) | 2020.08.12 |
[2020 정보처리기사 필기 요약] 4과목 - 프로그래밍 언어 활용(응용 SW 기초 기술 활용_2) (0) | 2020.08.05 |
[2020 정보처리기사 필기 요약] 4과목 - 프로그래밍 언어 활용(응용 SW 기초 기술 활용_1) (0) | 2020.08.04 |
[2020 정보처리기사 필기 요약] 4과목 - 프로그래밍 언어 활용(서버 프로그램 구현) (0) | 2020.08.03 |