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

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

169. 가상기억장치 기타 관리 사항

169.1 페이지 크기

페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다름
분류 내용
페이지 크기가 작을 경우 - 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동시키는 시간이 줄어듦
- 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지할 수 있음
- 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐
- 디스크 접근 횟수가 많아져서 전체적인 입·출력 시간은 늘어남
페이지 크기가 클 경우 - 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라짐
- 디스크 접근 횟수가 줄어들어 전체적인 입·출력의 효율성이 증가
- 페이지 단편화가 증가되고, 한 개의 페이지를 주기억장치로 이동시키는 시간이 늘어남

169.2 Locality(국부성, 지역성, 구역성, 국소성)

프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
  • 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 됨
  • 가상기억장치 관리와 캐시 메모리 시스템의 이론적인 근거
  • 데닝(Denning) 교수에 의해 Locality의 개념이 증명됨
  • Locality의 종류
종류 내용
시간 구역성
(Temporal Locality)
프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
공간 구역성
(Spatial Locality)
프로세스 실행 식 일정 위치의 페이지를 집중적으로 액세스하는 현상
  • 시간 구역성/공간 구역성 : 시간 구역성은 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미하고, 공간 구역성은 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미

169.3 워킹 셋(Working Set)

프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
  • 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용
  • 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정

169.4 스래싱(Thrashing)

프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
  • 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중에 자주 페이지 부재(Page Fault)가 발생함으로써 나타나며, 전체 시스템의 성능이 저하
  • 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소


170. 프로세스의 개요

170.1 프로세스(Process)

일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미
  • 프로세스는 다음과 같이 여러 가지로 정의할 수 있음
    • PCB를 가진 프로그램
    • 실기억장치에 저장된 프로그램
    • 프로세서가 할당되는 실체로써, 디스패치가 가능한 단위
    • 프로시저가 활동중인 것
    • 비동기적 행위를 일으키는 주체
    • 지정된 결과를 얻기 위한 일련의 계통적 동작
    • 목적 또는 결과에 따라 발생되는 사건들의 과정
    • 운영체제가 관리하는 실행 단위
  • 프로시저 : 한 프로그램은 여러 개의 작은 프로그램으로 분할될 수 있는데, 이때 분할된 작은 프로그램을 의미하며 부프로그램이라고도 함
  • 비동기적 행위 : 다수의 프로세스가 서로 규칙적이거나 연속적이지 않고 독립적으로 실행되는 것을 말함

170.2 PCB(Process Control Block, 프로세스 제어 블록)

운영체제가 프로세스에 대한 중요한 정보를 저장해놓는 곳
  • 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨
  • PCB에 저장되어 있는 정보
    • 프로세스의 현재 상태
    • 포인터
    • 프로세스 고유 식별자
    • 스케줄링 및 프로세스의 우선순위
    • CPU 레지스터 정보
    • 주기억장치 관리 정보
    • 입·출력 상태 정보
    • 계정 정보

170.3 프로세스 상태 전이

프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미
  • 프로세스의 상태는 다음과 같이 상태 전이도로 표시할 수 있음

상태 내용
제출
(Submit)
작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수
(Hold)
제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
준비
(Ready)
프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
실행
(Run)
준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
대기(Wait),
블록(Block)
프로세스에 입·출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입·출력 처리가 완료될 때까지 대기하고 있는 상태
종료
(Terminated, Exit)
프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

170.4 프로세스 상태 전이 관련 용어

용어 내용
Dispatch 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up 입·출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling 입·출력 장치의 공유 및 입·출력 장치의 상대적으로 느린 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입·출력할 데이터를 직접 입·출력 장치에 보내지 않고 나중에 한꺼번에 입·출력하기 위해 디스크에 저장하는 과정
교통량 제어기
(Traffic Controller)
프로세스의 상태에 대한 조사와 통보 담당

170.5 스레드(Thread)

시스템의 여러 자원을 할당받아 실행하는 프로그램의 또는 프로세스 내에서의 작업 단위로 사용
  • 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 함
  • 프로세스의 일부 특성을 갖고 있기 때문에 경량(Ligth Weight) 프로세스라고도 함
  • 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로써 프로세스의 역할을 담당함

