[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.3) 가상기억장치 관리 사항, 프로세스
「1」 소프트웨어 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
> 「4」 프로그래밍 언어 활용
- 서버 프로그램 구현, 프로그래밍 언어 활용, > 응용 SW 기초 기술 활용
「5」 정보시스템 구축 관리
1 운영체제의 개념
2 Windows
3 UNIX / LINUX / MacOS
4 기억장치 관리의 개요
5 가상기억장치 구현 기법 / 페이지 교체 알고리즘
> 6 가상기억장치 기타 관리 사항
> 7 프로세스의 개요
8 스케줄링
9 주요 스케줄링 알고리즘
10 환경 변수
11 운영체제 기본 명령어
12 인터넷
13 OSI 참조 모델
14 네트워크 관련 장비
15 TCP / IP
6. 가상기억장치 기타 관리 사항
페이지 크기
페이지 크기가 작을 경우
: 페이지 단편화 감소, 한 개의 페이지를 주기억장치로 이동하는 시간 감소
: 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지
: Locality에 더 일치, 기억장치의 효율 높아짐
: 페이지 맵 테이블의 크기가 커지고, 매핑 속도 늦어짐
: 디스크 접근 횟수 많아서 전체적인 입 / 출력 시간 늘어남
페이지 크기가 클 경우
: 페이지 단편화 증가, 한 개의 페이지를 주기억장치로 이동하는 시간 증가
: 불필요한 내용까지 주기억장치에 적재될 수도 있음
: 페이지 맵 테이블의 크기 작아지고, 매핑 속도 빨라짐
: 디스크 접근 횟수가 줄어 전체적인 입 / 출력 효율성 증가
Locality(국부성, 지역성, 구역성, 국소성)
주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질
- 스래싱 방지를 위한 워킹 셋 이론의 기반이 됨
- 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중 하나, 가상기억장치 관리의 이론적 근거가 됨
- 데닝(Denning) 교수에 의해 구역성 개념이 증명, 캐시 메모리 시스템의 이론적 근거
- 시간 구역성(Temporal Locality), 공간 구역성(Spatial Locality)
시간 구역성(Temporal Locality)
: 하나의 페이지를 일정 시간 동안 집중적으로 액세스 하는 현상
: 한 번 참조한 페이지는 가까운 시간 내 계속 참조할 가능성이 높음
: Loop, 스택, 부 프로그램, Counting(1씩 증감), 집계(Totaling)에 사용되는 변수(기억장소)
공간 구역성(Spatial Locality)
: 일정 위치의 페이지를 집중적으로 액세스하는 현상
: 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성 높음
: 배열 순회, 순차적 코드의 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수 참조
워킹 셋(Working Set)
프로세스가 일정 시간 자주 참조하는 페이지들의 집합
- 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델, 프로그램의 Locality 특징 이용
- 워킹 셋을 주기억장치에 상주시킴으로, 페이지 부재 / 페이지 교체 현상이 줄어 프로세스의 기억장치 사용이 안정됨
- 시간에 따라 변경
- 그 시간에 참조된 페이지를 중복 제거한 것
페이지 부재 빈도 방식
참조할 페이지가 주기억장치에 없는 현상, 페이지 부재 빈도(PFF; Page Fault Frequency)는 페이지 부재 횟수
- 페이지 부재율(Page Fault Rate)에 따라 주기억장치에 있는 페이지 프레임 수를 늘리거나 줄여, 적정 수준으로 유지
- 초기에 임의의 페이지 프레임 할당, 페이지 부재율을 감시하고 있다가 상한선 넘어가면 더 많은 페이지 프레임 할당, 하한선 넘어가면 페이지 프레임을 회수하는 방식
프리페이징(Prepaging)
처음의 과도한 페이지 부재를 방지, 모든 페이지를 한꺼번에 페이지 프레임에 적재, 사용되지 않는 페이지가 많을 수도 있음
스래싱(Thrashing)
프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 다중 프로그래밍 시스템, 가상기억장치를 사용하는 시스템에서 자주 페이지 부재가 발생함으로 나타나는 현상, 전체 시스템 성능 저하
- 다중 프로그래밍의 정도가 높아지면 CPU 이용률은 특정 시점까지만 높아지고, 더 높아지면 스래싱이 나타나고 CPU 이용률은 급격히 감소, 높은 게 좋은 것만은 아님
스레싱 방지 방법
: 다중 프로그래밍의 정도를 적정 수준으로 유지
: 페이지 부재 빈도를 조절
: 워킹 셋 유지
: 부족한 자원 증설, 일부 프로세스 중단
: CPU 성능 자료의 관리 / 분석으로 임계치 예상하여 운영
7. 프로세스의 개요
프로세스(Process)의 정의
프로세서(처리기, CPU)에 의해 처리되는 실행 중인 프로그램, == 작업(Job), 태스크(Task)
프로세스의 정의
: PCB를 가진 프로그램
: 실기억장치에 저장된 프로그램
: 프로세서가 할당되는 실체, 디스패치가 가능한 단위
: 프로시저가 활동 중인 것
: 비동기적 행위를 일으키는 주체
: 지정될 결과를 얻기 위한 일련의 계통적 동작
: 목적 / 결과에 따라 발생되는 사건들의 과정
: 운영체제가 관리하는 실행 단위
PCB(Process Control Block, 프로세스 제어 블록)
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳, == Task Control Block, Job Control Block
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성, 프로세스가 완료되면 PCB는 제거됨, 공유 불가
- PCB에 저장되어 있는 정보
: 프로세스의 현재 상태 - 준비, 대기, 실행 등 프로세스 상태
: 포인터 - 부모 프로세스 포인터, 자식 프로세스 포인터, 프로세스가 위치한 메모리 포인터, 할당된 자원 포인터
: 프로세스 고유 식별자 - 프로세스를 구분할 수 있는 고유의 번호
: 스케줄링 / 프로세스의 우선순위 - 스케줄링 정보 / 프로세스가 실행될 우선순위
: CPU 레지스터 정보 - Accumulator(누산기), 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC) 정보
: 주기억장치 관리 정보 - 기준 레지스터(Base Register), 페이지 테이블(Page Table) 정보
: 입 / 출력 상태 정보 - 입 / 출력장치, 개방된 파일 목록
: 계정 정보 - CPU 사용 시간, 실제 사용 시간, 한정된 시간
프로세스 상태 전이
제출 (Submit) |
→ | 접수 (Hold) |
Job 스케줄러 → → → |
준비 (Ready) |
Dispatch → → → ← ← ← 선점, 시간초과 |
실행 (Run) |
→ | 종료 (Teminated, Exit) |
↓ ↑ ↓ ↑ Spooling ↓ ↑ ↓ ↑ |
↖ 입 / 출력 종료 깨움 (Wake Up) ↖ |
↙ 입 / 출력 발생 ↙ |
||||||
디스크 | 대기 (Wait, Block) |
- 제출(Submit) : 작업 처리를 위해 사용자가 작업을 시스템에 제출한 상태
- 접수(Hold) : 제출된 작업이 스풀 공간인 디스크 할당 위치에 저장된 상태
- 준비(Ready)
: 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
: 프로세스는 준비상태 큐에서 실행을 준비
: 접수 상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행
- 실행(Run)
: 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
: 프로세스 수행이 완료되기 전 프로세서 할당 시간이 종료(Timer Run Out)가 되면 준비 상태로 전이
: 입 / 출력 처리가 필요하면 대기 상태로 전이
: 준비 상태에서 실행 상태로의 전이는 CPU(프로세서) 스케줄러에 의해 수행
- 대기(Wait), 보류, 블록(Block) : 입 / 출력 처리가 필요하면 중단되고, 완료될 때까지 대기하는 상태
- 종료(Terminated, Exit) : 프로세스 실행이 끝나고 할당이 해제된 상태
프로세스 상태 전이 관련 용어
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up : 입 / 출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling : 입 / 출력장치의 공유, 상대적으로 느린 입 / 출력장치의 처리 속도를 보완, 다중 프로그래밍 시스템의 성능 향상을 위해 입 / 출력 데이터를 직접 보내지 않고, 나중에 한 번에 입 / 출력하기 위해 디스크에 저장하는 과정
교통량 제어기(Traffic Controller) : 프로세스의 상태에 대한 조사, 통보를 담당
스레드(Thread)
프로세스 내 작업 단위로, 여러 자원을 할당받아 실행하는 프로그램 단위
- 하나의 프로세스에 하나의 스레드 존재하면 단일 스레드, 하나 이상의 스레드 존재하면 다중 스레드
- 프로세스의 일부 특성을 가지므로, == 경량(Light Weight) 프로세스
- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위, 프로세스의 역할
- 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
사용자 수준의 스레드
: 사용자가 만든 라이브러리 사용하여 스레드 운용
: 커널 모드로의 전환이 없어, 오버헤드 줄어듦
: 속도 빠르지만, 구현 어려움
커널 수준의 스레드
: 운영체제의 커널에 의해 스레드를 운용
: 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기하지 않으므로 시스템 성능 높임
: 여러 스레드가 커널에 동시 접근 가능
: 스레드의 독립적인 스케줄링 가능
: 구현 쉽지만, 속도 느림
장점
: 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성 증진
: 하드웨어, 운영체제의 성능, 응용 프로그램의 처리율 향상
: 응용프로그램의 응답 시간 단축
: 실행 환경 공유시켜 기억장소의 낭비 줄어듦
: 프로세스들 간 통신 향상
: 공통적으로 접근가능한 기억장치를 통해 효율적으로 통신
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)