보안기사/필기

기사 자격증(알기사, 운영체제 주요기술)

3년안에 내집 마련 2019. 1. 21. 22:00
반응형

프로세스(Process)

1. 프로세스 : 현재 실행중인 프로그램, 논리적으로 운영체제가 해야하는 작업

2. 프로세서 어떤 특정의 기능처리를 하는 소프트웨어

3. 프로세스는 스택, 데이터, 힙 섹션을 포함함

4. PCB

 1. 운영체제가 그 프로세스를 관리하는데 필요한 모든 정보를 유지하는 자료구조 테이블

 2. 프로세스 디스크립터라고 하며 프로세스가 생성할 때 만들어지며, 프로세스는 고유의 PCB를 가진다.

 3. PCB 포함 정보

필드

설명

프로세스 상태

new, ready, running, wating, halted 상태등이 정의

프로그램 카운터

실행 중인 프로세스가 다음에 실행할 명령어 주소를 가르킨다.

CPU 레지스터

프로그램 카운터 및 상태정보를 가짐

프로그램 카운터와 상태정보는 나중에 프로세스가 계속 올바르게 실행되도록 하기 위해서 인터럽트 발생 시 저장되어야 함

CPU 스케줄링 정보

프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수 등 포함

메모리 관리 정보

OS가 사용하는 메모리 시스템에 따라 페이지 테이블 또는 세그먼트 테이블 등의 정보 포함

회계 정보

CPU 사용시간, 경과 시간, 시간 제한, 계정번호, 프로세스 번호 등을 포함

입출력 상태 정보

프로세스에게 할당된 입출력 장치와 열린 파일의 목록 등 포함

 

5. 프로세스 상태

 1. 보류상태 : 작업이 일시중지 되거나 디스크에 수록된 상태

 2. 준비상태 : CPU를 사용할 수 있는 상태, CPU를 할당받을 수 있는 상태

 3. 실행상태 : 프로세스가 CPU를 차지하는 상태, CPU로 프로세스를 수행하고 있는 상태

 4. 대기상태 : 프로세스가 CPU를 차지하고 실행되다가 I/O 처리와 같은 사건 발생시 CPU 양도하고 대기큐에서 대기하면서 사건이 끝나길 기다리는 상태

 5. 완료상태 : 프로세스가 CPU를 할당받아 주어진 시간 내 완전히 수행을 종료한 상태

 

6. 프로세스 상태전이

 1. 디스패치 : 준비 실행

 2. 할당시간 초과 : 실행 준비

 3. 대기 : 실행 대기

 4. 깨움 : 대기 준비

 

7. 실행되는 동안 프로세스는 여러개의 프로세스 생성가능

   ※ 생성하는 프로세스 = 부모 프로세스 , 새로운 프로세스 = 자식 프로세스

8. PID : 프로세스마다 가지고 있는 고유 식별자

9. 자식 프로세스는 부모만이 종료시킬 수 있다.

 

스레드(Threads)

1. 그 작업을 성취하는데 필요한 가능한 많은 하위 작업

2. 자원 할당에는 관여하지 않으며, 프로세서의 스케줄링 단위로서 사용

3. 각각의 스레드는 독립적으로 제어흐름을 가지고 자신만의 스택레지스터를 가짐

4. 스레드는 개수에 따라 heavyweight 쓰레드와 lightweight 쓰레드로 나뉨

   heavyweight 쓰레드 : 하나의 제어 스레드를 가짐, 한가지 작업만 수행 가능

   lightweight 쓰레드 : 다수의 제어 스레드를 가짐, 동시에 하나이상의 작업 수행 가능

응답성이 높고, 자원공유가 가능하며 경제성이 좋으며 다중처리 구조의 활용 등의 장점이 있다.

 

CPU 스케줄링

 - CPU 자원을 언제, 어느 프로세스에게 배당할지 결정하는 것

 - CPU가 유휴 상태가 될 때마다, OS는 준비완료 큐에 있는 프로세스 중 하나를 선택해서 실행

 - 선택절차는 단기 스케줄러(CPU 스케줄러)에 의해 수행

 - CPU 스케줄링 기준

   1. CPU 이용률 : CPU 사용량

   2. 처리량 : 단위시간 당 완료된 프로세스의 개수

   3. 총 처리시간 : 프로세스를 실행하는데 걸리는 소요시간, 제출시간과 완료시간의 간격

   4. 대기시간 : 준비완료 쿠에서 대기하면서 보낸 시간의 합

   5. 응답시간 : 하나의 요구를 제출한 후 첫 번째 응답에 나올 때까지의 시간

    ※ CPU 이용률과 처리량은 최대화하고 처리시간, 대기시간, 응답시간은 최소화 해야함

 

