본문 바로가기

2021 정보처리기사/4과목: 프로그래밍 언어 활용

[정보처리기사 4과목] 응용 SW 기초 기술 활용(3)

728x90
반응형

 

[정보처리기사 4과목 필기 예상 키워드] 목록으로 돌아가기
과목: 4. 프로그래밍 언어 활용
챕터: 3장 응용 SW 기초 기술 활용(3)
키워드: 프로세스
 #프로세스
#스케줄링 알고리즘
#환경 변수
#운영체제 기본 명령어

 

프로세스

개요

🚩 프로세서(CPU)에 의해 처리되는 실행중인 프로그램을 의미하며 작업(Job), 태스크(Task)라고도 한다

🚩 프로세스는 다음과 같이 여러 형태로 정의할 수 있다.

 

- PCB를 가진 프로그램

- 실기억장치에 저장된 프로그램

- 프로세서가 하당되는 실체로서, 디스패치가 가능한 단위

- 프로시저가 활동중인 것

- 비동기적 행위를 일으키는 주체

- 지정된 결과를 얻기 위한 일련의 계통적 동작

- 목적 또는 결과에 따라 발생되는 사건들의 과정

- 운영체제가 관리하는 실행 단위

 

 

 

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

🚩 PCB는 OS가 프로세스에 대한 중요한 정보를 저장해 놓는 곳

🚩 Task Control Block 또는 Job Control Block이라고도 함

🚩 각 프로세스가 생성될 때마다 고유의 PCB가 생성(공유X)되고, 프로세스가 완료되면 제거된다

🚩 PCB에 저장되는 정보는 다음과 같다

 

- 프로세스의 현재 상태

- 포인터

- 프로세스 고유 식별자

- 스케쥴링 및 프로세스의 우선순위

- CPU 레지스터 정보

- 주기억장치 관리 정보

- 입출력 상태 정보

- 계정 정보

 

 

프로세스 상태 전이

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

 

✔ 제출(Submit): 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태

 

✔ 접수(Hold): 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태

 

✔ 준비(Ready): 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태

>> 준비상태 큐에서 실행 준비중

>> 접수 -> 준비로의 전이는 Job 스케쥴러에 의해 수행

 

✔ 실행(Run): 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태

>> 실행중인 프로세스에 입출력(I/O) 처리가 필요하면 실행중인 프로세스는 대기상태로 전이된다

 

✔ 대기(Wait), 보류/블록(Block): 입/출력 처리가 완료될 때까지 대기하고 있는 상태

 

✔ 종료(Terminated, Exit): 프로세스 실행이 끝나고 할당이 해제된 상태

 

 

❗ Dispatch: 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정

❗ Wake Up: 입/출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이 되는 과정

❗ Spooling: 입/출력장치 처리속도를 보완하고, 다중 프로그래밍 시스템 성능을 향상하기 위해 입출력할 데이터를 직접 보내지 않고 나중에 한꺼번에 입/출력 하기 위해 디스크에 저장하는 과정

 

 

스레드(Thread)

🚩 독립적 스케쥴링의 최소 단위로서 프로세스의 역할을 담당ㅎ안다

🚩 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위

🚩 하나의 프로세스, 하나의 스레드 = 단일 스레드

🚩 하나의 프로세스, 하나 이상의 스레드 = 다중 스레드

🚩 프로세스의 일부 특성을 갖고 있기 때문에 경량(Light Weight) 프로세스라고도 함

🚩 스레드 사용의 장점은 다음과 같다

 

- 하나의 프로세스를 여러 개의 스레드로 생성, 병행성 증진

- 하드웨어, OS 성능과 응용 프로그램 처리율 향상

- 응용 프로그램의 응답 시간(Response Time) 단축 가능

- 실행 환경을 공유시켜 기억장소 낭비 감소

- 프로세스들 간의 통신 향상

- 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신

 

 

스케줄링

개요

🚩 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업

🚩 CPU 자원을 효율적으로 사용하기 위한 정책이다

🚩 CPU 이용률, 처리율, 반환시간, 대기시간, 응답시간은 스케줄러 성능을 비교하는 기준이 된다

 

장기 스케줄링 - 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
- =Job Scheduling, 상위 스케줄링이라고도 하며 작업 스케줄러에 의해 수행
중기 스케줄링 - 어떤 프로세스가 CPU를 할당받을지 결정하는 작업
- CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화하여 일시적으로 부하 조절
단기 스케줄링 - CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미
- 프로세서 스케줄링(Processer Scheduling), 하위 스케줄링이라고도 함
- 프로세서 스케줄링 및 *문맥 교환은 프로세서 스케줄러에 의해 수행

 

*** 문맥교환 (Context Swtiching) ***

하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것으로, 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업

 

목적

✔ 공정성: 모든 프로세스에 공정하게 할당

 

✔ 처리율(량) 증가: 단위 시간 당 프로세스를 처리하는 비율(양)을 증가

 

✔ CPU 이용률 증가:

다양한 원인에 의해 발생할 수 있는 CPU 낭비 시간을 줄이고, 순수하게 프로세스를 실행하는 데 사용되는 시간 비율을 증가

 

✔ 우선순위 제도: 우선순위가 높은 프로세스를 먼저 실행

 

✔ 오버헤드 최소화

 

✔ 응답시간(Response Time) 최소화: 작업을 지시하고 반응하기 시작하는 시간을 최소화

 

✔ 반환시간(Turn Around Time) 최소화: 프로세스를 제출한 시간부터 실행이 완료될 때 까지 걸리는 시간을 최소화

 

