정보처리기사 - 응용 소프트웨어 기초 기술 활용 #163~168

2023. 8. 19. 14:19자격증/정보처리기사

163. 운영체제의 개념

163.1 운영체제(OS; Operating System)

컴퓨터 시스템의 자우너들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
  • 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종
  • 다른 응용 프로그럄이 유용한 작업을 할 수 있도록 환경을 제공해줌
  • 운영체제는 프로세스, 기억장치, 주변장치, 파일 등을 관리하는 기능을 수행
  • 운영체제의 종류 : Windows, UNIX, Linix, MacOS, MS-DOS 등

163.2 운영체제의 목적

운영체제의 목적에는 처리 능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등이 존재
종류 내용
처리 능력
(Throughput)
일정 시간 내에 시스템이 처리하는 일의 양
반환 시간
(Turn Around Time)
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도
(Availability)
시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도
(Reliability)
시스템이 주어진 문제를 정확하게 해결하는 정도

163.3 운영체제의 기능

프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입·출력장치, 파일 및 정보 등의 자원을 관리
  • 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공
  • 사용자와 시스템 간의 편리한 인터페이스를 제공
  • 시스템의 각종 하드웨어와 네트워크를 관리·제어
  • 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공

164. 운영체제의 종류

164.1 Windows

1990년대 마이크로소프트(Microsoft) 사가 개발한 운영체제
  • Windows의 주요 특징
특징 설명
그래픽 사용자 인터페이스
(GUI; Graphic User Interface)
키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
선점형 멀티태스킹
(Preemptive Multi-Tasking)
동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
PnP
(Plug and Play,
자동 감지 기능)
컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능
OLE
(Object Linking and Embedding)
다른 여러 응용 플고그램에서 작성된 문자나 그림 등의 개체(Object)를 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능
255자의 긴 파일명 \ / * ? " < > |를 제외한 모든 문자 및 공백을 사용하여 최대 255자까지 파일 이름을 지정할 수 있음
Single-User 시스템 컴퓨터 한 대를 한 사람만이 독점해서 사용
  • Single-User 시스템/Multi-User 시스템 : Windows 10과 같은 개인용은 Single-User 시스템, UNIX, Linux, Windows NT와 같은 서버용은 Multi-User 시스템

164.2 UNIX

1960년대 AT&T 벨(Bell) 연구소, MIT, General Electric이 공동 개발한 운영체제
  • 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제
  • 소스가 공개된 개방형 시스템(Open System)
  • 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높음
  • 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원
  • 트리(Tree) 구조의 파일 시스템을 가짐

164.3 UNIX 시스템의 구성

구성요소 설명
커널
(Kernel)
- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당
- UNIX의 가장 핵심적인 부분
- 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입·출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러 가지 기능을 수행

(Shell)
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스를 담당
- 종류 : Bourne Shell, C Shell, Korn Shell
유틸리티 프로그램
(Utility Program)
- 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용
- DOS에서의 외부 명령어에 해당
- 종류 : 에디터, 컴파일러, 인터프리터, 디버거 등

164.4 Linux

1991년 리누스 토발즈(Linus Torvals)가 UNIX를 기반으로 개발한 운영체제
  • 프로그램 소스 코드가 무료로 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가할 수 있음
  • 다양한 플랫폼에 설치되어 사용이 가능하며, 재배포가 가능
  • UNIX와 완벽하게 호환됨
  • 대부분의 특징이 UNIX와 동일함

164.5 MacOS

1980년대 애플(Apple) 사가 UNIX를 기반으로 개발한 운영체제
  • 아이맥(iMac)과 맥북(MacBook) 등 애플 사에서 생산하는 제품에서만 사용이 가능
  • 드라이버 설치 및 install과 uninstall의 과정이 단순

164.6 Android

구글(Google) 사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
  • 모든 코드가 공개된 개방형 소프트웨어
  • 자바와 코틀린으로 애플리케이션을 작성
  • 스마트폰 등의 휴대용 장치에서 주로 사용

164.7 iOS