- CPU 스케줄링 분류

 1. 선점 스케줄링 : 한 프로세스가 CPU를 차지하고 있을 때 다른 프로세스가 현재 프로세스를 중지하고 자신이 CPU를 차지하는 방식

  ※ SRT, MLQ, MFQ, RR

 2. 비선점 스케줄링 : 한 프로세스가 CPU를 할당받으면 작업이 끝날 때까지 CPU를 빼앗을 수 없는 방식

  ※ FIFO, SJF, HRN

 

프로세스 스케줄링 알고리즘

1. FIFO(FCFS)

  - 비선점 방식

  - 먼저 들어온 프로세스가 CPU를 먼저 받는 방식

  - 대화형에 부적합

  - 반응속도 예측 가능

 

2. SJF

  - 비선점 방식

  - 버스트 시간(사용시간)이 가장 짧은 프로세스 먼저 수행하는 방식

  - 작은작업에 유리하고 큰 작업은 시간이 오래 걸림

 

3. HRN

  - 비선점 방식

  - SJF의 약점, 특히 긴 작업과 짧은 작업간의 불평등을 어느정도 보완

  - 우선순위에 따라 작업 수행

   ※ 우선순위 : (대기시간 + 수행시간) / 수행시간

  - 에이징 기법으로 기아상태 해결

 

4, RR

  - 선점 방식

  - 시분할 시스템을 위해 설계

  - 시간 할당량을 두어 시간이 지나면 다음 프로세스에게 넘긴다.

  - 시간 할당량이 매우 크면 FIFO와 다를게 없고 매우 작으면 많은 문맥교환을 야기시킴

 

5. SRT

  - 선점방식

  - SJF와 같은방식으로 시간마다 수행시간이 가장 짧은 프로세스를 선택하여 수행

  - 가장 적은 대기시간

 

6. MLQ(다단계 큐)

  - 선점방식

  - 준비완료 큐를 다수의 별도의 큐로 분류

  - 프로세스는 같은 프로세스의 특성에 따라 한 개의 큐에 영구적 할당

  - 우선순위 : 1. 시스템 프로세스

-   우선순위 : 2. 대화형 프로세스

-   우선순위 : 3. 대화형 편집 프로세스

-   우선순위 : 4. 일괄처리 프로세스

-   우선순위 : 5. 학생 프로세스

 

  - 각각의 큐는 독자적인 스케줄링 알고리즘 사용

 

7. MFQ(다단계 피드백 큐)

  - 선점방식

  - CPU 사용시간이 짧은 입출력 중심 프로세스와 대화형 프로세스가 높은 우선순위를 받고 CPU 사용시간이 길고, 계산위주의 작업을 낮은 단계의 큐에 머물게 하는 방식

  - 우선순위가 높을수록 실행시간은 짧고 아래로 갈수록 실행시간은 길어진다.

  - CPUI/O장치의 효율을 높일 수 있음

 

교착상태

  - 다중 프로그래밍 상태에서 아무리 기다려도 결코 일어나지 않을 사건을 기다리는 프로세스

  - 둘 이상의 서로 다른 프로세스가 자신이 요구한 자원을 할당받아 점유하고 있는 상태에서 상호간에 상대방에 할당되어 있는 프로세스 자원을 요구하는 상황

  - 교착상태 4가지 필요조건

   1. 상호배제

   2. 비선점

   3. 점유와 대기

   4. 환형대기

 

  - 교착상태 해결방법

   1. 교착상태 예방 : 교착상태 필요조건 중 최소 1개 부정

   2. 교착상태 회피 : 교착상태 발생을 인정하고 이를 피하는 방법

    ex) 은행원 알고리즘

   3. 교착상태 탐지 : 교착상태를 발생시켜 교착상태를 발생시킨 자원을 찾아내는 방법

   4. 교착상태 복구 : 시스템에서 교착상태를 제거하는 방법, 현실적으로 가장 힘든문제

 

메모리 관리 전략