✔ 대기시간 최소화: 프로세스가 준비상태 큐에서 대기하는 시간을 최소화

 

✔ 균형 있는 자원의 사용: 메모리 입/출력장치 등의 자원을 균형있게 사용

 

✔ 무한 연기 회피: 자원을 사용하기 위해 무한정 연기되는 상태를 회피

 

 

 

프로세스 스케줄링 기법

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

 

- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

- CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용

- 모든 프로세스에 대한 요구를 공정하게 처리

- 프로세스 응답 시간의 예측이 용이, 일괄 처리 방식에 적합

- 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있음

- FCFS, SJF, 우선순위,HRN, 기한부 등의 알고리즘이 있음

 

 

🚩 선점(Preemptive) 스케줄링

 

- 이미 할당된 CPU를 우선순위가 높은 다른 프로세스가 강제로 빼앗아 사용할 수 있는 스케줄링 기법

- 우선순위가 높은 프로세스를 빠르게 처리할 수 있음

- 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용

- 많은 오버헤드(Overhead)를 초래함

- 선점이 가능하도록 일정 시간 배당에 대한 *인터럽트용 타이머 클록(Clock)이 필요함

- Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있음

 


*** 인터럽트용 타이머 클록***

하나의 시스템 내에서 동작하는 장치들을 감시하기 위해 주기적 신호를 발생하는 것으로, 하나의 프로세스가 자원을 독점하지 못하도록 방지하기 위해 사용됨

 

 

주요 스케줄링 알고리즘

🚩 FCFS(First Come First Service, 선입선출) = FIFO(First In First Out)

>> 준비상태 큐(대기 큐, 준비 완료 리스트, 작업준비 큐, 스케줄링 큐)에 도착한 순서에 따라 차례로 CPU를 할당하는 기법

>> 먼저 도착한 것이 먼저 처리되어 공평성 유지되지만 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다리게 됨

 

 

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

>> 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법

>> 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘

>> 실행 시간이 긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태 발생 가능

 

 

🚩 HRN(Highest Response-ratio Next)

>> 실행시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로, 대기 시간과 서비스(실행) 시간을 이용하는 기법

>> 우선순위를 계산하여 그 숫자가 가장 높은 것 부터 낮은 것 순으로 우선순위가 부여된다

>> 우선순위 계산식: (대기시간+서비스(실행)시간) / 서비스(실행)시간

 

 

 

환경 변수

개요

🚩 환경 변수(Environment Variable)란, 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미

 

- 환경 변수는 변수명과 값으로 구성

- 환경 변수는 시스템의 기본 정보를 저장

- 자식 프로세스에 삭송된다

- 시스템 전반에 걸쳐 적용되는 시스템 환경변수와 사용자 계정 내에서만 적용되는 사용자 환경 변수로 구분된다

 

 

Windows의 주요 환경 변수

🚩 Windows에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞뒤에 %를 입력해야 한다

🚩 set을 입력하면 모든 환경 변수와 값을 출력한다

 

%ALLUSERPROFILE%  모든 사용자의 프로필이 저장된 폴더
%APPDATA%  설치된 프로그램의 필요 데이터가 저장된 폴더
%ComSpec%  기본 명령 프롬프트로 사용할 프로그램명
%HOMEDRIVE%  로그인한 계정의 정보가 저장된 드라이브
%HOMEPATH%  로그인한 계정의 기본 폴더
%LOGONSERVER%  로그인한 계정이 접속한 서버명
%PATH%  실행 파일을 찾는 경로
%PATHEXT%  cmd에서 실행할 수 있는 파일의 확장자 목록
%PROGRAMFILES%  기본 프로그램의 설치 폴더
%SYSTEMDRIVE%  Windows가 부팅된 드라이브
%SYSTEMROOT%  부팅된 OS가 들어있는 폴더
%TEMP% 또는 %TMP%  임시 파일이 저장되는 폴더
%USERDOMAIN%  로그인한 시스템의 도메인명
%USERNAME%  로그인한 계정 이름
%USERPROFILE%  로그인한 유저의 프로필이 저장된 폴더명

 

UNIX / LINUX의 주요 환경 변수

🚩 UNIX나 LINUX 에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞에 $를 입력해야 함

🚩 set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시

$DISPLAY  현재 X 윈도 디스플레이 위치
$HOME  사용자 홈 디렉토리
$LANG  프로그램 사용 시 기본적으로 지원되는 언어
$MAIL  메일을 보관하는 경로
$PATH  실행 파일을 찾는 경로
$PS1  쉘 프롬프트 정보
$PWD  현재 작업하는 디렉토리
$TERM  로긴 터미널 타입
$USER  사용자의 이름

 

 

 

운영체제 기본 명령어

개요

🚩 운영체제를 제어하는 방법은 크게 CLI와 GUI로 구분할 수 있음

🚩 Windows 기본 CLI 명령어

DIR 파일 목록 표시
COPY 파일 복사
TYPE 파일 내용 표시
REN 파일 이름 변경
DEL 파일 삭제
MD 디렉토리 생성
CD 디렉토리 위치 변경
CLS 화면 내용 삭제(커맨드 명령어 창 Clear)
ATTRIB 파일 속성 변경
FIND 파일 찾기
CHKDSK 디스크 상태 점검
FORMAT 디스크 표면을 트랙과 섹터로 나누어 초기화
MOVE 파일 이동

 

 

 

 

728x90