참고1. 노랑마킹은 시험에 나온 중요한 부분입니다.
참고2. 주황강조는 약어 혹은 중요한 내용입니다.
참고3. 회색마킹은 예시입니다.
제 4과목 프로그래밍 언어 활용
(1) 운영체제 기초 활용
운영체제(OS; Operating System) [2020년 3회]
- 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어이다.
- 다중 사용자와 다중 운용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링을 담당한다.
- CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리한다.
- 입출력 장치와 사용자 프로그램을 제어한다.
- 운영체제의 종류로는 윈도즈, 리눅스/유닉스, 맥(Mac), 안드로이드(Android)가 있다.
- 운영체제는 크게 인터페이스(쉘)와 커널(Kernel)의 구조이다.
- 운영체제의 핵심 기능들이 커널에 모여있다면, 인터페이스(쉘)는 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.
- 쉘(Shell)은 운영체제의 가장 바깥 부분에 위치해서 사용자 명령에 대한 처리를 담당하는 역할을 한다.
- 커널(Kernel)은 하드웨워와 관련된 내부적인 역할을 담당한다.
운영체제의 특징
사용자 편리성 제공 / 인터페이스 / 스케줄링 / 자원 관리 / 제어 기능
운영체제의 종류
- 윈도즈(Windows)
- 리눅스/유닉스
- 맥(Mac)
- 안드로이드(Android)
운영체제에서의 커널(Kernel)의 기능 [2020년 3회, 4회]
- 프로세스 생성, 종료
- 기억장치 할당, 회수
- 파일 시스템 관리
운영체제의 운용 기법
구분 | 설명 |
실시간 처리 시스템 (Real-Time Processing System) |
데이터 발생 즉시 처리하여 결과를 산출하는 방식이다. 처리시간이 짧고 처리 비용이 낮다. |
시분할 시스템 (Time Sharing System) |
중앙 처리 장치의 시간을 각 사용자에게 균등하게 분할하여 사용하는 체제로서 모든 컴퓨터 사용자에게 똑같은 서비스를 제공하는 것을 목표로 삼고 있으며, 라운드 로빈 스케줄링을 사용한다. |
일괄처리 시스템 (Batch Processing System) |
일정 기간 또는 일정량의 데이터를 모아서 한꺼번에 처리하는 방식이다. 효율이 높고 시스템 자원을 독점하여 CPU 유휴 시간이 줄어든다. 사용자 측면에서는 처리량이 많아 반환 시간이 늦다. |
분산처리 시스템 (Distributed Processing System) |
물리적으로 떨어져 있는 클라이언트나 서버를 데이터베이스 서버와 네트워크로 연결시켜 사용자에게 하나의 시스템인 것처럼 데이터 처리를 가능하게 하는 시스템 |
윈도즈(Windows) 계열 운영체제
- 윈도즈는 Dos 기반에서 개발된 OS로 현재는 사용자가 사용하기 편한 GUI 모드로 제공된다.
- 윈도즈의 OS는 소스가 공개되지 않았으며, 소스가 공개된 OS로는 CentOS가 존재한다.
- 트리 디렉터리 구조를 가진다.
윈도즈(Windows) 계열 운영체제 특징 (지선자 오)
- 그래픽 사용자 인터페이스(GUI) 제공
- 선점형 멀티태스킹 방식 제공
- 자동감지 기능 제공
- OLE(Object Linking and Embedding) 사용
유닉스 계열 운영체제 특징 (대다 사이계)
- 대화식 운영체제 기능 제공
- 다중 작업 기능 제공
- 다중 사용자 기능 제공
- 이식성 제공
- 계층적 트리 구조 파일 시스템 제공
유닉스와 리눅스의 차이점
차이점 항목 | 리눅스 | 유닉스 |
비용 | 대부분 무료, 일부 유료 | 대부분 유료 |
사용자 | 개발자, 일반 사용자 | 메인프레임 및 워크스테이션 등 대형 시스템 관리자 |
배포 | 오픈소스 개발 | 사업자에 의해 배포, 비용 수반됨 |
사용자 편의 | GUI 제공, 파일 시스템 지원, BASH 셀 사용 | 커맨드 기반이 주였으나 GUI도 제공하는 추게, 파일 시스템 제공 |
활용 | 스마트폰, 태블릿 등 다양하게 사용 | 인터넷 서버, 워크스테이션 등 대형 시스템에 주로 사용 |
메모리 관리
메모리 관리 기법 (반배할교)
기법 | 설명 |
반입 기법 | (When) 주기억 장치에 적재할 다음 프로세스의 반입 시기를 결정하는 기법 |
배치 기법 | (Where) 디스크에 있는 프로세스를 주기억 장치의 어느 위치에 저장할 것인지 결정하는 기법 |
할당 기법 | (How) 실행해야 할 프로세스를 주기억 장치에 어떤 방법으로 할당할 것인지 결정하는 기법 |
교체 기법 | (Who) 재배치 기법으로 주기억 장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정하는 기법 |
메모리 배치 기법의 유형 (초적악)
유형 | 설명 |
최초 적합(First Fit) | 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식 |
최적 접합(Best Fit) | 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식 (공백 최소화) |
최악 접합(Worst Fit) | 가용 공간 중에서 가장 큰 공간에 할당하는 방식 |
주기억장치 메모리 할당 기법의 종류 (연단다 분페세)
종류 | 기법 | 설명 |
연속 할당 기법 | 단일 분할 할당 기법 | - |
다중 분할 할당 기법 | - | |
분산 할당 기법 | 페이징 기법 |
가상기억장치 내의 프로세스를 일정하게 분할하여 주기억장치의 분산된 공간에 적재시킨 후 프로세스를 수행시키는 기법 |
실제 공간은 페이지 크기와 같은 페이지 프레임으로 나누어 사용 | ||
세그먼테이션 기법 |
가상기억장치 내의 프로세스를 서로 크기가 다른 논리적 단위인 세그먼트(Segment)로 분할하고 메모리를 할당하는 기법 | |
분할 형태가 배열이나 함수와 같은 논리적인 다양한 크기의 가변적인 크기로 관리 | ||
페이징/세그먼테이션 기법 | 하나의 세그먼트를 정수 배의 부분 페이지로 다시 분할하는 방식 |
메모리 교체 기법 유형
세부 기법 | 설명 |
FIFO (First In First Out) |
가장 먼저 들어와 가장 오래 있던 페이지 교체 (선입선출) |
LRU (Least Recently Used) |
가장 오랫동안 사용되지 않은 페이지 교체 |
LFU (Least Frequently Used) |
참조(사용) 횟수가 가장 적은 페이지 교체 |
OPT (OPTimal Replacement) |
앞으로 가장 오랫동안 사용하지 않을 페이지 교체 |
NUR (Not Used Recently) |
LRU와 비슷한 알고리즘, 최근 사용 여부를 확인하기 위해 페이지마다 참조 비트와 변형 비트 사용 |
SCR (Second Change Replacement) |
FIFO 기번의 단점 보완, 가장 오랫동안 사용되지 않은 페이지 중 자주 사용되는 페이지 교체 방지 |
메모리 단편화 해결방안 (내슬 외버 공통압)
구분 | 해결방안 |
내부 단편화 | Slab Allocator |
외부 단편화 | 버디 메모리 할당, (공통)통합, 압축 |
지역성(Locality)
- 지역성(국부성, 구역성, 국소성)
- 프로세서들은 기억장치 내의 정보를 균일하게 접근하는 것이 아니라, 어느 한 순간에 특정 부분을 집중적으로 참조한다.
- 시간 지역성의 예는 "순환, 부 프로그램, 스택" 등이 있다. [2023년 2회]
- 공간 지역성의 예는 "순차적 코드의 실행"이 있다.
지역성의 유형 (시공순)
시간 지역성 / 공간 지역성 / 순차 지역성
현상 유형
유형 | 설명 |
지역성 (Locality) | 프로세스가 실행되면서 하나의 페이지를 일정시간 동안 집중적으로 액세스 하는 현상 |
스레싱 (Thrashing) | 프로세스의 처리 시간보다 페이지 교체 시간이 더 많아지는 현상 |
워킹 셋 (Working Set) | 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합 |
프리페이징 (Prepaging) | 사용될 페이지라고 예측되어지는 페이지를 미리 적재하는 것 |
프로세스
프로세스 상태의 종류 (생준 실대완) [2020년 1회]
생성(Create) / 준비(Ready) / 실행(Running) / 대기(Waiting) / 완료(Complete) / Exit
프로세스 상태 전이
디스패치(Dispatch) / 할당 시간 초과(Timeout) / 입출력 발생(Block) / 깨움(Wake-up)
프로세스 구성요소
사용자 작성 코드 / 사용자 사용 데이터 / 스택(Stack) / 프로세스 제어 블록(PCB; Process Control Block)
PCB 구성요소 (프상카레 스계입메)
- PID(프로세스 식별자)
- 프로세스 상태
- 프로그램 카운트
- 레지스터 저장 영역
- 프로세서 스케줄링 정보
- 계정 정보
- 입출력 상태 정보
- 메모리 관리 정보
스레드(Thread) [2020년 1회]
- 스레드는 프로세스보다 가벼운, 독립적으로 수행되는 순차적인 제어의 흐름이며, 실행 단위이다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.
- 스레드는 그들이 속한 프로세스의 자원과 메모리를 공유한다.
- 다중 프로세스 구조에서 각 스레드는 다른 프로세스에서 병렬로 실행될 수 있다.
- 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다.
프로세스 스케줄링
프로세스 스케줄링은 CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업이다.
프로세스 스케줄링 유형
선점형 스케줄링(Preemptive Scheduling) / 비선점형 스케줄링(Non Preemptive Scheduling)
선점 스케줄링 알고리즘
유형 | 설명 |
라운드 로빈 (RR; Round Robin) | 시간 할당이 작아지면 프로세스-문맥 교환이 자주 일어난다. |
Time Sharing System을 위해 고안된 방식이다. | |
시간 할당이 커지면 FCFS 스케줄링과 같은 효과를 얻을 수 있다. | |
SRT (Shortest Remaining Time First) |
짧은 수행 시간 프로세스 우선 수행 |
이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 있다.(선점) | |
다단계 큐 (MLQ; Multi Level Queue) | 독립된 스케줄링 큐 |
다단계 피드백 큐 (MFQ; Multi-Level Feedback Queue) | FIFO + RR의 혼합, 마지막 단계는 RR로 처리 |
비선점 스케줄링 알고리즘 (우기 HFS)
우선순위(Priority) / 기한부(Deadline) / HRN(Highest Response Ratio Next) / FCFS(Fist Come First Service) / SJF(Shortest Job First)
알고리즘 유형 | 동작 방식 | 특징 |
우선순위 (Priority) |
각 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당함, 동일 순위는FCFS로 처리 | 주요/긴급 프로세스에 대한 우선처리 |
기한부 (Deadline) |
작업들이 명시된 시간이나 기한 내에 완료되도록 계획 | 요청에 명시된 시간내 처리를 보장 |
FCFS (Fist Come First Service) |
프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당함 | 도착한 순서대로 처리 |
FIFO 알고리즘이라고도 함 | ||
SJF (Shortest Job First) |
프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유 | 기아 현상 발생 가능성 |
HRN (Highest Response Ratio Next) |
대기시간이 긴 프로세스일 경우 우선순위가 높아진다. |
기아 현상 최소화 기법 |
SJF 기법을 보완하기 위한 방식이다. |
||
긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다. |
||
우선순위를 계산하여 그 수치가 가장 높은 것부터 순서대로 우선순위가 부여된다. | ||
HRN 우선순위 계산식 = (대기시간+서비스시간)/서비스시간 |
HRN 기출문제 [2020년 3회]
HRN 방식으로 스케줄링할 경우, 입력된 작업이 다음과 같을 때 처리되는 작업 순서는?
작업 | 대기시간 | 서비스(실행) 시간 |
A | 5 | 20 |
B | 40 | 20 |
C | 15 | 45 |
D | 20 | 2 |
풀이과정: HRN 우선순위 계산식을 활용하여 수치가 가장 높은 순서부터 나열
정답은 D → B → C → A 이다.
작업 | HRN 우선순위 계산식 적용 | 작업 순서 |
A | (5 + 20) / 20 = 1.25 | 4 |
B | (40 + 20) / 20 = 3 | 2 |
C | (15 + 45) / 45 = 1.34 | 3 |
D | (20 + 2) / 2 = 11 | 1 |
프로세스 관리-교착상태
교착상태(Deadlock)
교착상태는 다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태이다.
교착상태 발생 조건 (상점비환) [2020년 1회]
- 상호배제(Mutual Exclusive)
- 점유와 대기(Block & Wait)
- 비선점(Non Preemption)
- 환형 대기(Circular Wait)
교착상태 해결방법 (예회발복) [2020년 1회]
발생 조건 | 세부 기법 |
예방 (Prevention) | 점유 자원 해제 후 새 자원 요청 |
회피 (Avoidance) | 은행가 알고리즘(Banker's Algorithm), Wound-Wait, Wait-Die |
발견 (Detection) | 자원할당 그래프, Wait for Graph |
복구 (Recovery) | 프로세스 Kill, 자원선점 |
환경변수
환경변수(Environment Variable)
환경 변수는 프로세스가 컴퓨터에서 동작하는 방식에 많은 영향을 미치는 동적 값들의 모임이다.
UNIX Shell
- 명령어 해석기이다.
- 시스템과 사용자 간의 인터페이스를 담당한다.
- 여러 종류의 쉘이 있다.
UNIX Shell 환경 변수를 출력하는 명령어 [2020년 3회, 4회]
printenv / env / setenv
쉘 스크립트(Shell Script)
쉘 스크립트는 쉘이나 명령 줄 인터프리터에서 돌아가도록 작성되었거나 운영체제를 위해 사용되는 스크립트이다.
쉘 스크립트 기능
파일 이용 / 프로그램 실행 / 문자열 출력 등
운영체제 기본 명령어
운영체제를 제어하기 위한 방법은 CLI와 GUI가 있다.
방식 | 설명 |
CLI (Command Line Interface) | 사용자가 직접 명령어를 입력, 컴퓨터에게 명령을 내리는 방식이다. |
GUI(Graphic User Interface) | 마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식이다. |
리눅스/유닉스 계열 운영체제의 기본 명령어 [2021년 1회
- 리눅스와 유닉스 명령어는 쉘에서 입력할 수 있다.
- 리눅스는 최상위 유저를 CLI 환경에서 #으로 표시하며, 일반 유저를 $로 표시한다.
구분 | 명령어 | 설명 |
시스템관련 | uname |
버전 확인 |
uname -a 시스템의 모든 정보 출력 | ||
uname -r 운영체제의 배포 버전 출력 | ||
cat | 파일 내용 출력 | |
uptime | 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인 | |
사용자 | id | 사용자의 로그인명, id, 그룹 id 등을 출력 |
last | 시스템의 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보 표시 | |
who | 호스트에 로그인한 사용자 정보 출력 | |
파일처리 | ls | 자신이 속해있는 폴더 내에서의 파일 및 폴더들 표시 |
pwd | print working directory의 약자, 현재 디렉터리의 절대 경로 출력 | |
rm | 파일 삭제 | |
cp | 파일 복사 | |
mv | 파일 이동 | |
프로세스 | ps | 현재 실행되고 있는 프로세스 목록 출력 |
pmap | 프로세스ID를 기준으로 메모리 맵 정보를 출력 | |
kill pid | 특정 프로세스 종료 | |
fork | 새로운 프로세스를 생성 | |
파일 권한 | chmod | 특정 파일 또는 디렉토리의 퍼미션 수정 |
chown | 파일이나 인터페이스를 설정하거나 확인 | |
네트워크 | ifconfig | 네트워크 인터페이스를 설정하거나 확인 |
host | 도메인(호스트) 명은 알고 있는데 ip 주소를 모르거나 혹은 그 반대의 경우에 사용 | |
압축 | tar | 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용 |
gzip | 파일을 묶거나 풀 수는 없지만 압축을 담당 | |
검색 | grep | 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어 |
find | 특정한 파일을 찾는 명령어 | |
동기화 | rsync | 로컬 또는 원격의 파일과 디렉토리를 복사하고 동기화하는 명령어 |
디스크 사용 | df | 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용 |
du | 파일 사이즈를 kbyte 단위로 출력 | |
디렉터리 이동 | cd | 디렉터리를 이동 |
#참고
스케줄링 알고리즘 풀이 예시문제 (작성중)
https://simuing.tistory.com/entry/2021-정보처리기사-필기요약-풀이-스케줄링-알고리즘-예시문제
'IT License > 정처기필기-4과목' 카테고리의 다른 글
2021 #정보처리기사 필기요약 #4-3. 기본 개발환경 구축 (0) | 2021.03.02 |
---|---|
2024 #정보처리기사 필기요약 #4-3. 네트워크 기초 활용 (0) | 2021.03.02 |
2021 #정보처리기사 필기요약 #4-2. 프로그래밍 언어 활용 (3) | 2021.03.01 |
2024 #정보처리기사 필기요약 #4-1. 서버프로그램 구현 (3) | 2021.03.01 |
댓글