1. 기억장치 관리자 : 기억장치의 어느 부분이 사용중인지 어느 부분이 사용되고 있지 않은지 조사 후 프로세스가 요구할 때 마다 기억장치 할당, 사용 끝나면 회수

2. 스와핑

   - 프로세스가 실행 중에 임시로 예비 저장장치로 내보내졌다가 실행을 계속하기 위해 다시 메모리로 돌아오는 것

   - 스와핑을 사용하면 실제 물리메모리 크기보다 큰 경우에도 실행이 가능하게 해주며 다중 프로그래밍의 정도를 증가

    ※ 스왑 인 : 예비 메모리(보조메모리) 메인메모리로 이동

       스왑 아웃 : 메인메모리 예비메모리로 이동

 

메모리 할당

- 고정분할 : 메모리를 똑같은 크기로 분할하는 것

- 가변분할 : 사용 가능한 메모리 공간이 어디에 얼마나 있는지 고려하여 공간 할당(가변할당)

 

메모리 관리 정책

- 반입정책 : CPU로 실행하거나 참조하기 위해 주기억장치에 적재할 다음 프로그램이나 자료를 언제 가져올지 결정하는 문제

   1. 요구반입 정책 : 어떤 프로그램이나 자료가 참조되는 시점에서 그것을 주 기억장치로 옮기는 기법

   2. 예상 반입 정책 : 앞으로 요구될 가능성이 큰 자료 또는 프로그램을 예상하여 주 기억장치로 미리 옮기는 방법

 

메모리 배치 정책

- 새로 반입된 자료나 프로그램을 주 기억장치 어디에 위치시킬 것인가를 결정하는 정책

   1. 최상적합(best fit) : 사용 가능한 공간들 중 가장 작은 공간 선택

   2. 최초적합(first fit) : 첫 번째로 사용 가능한 가용공간 할당

   3. 최악적합(worst fit) : 가장 큰 가용공간 할당

 

메모리 교체정책

- 새로 들어온 프로그램이 들어갈 장소를 마련하기 위해 어떤 프로그램이나 자료를 주 기억장치에서 제거할 것인가 결정하는 정책

- 페이지 부재가 발생하면 어떤 프로그램을 제거할지 결정하는 정책

   ※ 페이지 부재(page fault) : 접근하고자 하는 데이터나 프로그램이 현재 주 기억장치에 존재하지 않기 때문에 디스크로부터 읽어들어야 할 경우에 일어나는 중단

 

페이지 교체기법

1. FIFO(선입선출)

   - 메모리에 올라온 지가 가장 오래된 페이지를 교체하는 방식

   - FIFO의 모순(Belady의 모순) : 어떤 프로세스에서 할당된 페이지 프레임의 수가 증가하면 페이지 부재가 감소할 것 같지만 오히려 증가하여 실제로 페이지 부재가 더 증가하는 현상

 

2. 최적교체(Optimal Replacement, OPT)

   - FIFO의 모순으로 만들어진 정책

   - 모든 알고리즘보다 낮은 페이지 부재율을 보이며 FIFO의 모순이 발생하지 않는다.

 

3. LRU(Least Recently Used)

   - 가장 널리 사용되는 방법

   - 카운터를 두어 현 시점에서 가장 오랫동안 사용되지 않는 페이지를 제거하는 방법

   - 국부성(지역성)에 의존

   - 시간 오버헤드 발생, 실제로 구현하기 매우 복잡하다.

 

4. LRU 근사 페이지 교체

 1. 2차 기회 알고리즘(SCR)

  - 참조 비트를 두어 FIFO의 가장 단점인 주기억장치에 있으면서 자주 쓰이던 페이지가 대체되는 것을 방지

  - 페이지 사상표에 다 참조비트를 두어 프로세스 수행시 사용하면 1 사용되지 않으면 0으로 수행 다음번 수행시 1이었던 비트는 0으로 바꾸고 0이었던 프로세스는 교체한다.

 

 2. NUR(Not Used Recently)

  - LRU의 단점이 시간 오버헤드를 적게하는 방식

  - NUR 사용방법

     (0,0) : 최근에 사용, 변경도 없는 페이지 변경하기 딱 좋음

     (0,1) : 최근에 사용되지 않았지만 변경은 된 경우 교체시 디스크 내용을 기록해야하기 때문에 교체에 적당하지 않음

     (1,0) : 최근에 사용은 되었으나 변경은 되지않은 경우 곧 다시 사용될 가능성이 높다.

     (1,1) : 최근에 사용도 되었고 변경도 되었음 아마 곧 다시 사용될 것이며 교체시 디스크에 가장 먼저 기록해야함

 