171. 스케줄링

171.1 스케줄링(Scheduling)

프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미
  • 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 됨
  • 스케줄링의 종류
종류 내용
장기 스케줄링 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
중기 스케줄링 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
단기 스케줄링 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업

171.2 스케줄링의 목적

목적 내용
공정성 모든 프로세스에 공정하게 할당
처리율 증가 단위 시간당 프로세스를 처리하는 비율을 증가시킴
CPU 이용률 증가 CPU가 순수하게 프로세스를 실행하는 데 사용되는 시간 비율을 증가시킴
우선순위 제도 우선순위가 높은 프로세스를 먼저 실행
오버헤드 최소화 오버헤드를 최소화함
응답 시간 최소화 작업을 지시하고, 반응하기 시작하는 시간을 최소화
반환 시간 최소화 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간을 최소화
대기 시간 최소화 프로세스가 준비상태 큐에서 대기하는 시간을 최소화
균형 있는 자원의 사용 메모리, 입·출력장치 등의 자원을 균형 있게 사용
무한 연기 회피 자원을 사용하기 위해 무한정 연기되는 상태를 회피

171.3 비선점(Non-Preemptive) 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
  • 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용함
  • 프로세스 응답시간의 예측이 용이
  • 일괄 처리 방식에 적합
  • 종류 : FCFS, SJF, 우선순위, HRN, 기한부 등

171.4 선점(Preemptive) 스케줄링

하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
  • 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
  • 주로 빠른 응답 시간을 요구하는 대화식시분할 시스템에 사용됨
  • 많은 오버헤드(Overhead)를 초래
  • 종류 : Round Robinm SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등

172. 주요 알고리즘 스케줄링

172.1 FCFS(First Come First Service, 선입 선출) = FIFO

준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
  • 가장 간단한 알고리즘

172.1.1 예제

  • 다음과 같은 프로세스들이 차례로 준비상태 큐에 들어왔다고 가정할 때, FCFS 기법을 이용하여 평균 실행 시간, 평균 대기 시간, 평균 반환 시간을 구하라
프로세스 번호 실행 시간
P1 20
P2 4
P3 6
  1. 실행 시간을 이용하여 다음과 같이 각 프로세스의 대기 시간과 반환 시간을 구함
    • 대기 시간 : 프로세스가 대기한 시간으로, 바로 앞 프로세스까지의 진행 시간으로 계산
    • 반환 시간 : 프로세스의 대기 시간과 실행 시간의 합
  2. 실행 시간, 대기 시간, 반환 시간의 평균은 '각 프로세스 시간의 합/프로세스의 개수'를 이용

  • 평균 실행 시간 : (20+4+6)/3=10
  • 평균 대기 시간 : (0+20+24)/3=14.6
  • 평균 반환 시간 : (20+24+30)/3=24.6

172.2 SJF(Shortest Job First, 단기 작업 우선)

준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법
  • 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘

172.2.1 예제

  • 다음과 같은 프로세스들이 차례로 준비상태 큐에 들어왔다고 가정할 때, SJF 기법을 이용하여 평균 실행 시간, 평균 대기 시간, 평균 반환 시간을 구하라
프로세스 번호 실행 시간
P1 20
P2 4
P3 6
  1. 아래와 같이 실행 시간이 짧은 프로세스를 먼저 처리하도록 이동시킨 후 각 프로세스의 대기 시간과 반환 시간을 구함
  2. 실행 시간, 대기 시간, 반환 시간, 각 시간의 평균은 FCFS의 예제와 동일한 방법으로 구함

  • 평균 실행 시간 : (4+6+20)/3=10
  • 평균 대기 시간 : (0+4+10)/3=4.6
  • 평균 반환 시간 : (4+10+30)/3=14.6

172.3 HRN(Highest Response-ratio Next)

대기 시간과 서비스(실행) 시간을 이용하는 기법
  • 실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것
  • 우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위가 부여
  • 우선순위 계산식 = (대기 시간+서비스 시간)/서비스 시간

172.3.1 예제

  • 다음과 같은 프로세스가 HRN 기법으로 스케줄링될 때 우선순위를 계산하라


