운영체제
컴퓨터 시스템의 자원들을 효율적으로 관리 ( 자원관리 )
사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공 ( 사용자 인터페이스 제공 )
- 성능 평가 기준
처리능력 (Throughput) |
일정 시간 내에 시스템이 처리하는 일의 양 |
반환시간 (Turn Around Time) |
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 |
사용 가능도 (Availablity) |
시스템을 사용할 필요가 있을 때 즉시 사용가능한 정도 |
신뢰도 (Reliablity) |
운영체제 목적 4가지
- 처리능력 향상
- 반환시간 단축
- 사용 가능도 향상
- 신뢰도 향상
Windows의 특징
- 그래픽 사용자 인터페이스(GUI: Graphic User Interface) 실기기출
: 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식 - 선점형 멀티태스킹(Preemptive Muti-Tasking)
: 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 용용 프로그램 실행중 문제가 발생하면
해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식 - PnP(Plug and Play, 자동 감지 기능)
: 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한
시스템 환경을 운영체제가 장동으로 구성해 주는 기능 - OLE(Object Linking and Embedding)
: 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체(Object)를 현재 작성 중인 문서에 자유롭게
연결(Linking) 하거나 삽입(Embedding) 하여 편집할 수 있게 하는 기능
UNIX / LINUX
- UNIX
- 1960년, 벨(Bell)연구소, MIT, General Electric이 공동 개발한 운영체제
- 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제,
소스가 공개된 개방형 시스템(Open System) - 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
- 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원
- 트리(Tree) 구조의 파일 시스템을 갖는다.
- LINUX
- 1991년, 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
- UNIX와 완벽하게 호환되고, 대부분의 특징이 UNIX와 동일하다.
- 프로그램 소스 코드가 무료로 공개되어 있다.
UNIX 시스템의 구성
- 커널(Kernel)
- UNIX의 가장 핵심적인 부분
- 하드웨어를 보호(캡슐화)하고, 프로그램들과 하드웨어간의 인터페이스 역할을 담당
- 프로세스, 기억장치, 파일, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러 기능 수행
- 컴퓨터 부팅 시 주기억장치에 적재되어 상주하면서 실행
- 쉘(Shell)
- 사용자으 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스를 담당
- DOS의 COMMAND.COM과 같은 기능을 수행
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일형태로 존재하며 보조기억장치에서 교체 처리가 가능
- 종류 : Bourne Shell, C Shell, Korn Shell 등
Windows 의 CLI(Command Line Interface) 명령어
dir 실기기출 |
현재 디렉터리의 파일 목록 표시 (UNIX / LINUX의 ls와 동일) |
copy | 파일 복사 |
del | 파일 삭제 |
type | 파일 내용 표시 |
ren | 파일 이름 변경 |
md | 디렉터리 생성 |
cd | 동일한 드라이브에서 디렉터리 위치 변경 |
cls | 화면 내용 지움 |
attrib | 파일 속성 변경 |
find | 파일에서 문자열 찾음 |
chkdsk | 디스크 상태 점검 |
format | 디스크 표면을 트랙과 섹터로 나누어 초기화 |
move | 파일 이동 |
UNIX / LINUX 의 CLI(Command Line Interface) 기본 명령어
cat | 파일 내용을 화면에 표시 |
cd | 디렉터리 위치 변경 |
chmod | 파일의 보호 모드를 설정하여 파일 사용 허가 지정 |
chown | 파일 소유자와 그룹 변경 |
cp | 파일 복사 |
rm | 파일 삭제 |
find | 파일 찾음 |
fsck | 파일 시스템 검사 및 보수 |
kill | PID(Process ID, 프로세스 고유번호) 이용하여 프로세스 종료 |
killall | 프로세스의 이름을 이용하여 프로세스 종료 |
ls | 현재 디렉터리의 파일 목록 표시 ( Windows의 dir 와 동일 ) |
mkdir | 디렉터리 생성 |
rmdir | 디렉터리 삭제 |
mv | 파일 이동 |
ps | 현재 실행중인 프로세스 표시 |
pwd | 현재 작업중인 디렉터리 경로를 화면에 표시 |
top | 시스템의 프로세스와 메모리 사용 현황 표시 |
who | 현재 시스템에 접속해 있는 사용자 표시 |
기억장치 관리 전략
보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여
한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것
- 반입(Fetch) 전략
: 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인가 ?
1. 요구 반입(Demand Fetch), 2. 예상 반입(Anticipatory Fetch)가 있다. - 배치(Placement) 전략 ( 예제 중요 )
: 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인가 ?- 최초 적합(First Fit)
: 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번재 분할 영역에 배치 - 최적 적합(Best Fit)
: 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치 - 최악 적합(Worst Fit)
: 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
- 최초 적합(First Fit)
- 교체(Replacement) 전략 ( 예제 중요 )
: 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할때
이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인가 ?
[ 종류 ] : FIFO, OPT, LRU, LFU, NUR, SCR 등이 있다.
가상 기억장치(Virtual Memory)
보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을
가진 것처럼 사용하는 것. 현재 운영체제에서 흔히 사용하는 기법
- 가상 기억장치 구현 기법
- 페이징 기법(Paging)
: 가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후
나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법
외부 단편화는 방생하지 않으나 내부 단편화는 발생할 수 있다. - 세그먼테이션 기법(Segmentation)
: 가상 기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후
주기억장치에 적재시켜 실행시키는 기업
내부 단편화는 발생하지 않으나, 외부 단편화는 발생할 수 있다.
- 페이징 기법(Paging)
가상기억장치 기타 관리 사항
- Locality(지역성)
- 프로세스가 실행되는 동안 주기억장치를 참조할 때, 일부 페이지만 집중적으로 참조하는 성질
- 1. 시간 구역성(Temporal Locality)
: 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상 - 2. 공간 구역성(Spatial Locality)
: 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상
- 1. 시간 구역성(Temporal Locality)
- 프로세스가 실행되는 동안 주기억장치를 참조할 때, 일부 페이지만 집중적으로 참조하는 성질
- 워킹 셋(Working Set)
: 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합 - 페이지 부재(Page Fault)
: 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상. 페이지 부재가 일어나는 횟수를
페이지 부재빈도(Page Fault Frequency) 라고 함 - 스레싱(Thashing)
: 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
페이지 교체 알고리즘
- OPT(optmal replacement, 최적 교체)
: 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법 - FIFO(First In First Out)
: 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던
페이지를 교체하는 기법 - LRU(Least Recently Used)
: 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법 - LFU(Least Frequently Used)
: 사용 빈도가 가장 적은 페이지를 교체하는 기법 - NUR(Not Used Recently)
: 최근에 사용하지 않은 페이지를 교체하는 기법, 참조 비트(Reference Bit)와 변형 비트(Modified Bit)가 사용됨 - SCR(Second Chance Replacement, 2차 기회 교체)
: 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로
FIFO기법의 단점을 보완한 기법
프로세스(Process) 관리
프로세스는 프로세서(CPU)에 의해 처리되는, 실행중인 프로그램을 의미
- 프로세스 상태 전이
제출( Submit ) | 작업을 처리하기 위해 사용자가 작업을 시스템에 제출 상태 |
접수( Hold ) | 제출된 작업이 스풀 공간인 디스크의 할당위치에 저장된 상태 |
준비 ( Ready ) | 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태 |
실행 ( Run ) | 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행 |
대기 ( Wait ) 블록 ( Block ) |
프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고 입출력 처리가 완료될 때까지 대기 |
종료 ( Terminated Exit ) | 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태 |
- 프로세스 상태 전이 관련 용어
Dispatch | 준비상태에서 대기하고 있는 프로세스 -> 실행상태로 전이 |
Wake Up | 프로세스가 대기상태에서 -> 준비 상태로 전이 |
Spooling | 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리속도를 보완하고 다중프로그래밍 시스템의 성능을 향상시키기 위해 입출력 데이터를 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정 |
비선점(Non-Preemptive) 스케줄링
이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케쥴링 기법
- FCFS( First Come First Service, 선입선출 ) = FIFO( First In First Out )
: 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법, 가장 간단한 알고리즘 - SJF( Shortest Job First, 단기 작업 우선 )
: 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당하는 기법 - HRN ( Hihgest Response-ratio Next )
: 실행 시간이 긴 프로세스에 불리한 SJF 기법 (기아현상) 을 보완하기 위한 것
대기 시간과 서비스(실행)시간을 이용하는 기법
* 우선순위 계산식 : ( 대기시간 + 서비스 시간 ) / 서비스 시간 실기기출 - 기한부( Deadline )
: 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법 - 우선순위 ( Priority )
: 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당 - 에이징 기법 ( Aging )
: 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우, 한 번 양보하거나 기다린 시간에
비례하여 일정 시간이 지난면 우선순위를 한 단계씩 높여 가까운 시간 안에 자원을 할당받도록 하는 기법
선점( Preemptive ) 스케줄링
하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로
빼앗아 사용할 수 있는 스케줄링 기법
- 선점 우선순위
: 준비상태 큐의 프로세스들 중에서 우선 순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법 - SRT( Shortest Remaining Time )
: 비선점 스케쥴링인 SJF( Shortest Job First )기법을 선점 형태로 변경한 기법, 선점 SJF 기법이라고도 함 - 라운드 로빈( RR : Round Robin )
: 시분할 시스템( Time Sharing System )을 위해 고안된 방식으로, FCFS 기법과 같이 준비상태 큐에 먼저 들어온
포세스가 먼저 CPU를 할당받지만 각 프로세스는 시간 할당량(Time Slice, Quantum) 동안만 실행한 후 실행이
완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태큐의 가장 뒤로 배치됨 - 다단계 큐 ( MQ : Multi-level Queue )
: 프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법 - 다단계 피드백 큐 ( MFQ : Multi-level-Feedback Queue )
: 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을
준비상태 큐 사이를 이동할 수 있도록 개선한 기법
교착상태( Dead Lock )
상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가
점유하고 있는 자원을 요구하며 무한정 기다리는 현상
- 교착상태 발생의 필요 충분 조건
- 1. 상호 배제( Mutual Exclusion )
: 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함 - 2. 점유와 대기( Hold and Wait )
: 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로
점유하기 위해 대기하는 프로세스가 있어야 함 - 3. 비선점( Non-Preemption )
: 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함 - 4. 환영 대기( Circular Wait )
: 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게
할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함
- 1. 상호 배제( Mutual Exclusion )
교착상태 해결 방법
교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로 네 가지 조건 중에서
어느 하나를 제거(부정)함으로써 수행된다.
- 예방 기법( Prevention )
- 상호 배제( Mutual Exclusion ) 부정
: 한 번에 여러 개의 프로세스가 공유 자원을 사용할 수 있도록 함 - 점유 및 대기( Hold and Wait ) 부정
: 프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은
상태에서만 자원을 요구하도록 함 - 비선점( Non-Preemption ) 부정
: 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고
요구한 자원을 사용하기 위해 기다리게 함 - 환형 대기( Circular Wait ) 부정
: 자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다
앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 하는 것
- 상호 배제( Mutual Exclusion ) 부정
- 회피 기법( Avoidance )
: 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법
주로 은행원 알고리즘( Banker`s Algorithm ) 이 사용된다. - 발견 기법( Detection )
: 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것
자원 할당 그래프 등을 사용한다. - 회복 기법( Recovery )
: 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스의 할당된 자원을 선점하여
프로세스나 자원을 회복
728x90
반응형
'정보처리기사 > 실기고사 이론정리' 카테고리의 다른 글
[Chapter 10] ★ 응용 SW 기초 기술 활용 [ 네트워크 편 ] ★ (0) | 2020.10.15 |
---|---|
[Chapter 10] ★ 응용 SW 기초 기술 활용 [ 데이터베이스 편 ] ★ (0) | 2020.10.15 |
[Chapter 9] 소프트웨어 개발 보안 구축 (0) | 2020.10.14 |
[Chpater 8] ★ SQL 응용 ★ (0) | 2020.10.08 |
[Chapter 7] 애플리케이션 테스트 관리 (0) | 2020.10.08 |