5. 계수 기반 페이지 교체

 1. LFU(Least Frequently Used) : 참조 횟수가 가장 작은 페이지를 교체하는 방법

 2. MFU(Most Frequently Used) : 가장 작은 참조횟수를 가진 페이지가 가장 최근에 참조된 것이고 앞으로 사용될 것이라는 것을 근거로 페이지 교체

   → MFU, LFU는 비용도 많이 드고 최적 페이지 교체(OPT) 정책을 제대로 근사하지 않아 많이 사용 X

 

가상 기억장치

 - 프로그램, 데이터, 스택의 결합된 크기가 이용할 수 있는 물리적인 기억장치를 초과하는 것을 대비하여 만듦

 - 정기적으로 실행되는 프로그램의 일부는 1차 기억장치(주 기억장치), 빈번하게 사용되지 않는 나머지는 2차 기억장치(가상 기억장치, 디스크)에 유지하는 방식 2단계 기억장치

 

가상기억장치 구현

1. 가상 기억장치의 구현 방법에 따른 방법

 - 페이징

  1. 페이지를 고정된 블록사이즈로 나누는 방법

  2. 내부단편화가 발생한다.

   ※ 내부단편화 : 분할해서 사용하고 남은 일부분

          ex) 100mb80mb짜리 프로그램을 넣으면 20mb의 내부단편화 발생

 

- 세그먼테이션

 1. 프로그래머가 생각하는 모양 그래도 지원하는 메모리 분할 방식

 2. 크기가 가변적으로 변함

 3. 외부단편화가 발생

  ※ 외부단편화 : 분할의 크기가 프로그램의 크기보다 작아서 사용되지 못함

        ex) 100mb120mb의 프로그램을 넣으려면 크기가 작아 외부단편화 발생

 

- 페이징 / 세그먼테이션 혼용

 1. 세그먼트가 너무 가변적이고 때로는 크기가 지나치게 커서 주 기억장치에 적재가 불가능한 경우를 해결하기 위한 방법

 2. 프로그램을 세그먼트 단위로 분할 후 세그먼트를 다시 페이지 단위로 분할

 

2. 사상표 색인을 찾는 방법에 따른 방법

 - 직접 사상

  1. 페이지 사상표가 주기억장치에 존재

  2. 프로그램 수행을 위해 두 번의 기억장치를 접근해야 한다.

 - 연관 사상

  1. 빠른 주소변환을 위해 위치지정이 아닌 내용지정 하는 방식

  2. 주기억장치보다 훨씬 빠른 연관 기억장치에 페이지 사상표 저장

  3. 가장 빠르고 융통성 있는 방식

 - 직접 / 연관 사상 혼용

  1. 저렴한 비용으로 캐시나 연관장치의 장점을 살릴 수 있는 절충 방안

  2. 가장 최근에 참조된 페이지는 조만간 다시 사용되기 쉽다는 지역성 원리 이용

 

디스크 스케줄링 기법

1. FCFS

  - 작업의 요청 순서대로 서비스

  - 구현 쉽고 공평, 응답시간이 길어짐

 

2. SSTF

  - 현재 위치에서 탐색거리가 가장 짧은 요청 먼저 수행

  - FCFS보다 처리량 많고 평균 응답시간 짧은

  - 응답시간 편차 큼

  - 처리량 중심인 일괄처리 시스템에 유용

 

3. SCAN

  - 진행방향상 가장 가까운 곳 요청부터 수행

  - 부하 적을 때 사용

  - 가장 바깥쪽 찍을 때 까지 진행방향 변경 x

  - SSTF보다 낮은 편차

 

4. C-SCAN

  - 한쪽 헤드방햐으로 헤드를 이용하며 서비스, 끝에 도달시 처음부터 진행

  - 부하 많을 때 사용

  - 응답시간 편차 적음

 

5. N-Step Scan

  - SCAN 알고리즘에서 방향 전환시 먼저 요구한 N개의 요청만 서비스

  - 헤더가 있는 실린더에 요청이 집중 시 발생하는 무한대기 제거

 

6. SLTF

  - 회전시간의 최적화

  - 섹터큐잉(회전시간 최적화)

 

반응형