173. 환경 변수

173.1 환경 변수(Environment Variable)

시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미
  • 환경 변수는 변수명과 값으로 구성
  • 환경 변수는 시스템의 기본 정보를 저장
  • 환경 변수는 자식 프로세스에 상속
  • 환경 변수는 시스템 전반에 걸쳐 적용되는 시스템 환경 변수와 계정 내에서만 적용되는 사용자 환경 변수로 구분

173.2 Windows의 주요 환경 변수

Windows에서 환경 변수를 명령이나 스크립트에서 사용하려면 변수명 앞뒤에 '%'를 입력해야 함
  • Windows에서 set을 입력하면 모든 환경 변수와 값을 출력
환경 변수 용도
%ALLUSERSPROFILE% 모든 사용자의 프로필이 저장된 폴더
%APPDATA% 설치된 프로그램의 필요 데이터가 저장된 폴더
%COMSPEC% 기본 명령 프롬프트로 사용할 프로그램명
%HOMEDRIVE% 로그인한 계정의 정보가 저장된 드라이브
%HOMEPATH% 로그인한 계정의 기본 폴더
%LOGONSERVER% 로그인한 계정이 접속한 서버명
%PATH% 실행 파일을 찾는 경로
%PATHEXT% cmd에서 실행할 수 있는 파일의 확장자 목록
%PROGRAMFILES% 기본 프로그램의 설치 폴더
%SYSTEMDRIVE% Windows가 부팅된 드라이브
%SYSTEMROOT% 부팅된 운영체제가 들어 있는 폴더
%TEMP% 또는 %TMP% 임시 파일이 저장되는 폴더
%USERDOMAIN% 로그인한 시스템의 도메인명
%USERNAME% 로그인한 계정 이름
%USERPROFILE% 로그인한 유저의 프로필이 저장된 폴더명

173.3 UNIX / Linux의 주요 환경 변수

UNIX나 Linux에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞에 '$'를 입력해야 함
  • UNIX나 Linux에서는 set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시
환경 변수 용도
$DISPLAY 현재 X 윈도 디스플레이 위치
$HOME 사용자의 홈 디렉터리
$LANG 프로그램 사용 시 기본적으로 지원되는 언어
$MAIL 메일을 보관하는 경로
$PATH 실행 파일을 찾는 경로
$PS1 쉘 프롬프트 정보
$PWD 현재 작업하는 디렉터리
$TERM 로긴 터미널 타입
$USER 사용자의 이름
  • X 윈도 : UNIX 계열의 운영체제에서 사용되는 GUI 기반의 시스템 소프트웨어

174. 운영체제 기본 명령어

174.1 Windows 기본 명령어

명령어 기능
DIR - 현재 디렉터리의 파일 목록을 표시
- 예) dir : 현재 디렉터리의 파일 목록을 표시
COPY - 파일을 복사
- 예) copy abc.txt gilbut : abc.txt 파일을 gilbut 디렉터리로 복사
DEL - 파일을 삭제
- 예) del abc.txt : abc.txt 파일을 삭제
TYPE - 파일의 내용을 표시
- 예) type abc.txt : abc.txt 파일의 내용을 표시
REN - 파일의 이름을 변경
- 예) ren abc.txt 123.txt : abc.txt 파일의 이름을 123.txt로 변경
MD - 디렉터리를 생성
- 예) md gilbut : gilbut 디렉터리를 생성
CD - 동일한 드라이브에서 디렉터리의 위치를 변경
- 예) cd gilbut : 디렉터리의 위치를 gilbut으로 변경
CLS - 화면의 내용을 지움
- 예) cls : 화면에 표시되어 있는 모든 내용을 지움
ATTRIB - 파일의 속성을 변경
- 예) attrib +r abc.txt : abc.txt의 파일 속성을 읽기 전용으로 변경
FIND - 파일에서 문자열을 찾음
- 예) find "123" abc.txt : abc.txt에서 "123"이 포함된 문자열을 찾음
CHKDSK - 디스크 상태를 점검
- 예) chkdsk : 현재 드라이브의 상태를 점검
FORMAT - 디스크 표면을 트랙과 섹터로 나누어 초기화
- 예) format c: : c드라이브를 초기화
MOVE - 파일을 이동
- 예) move abc.txt gilbut : abc.txt 파일을 gilbut 디렉터리로 이동
  • DIR의 옵션
    • /P : 목록을 한 화면 단위로 표시
    • /W : 목록을 가로로 나열하여 표시
    • /O : 지정한 정렬 방식으로 파일 목록 표시
      • D : 날짜/시간
      • E : 확장자
      • N : 파일 이름
      • S : 파일 크기
    • /S : 하위 디렉터리의 정보까지 표시
    • /A : 지정한 속성이 설정된 파일 목록 표시
  • 속성의 종류
    • R : 읽기 전용 속성
    • A : 저장/백업 속성
    • S : 시스템 파일 속성
    • H : 숨김 파일
    • 속성을 지정할 때는 속성 앞에 +를, 해제할 때는 속성 앞에 - 입력