애플(Apple) 사에서 개발한 유닉스 기반의 모바일 운영체제
  • 아이폰, 아이팟 터치, 아이패드 등에 내장
  • 애플사 고유의 모바일 운영체제로 타사 제품은 iOS를 탑재할 수 없음

165. 기억장치 관리

165.1 기억장치의 관리 전략

보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용시키기 위한 것
  • 종류
    • 반입(Fetch) 전략
    • 배치(Placement) 전략
    • 교체(Replacement) 전략

165.2 반입(Fetch) 전략

보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
기법 내용
요구 반입
(Demand Fetch)
실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
예상 반입
(Anticipatory Fetch)
실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법

165.3 배치(Placement) 전략

새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬지를 결정하는 전략
기법 내용
최초 적합
(First Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 적합
(Best Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가작 작게 남기는 분할 영역에 배치시키는 방법
최악 적합
(Worst Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
  • 단편화 : 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간을 의미

164.3.1 예제

영역 번호 영역 크기 상태
1 5K 공백
2 14K 공백
3 10K 사용 중
4 12K 공백
5 16K 공백
  • 기억장치 상태는 위의 표와 같음. 기억장치 관리 전략으로 First Fit, Best Fit, Worst Fit 방법을 사용하려 할 때, 각 방법에 대하여 10K의 프로그램이 할당받게 되는 영역의 번호는?
  1. 먼저 10K가 적재될 수 있는지 각 영역의 크기를 확인
  2. First Fit : 빈 영역 중에서 10K의 프로그램이 들어갈 수 있는 첫 번째 영역은 2번
  3. Best Fit : 빈 영역 중에서 10K의 프로그램이 들어가고 단편화를 가장 작게 남기는 영역은 4번
  4. Worst Fit : 빈 영역 중에서 10K의 프로그램이 들어가고 단편화를 가장 많이 남기는 영역은 5번

165.4 교체(Replacement) 전략

주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
  • 종류 : FIFO, OPT, LRU, LFU, NUR, SCR 등

166. 주기억장치 할당 기법

166.1 주기억장치 할당

프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
  • 주기억장치 할당 기법의 분류
분류 내용
연속 할당 기법 - 프로그램을 주기억장치에 연속으로 할당하는 기법
- 종류 : 단일 분할 할당 기법, 다중 분할 할당 기법
분산 할당 기법 - 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
- 종류 : 페이징 기법, 세그먼테이션 기법
  • 분산 할당 기법 : 가상기억장치의 내용을 주기억장치에 할당하기 위한 기법

166.2 단일 분할 할당 기법

주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
  • 가장 단순한 기법으로 초기의 운영체제에서 많이 사용하던 기법
  • 운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용됨
  • 프로그램의 크기가 작을 경우 사용자 영역이 낭비될 수 있음
종류 내용
오버레이(Overlay) 기법 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
스와핑(Swapping) 기법 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
  • 경계 레지스터(Boundary Register) : 사용자 영역에 있는 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 보호하느 레지스터
    • 사용자 영역이 시작되는 주소를 알고 있음

166.3 다중 분할 할당 기법

종류 내용
고정 분할 할당 기법
(정적 할당 기법)
프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법
가변 분할 할당 기법
(동적 할당 기법)
- 주기억장치를 미리 분할해 놓치 않고 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법
- 고정 분할 할당 기법의 단편화를 줄이기 위해 사용

167. 가상기억장치 구현 기법

167.1 가상기억장치(Virtual Memory)

보조기억장치의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법
  • 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리
  • 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있음
  • 블록 단위로 나누어 사용하므로 연속 할당 방식에서 사용할 수 있는 단편화를 해결할 수 있음
  • 가상기억장치의 일반적인 구현 방법 : 페이징 기법, 세그먼테이션 기법
  • 블록 : 보조기억장치와 주기억장치 간에 전송되는 데이터의 최소 단위

167.2 페이징(Paging) 기법

가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법
  • 페이지(Page) : 프로그램을 일정한 크기로 나눈 단위
  • 페이지의 크기 : 일반적으로 1~4KB
  • 페이지 프레임(Page Frame) : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
  • 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있음
    • 페이지 크기가 4KB이고 사용할 프로그램이 17KB이면 마지막 페이지의 실제 용량은 1KB가 되므로 3KB의 내부 단편화가 발생
  • 주소 변환을 위해서는 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요
  • 주소 변환 : 가상기억장치에 있는 프로그램이 주기억장치에 적재되어 실행될 때 논리적인 가상주소를 물리적인 실기억주소로 변환하는 것
  • 페이지 맵 테이블 사용으로 비용이 증가하고, 처리 속도가 감소

167.3 세그먼테이션(Segmentation) 기법

가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행하는 기법
  • 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 가짐
  • 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위함임
  • 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요
  • 내부 단편화는 발생하지 않으나 외부 단일화는 발생할 수 있음

168. 페이지 교체 알고리즘

168.1 페이지 교체 알고리즘

페이지 부재(Page Fault)가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법이 페이지 교체 알고리즘
  • 페이지 부재(Page Fault) : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우를 말함
  • 종류 : OPT, FIFO, LRU, LFU, NUR, SCR 등

168.2 OPT(OPTimal replacement, 최적 교체)

앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
  • 벨레이디(Belady)가 제안
  • 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

168.3 FIFO(First In First Out)

각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 잊었던 페이지를 교체하는 기법
  • 이해하기 쉽고, 프로그래밍 및 설계가 간단

168.3.1 예제

  • 다음의 참조 페이지를 세 개의 페이지 프레임을 가진 기억장치에서 FIFO 알고리즘을 사용하여 교체했을 때 페이지 부재의 수는?

  1. 참조 페이지를 각 페이지 프레임에 차례로 적재시키되 이미 적재된 페이지는 해당 위치의 프레임을 사용
  2. 사용할 페이지 프레임이 없을 경우 가장 먼저 들어와서 오래 있었던 페이지 2를 제거한 후 5를 적재
  3. 그 다음에 적재된 페이지 3을 제거한 후 2를 적재하며, 같은 방법으로 나머지 참조 페이지를 수행

168.4 LRU(Least Recently Used)

최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
  • 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래전에 사용된 페이지를 교체
  • 계수기(Counter) : 각 페이지별로 존재하는 논리적 시계(Logical Clock)로, 해당 페이지가 사용될 때마다 0으로 클리어 시킨 후 시간을 증가시켜서 시간이 가장 오래된 페이지를 교체

168.4.1 예제

  • 다음의 참조 페이지를 세 개의 페이지 프레임을 가진 기억장치에서 LRU 알고리즘을 사용하여 교체했을 때 페이지 부재의 수는?

  1. 참조 페이지를 각 페이지 프레임에 차례로 적재시키되 이미 적재된 페이지는 해당 위치의 프레임을 사용
  2. 사용할 페이지 프레임이 없을 경우 현재 시점에서 가장 오랫동안 사용되지 않은 페이지 3을 제거한 후 5를 적재
  3. 같은 방법으로 나머지 참조 페이지를 수행

168.5 LFU(Least Frequently Used)

사용 빈도가 가장 적은 페이지를 교체하는 기법
  • 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용됨

168.6 NUR(Not Used Recently)

LRU와 비슷한 알고리즘으로, 최근에 사용되지 않은 페이지를 교체하는 기법
  • 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있음
  • 최근의 사용 여부를 판단하기 위해서 각 페이지마다 두 개의 비트, 즉 참조 비트(Reference Bit)와 변형 비트(Modified Bit, Dirty Bit)가 사용됨
  • 참조 비트(Reference Bit) : 페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1로 지정
  • 변형 비트(Modified Bit, Dirty Bit) : 페이지 내용이 변경되지 않았을 때는 0, 변경되었을 때는 1로 지정
  • 다음과 같이 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정됨
참조 비트 변형 비트 교체 순서
0 0 1
0 1 2
1 0 3
1 1 4

168.7 SCR(Second Chance Replacement, 2차 기획 교체)

가장 오랫동안 주기억장치에 있던 페이지 중 자주 교체되는 페이지의 교체를 방지하기 위한 기법
  • FIFO 기법의 단점을 보완하는 데 사용