[정보처리기사 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 | 프로그램 사용 시 기본적으로 지원되는 언어 |
메일을 보관하는 경로 | |
$PATH | 실행 파일을 찾는 경로 |
$PS1 | 쉘 프롬프트 정보 |
$PWD | 현재 작업하는 디렉토리 |
$TERM | 로긴 터미널 타입 |
$USER | 사용자의 이름 |
운영체제 기본 명령어
개요
🚩 운영체제를 제어하는 방법은 크게 CLI와 GUI로 구분할 수 있음
🚩 Windows 기본 CLI 명령어
DIR | 파일 목록 표시 |
COPY | 파일 복사 |
TYPE | 파일 내용 표시 |
REN | 파일 이름 변경 |
DEL | 파일 삭제 |
MD | 디렉토리 생성 |
CD | 디렉토리 위치 변경 |
CLS | 화면 내용 삭제(커맨드 명령어 창 Clear) |
ATTRIB | 파일 속성 변경 |
FIND | 파일 찾기 |
CHKDSK | 디스크 상태 점검 |
FORMAT | 디스크 표면을 트랙과 섹터로 나누어 초기화 |
MOVE | 파일 이동 |
'2021 정보처리기사 > 4과목: 프로그래밍 언어 활용' 카테고리의 다른 글
[정보처리기사 4과목] 응용 SW 기초 기술 활용(4) (0) | 2021.05.09 |
---|---|
[정보처리기사 4과목] 응용 SW 기초 기술 활용(2) (2) | 2021.05.08 |
[정보처리기사 4과목] 응용 SW 기초 기술 활용(1) (0) | 2021.05.07 |
[정보처리기사 4과목] 프로그래밍 언어 활용(4) (0) | 2021.05.05 |
[정보처리기사 4과목] 프로그래밍 언어 활용(3) (0) | 2021.05.04 |