174.2 UNIX / Linux 기본 명령어

명령어 기능
cat - 파일 내용을 화면에 표시
- 예) cat abc.txt : 현abc.txt 파일 내용을 화면에 표시
cd - 디렉터리의 위치를 변경
- 예) cd gilbut : gilbut 디렉터리로 이동
chmod - 파일의 보호 모드를 설정하여 파일의 사용 허가를 지정
- 예) chmod u=rwx abc.txt : user(u)에게 abc.txt 파일의 읽기(r), 쓰기(w), 실행(x) 권한을 부여(=)
chown - 파일의 소유자와 그룹을 변경
- 예) chown member1 abc.txt : abc.txt 파일의 소유자를 member1로 변경
cp - 파일을 복사
- 예) cp abc.txt gilbut/abc2.txt : abc.txt 파일을 gilbut 디렉터리에 abc2.txt로 이름을 변경하여 복사
rm - 파일을 삭제
- 예) rm abc.txt : abc.txt 파일을 삭제
find - 파일을 찾음
- 예) find abc.txt : abc.txt 파일을 찾음
fsck - 파일 시스템을 검사하고 보수
- 예) fsck /dev/sda1 : /dev/sda1에 기록된 모든 파일 시스템을 검사하고 보수
kill - PID(프로세스 고유 번호)를 이용하여 프로세스를 종료
- 예) kill 1234 : PID가 1234인 프로세스를 종료
fork - 새로운 프로세스를 생성
- 예) fork() : 새로운 프로세스를 생성
killall - 프로세스의 이름을 이용하여 프로세스를 종료
- 예) killall gilbut : 프로세스 이름이 gilbut인 모든 프로세스를 종료
ls - 현재 디렉터리의 파일 목록을 표시
- 예) ls : 현재 디렉터리의 파일 목록을 표시
mkdir - 디렉터리를 생성
- 예) mkdir gilbut : gilbut 디렉터리를 생성
rmdir - 디렉터리를 삭제
- 예) rmdir gilbut : gilbut 디렉터리를 삭제
mv - 파일을 이동
- 예) mv abc.txt gilbut/abc2.txt : abc.txt 파일을 gilbut 디렉터리에 abc2.txt로 이름을 변경하여 이동
ps - 현재 실행중인 프로세스를 표시
- 예) ps : 현재 실행중인 프로세스를 표시
pwd - 현재 작업중인 디렉터리 경로를 화면에 표시
- 예) pwd : 현재 작업중인 디렉터리 경로를 화면에 표시
top - 시스템의 프로세스와 메모리 사용 현황을 표시
- 예) top : 시스템의 프로세스와 메모리 사용 현황을 표시
who - 현재 시스템에 접속해 있는 사용자를 표시
- 예) who : 현재 시스템에 접속해 있는 사용자를 표시

174.2.1 예제

UNIX 기반 시스템에서 'batch.sh' 파일에 대한 소유자와 그룹에게는 전체 권한, 기타 사용자에게는 읽기와 실행 권한만 부여하는 명령문을 8진법 숫자를 이용하여 작성하라
  1. rwx rwx r-x
  2. 111 111 101(2진수로 변환)
  3. 7 7 5(8진수로 변환)
  4. chmod 775 batch.sh