- 운영체제
- 운영체제의 목적 4가지
- 운영체제의 기능
- 기억장치의 종류 4가지
- 운영체제의 기능 - 주기억장치 관리
- 운영체제의 기능 - 프로세스 관리
- 주요 스케줄링 알고리즘
- 교착상태
운영체제
- OS, Operation System
- 컴퓨터 시스템 자원을 효율적으로 관리
- 사용자가 컴퓨터 편하게 사용하도록 환경을 제공하는 여러 프로그램 모임
- ex) Windows, UNIX, LINUX 등
OS 종류
- Windows : 1990년대 마이크로소프트가 개발한 운영체제
- UNIX : 1960년대 AT&T 벨(Bell) 연구소, MIT, General Electric이 공동 개발한 운영체제
- 커널(Kernel) : 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당 UNIX의 핵심적인 부분
- 쉘(Shell) : 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기 시스템과 사용자 간의 인터페이스를 담당 - LINUX : 1991년 리누스 토발즈(Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제
- MacOS : 1980년대 애플이 UNIX를 기반으로 개발한 운영체제
- Android : 구글(Google)에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
- iOS : 애플에서 개발한 유닉스 기반의 모바일 운영체제
운영체제의 목적 4가지
성능 향상과 시간 단축을 위함
- 처리 능력 : 일정 시간 내 처리 일의 양
- 반환 시간 : 완료 시간
- 사용 가능도 : 즉시 사용 가능 정도
- 신뢰도 : 정확한 해결
운영체제의 기능
1) 사용자가 복잡한 하드웨어를 몰라도 쉽게 이용할 수 있도록 가상적인 컴퓨터 환경 제공
2) 컴퓨터 자원을 관리
기억장치의 종류 4가지
기억 장치 : 일시적 또는 영구적으로 저장하는 장치
- 주기억장치 : 컴퓨터 실행시 사용되는 기억 장치
- 롬(ROM) : 전원 꺼져도 내용 보존
- 램(RAM) : 전원 꺼지면 모든 내용 지워짐 - 보조기억장치 : 컴퓨터 중앙처리 장치 아님, 외부 기억장치, HDD(하드디스크) 등
- 캐시 메모리 : 속도 빠른 장치 & 속도 느린 장치에서 속도 차이로 인한 병목 줄이기 위한 메모리
- 레지스터 : 중앙처리장치 내부 기억장치
운영체제의 기능 - 주기억장치 관리
- 데이터 적재 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용 & 관리
- ex) 반입(Fetch) 전략, 배치(Placement) 전략, 교체(Replacement) 전략
반입(Fetch) 전략
보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정
- 요구 반입(Demand Fetch)
: 참조를 요구할 때 적재 하는 방법 - 예상 반입(Anticipatory Fetch)
: 미리 예상하여 적재 하는 방법
배치(Placement) 전략
새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치 시킬 것인지 결정
- 최초 적합(First Fit)
: 들어갈 수 있는 빈 영역 중에서 첫 번째 분할 영역에 배치 - 최적 적합(Best Fit)
: 들어갈 수 있는 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치 - 최악 적합(Worst Fit)
: 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
*단편화 : 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간
장점 : 구현 간단
단점 : 할당 후 빈 공간 발생 & 분할된 영역보다 큰 프로그램 실행 불가능
→ 가상 메모리(가상 기억장치) 방식 지원
+) 가상 기억장치(Virtual Memory) = 가상 메모리
- 보조기억장치의 일부를 주기억장치처럼 사용
- 작은 주기억장치가 큰 용량을 가진 것처럼 사용
- 당장 실행에 필요한 부분만 주기억장치에 저장하고 나머지는 보조기억장치에 두고 동작
가상기억장치의 일반적인 구현 방법 : 페이징 기법, 세그먼테이션 기법
1) 페이징(Paging) 기법
- 프로그램과 주기억장치의 영역을 동일한 크기로 나눔
- 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행
* 페이지 : 프로그램을 일정한 크기로 나눈 단위
* 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
- 주기억장치와 가상기억장치에 보관되어있는 프로그램을 동일한 크기로 나눔
- 가상기억장치에 보관되어 있는 파일 중에 당장 실행에 필요한 부분을 주 기억장치의 빈 공간에 적재
2) 세그먼테이션(Segmentation) 기법
- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재
* 세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위, 각 세그먼트는 고유한 이름과 크기 가짐
* 페이징과 세그먼테이션의 가장 큰 차이점은 페이지는 크기가 동일하지만 세그먼트는 크기가 일정하지 않다는 것
교체(Replacement) 전략
- 주기억장치의 모든 영역이 이미 사용중인 상태에서, 새로운 프로그램이나 데이터를 주기억장치에 배치
- 사용 영역 중에서 어느 영역을 교체할 것인지를 결정
- ex) FIFO, OPT, LRU, LFU, NUR, SCR등
페이지 교체 알고리즘
- 페이지 부재가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재
- 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정
* 페이지 부재(Page Fault) : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우
1) OPT(OPtimal replacement, 최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이지 교체
- 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
2) FIFO(First In First Out)
- 각 페이지가 주기억장치에 적재될 때마다 가장 오래 있었던 페이지를 교체
3) LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
4) LFU(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지를 교체
5) NUR(Not Used Recently)
- LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체
- 최근 사용 여부를 확인하기 위해 각 페이지마다 두 개의 비트 사용 (참조 비트, 변형 비트)
- LRU는 상대적으로 가장 오래된 걸 교체
- NUR은 절대적으로 최근에 사용하지 않는 것을 교체
6) SCR(Second Chance Replacement, 2차 기회 교체)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법
* 가상기억장치 기타 용어
- Locality(국부성, 지역성, 구역성, 국소성)
: 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론 - 워킹 셋(Working Set)
: 프로세스가 일정 시간 동안 자주 참조하는 페이지의 집합, 데닝(Denning)이 제안 - 스래싱(Thrashing)
: 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
운영체제의 기능 - 프로세스 관리
프로세스(Process)
- 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 즉 실행 중인 프로그램
* 프로세서: 컴퓨터 분야에서 무엇인가를 처리·가공하는 기능을 가진 하드웨어, 소프트웨어로 대표적으로 컴퓨터의 뇌라고 불리는 CPU
* CPU(Central Processing Unit) : 중앙처리장치로 컴퓨터의 정중앙에서 모든 데이터를 처리
- 컴퓨터에서 음악을 들으면서 게임을 하는 것을 당연하게 생각
- 사실 컴퓨터의 세상에서 여러 개의 프로세스가 동시에 실행되는 것은 놀라운 일
- 하나의 CPU 즉 프로세서는 한순간에 하나의 프로세스만 실행할 수 있음
- 프로세스가 동시에 여러 개 실행될 수 있는 이유는 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체하기 때문
- 프로세스에 대한 정보는 PCB에 저장
PCB(Process Control Block, 프로세스 제어 블록)
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
- 프로세스들의 실행 사이에 프로세스를 교체하고 재시작할 때 오류가 발생하지 않도록 관리
- 프로세스의 상태를 실행, 준비, 대기 상태로 분류하고 프로세스들을 상태전이를 통해 체계적으로 관리
프로세스 상태 전이
- 준비(Ready) 프로세스가 프로세서를 할당받기 위해 기다림
- 실행(Run) 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행
- 대기(Wait) 블록(Block) 프로세스에 입·출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입·출력 처리가 완료될 때까지 대기
- 종료(Exit) 프로세스의 실행이 끝나고 할당이 해제
- Dispatch 준비상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이
- Wake up 입·출력 작업이 완료되어 프로세스가 대기 상태에서 준비상태로 전이
*스레드(Thread) : 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위(프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 한다)
스케줄링(Scheduling)
- 운영체제가 여러 개의 프로세스가 CPU에서 실행되는 순서를 결정
- CPU는 한번에 하나의 프로세스만 실행시킬 수 있음 → 프로그램의 순서
- 스케줄링 우선순위 : 스케줄링에서 우선순위가 높으면 먼저 실행
스케줄링 우선순위
- 장기 스케줄링
: 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정 & 준비상태 큐로 - 중기 스케줄링
: 어떤 프로세스들이 CPU를 할당받을 것인지 결정 - 단기 스케줄링
: 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정
비선점(Non-Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- ex) FCFS, SJF, 우선순위, HRN, 기한부 등
선점(Preemptive) 스케줄링
- 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- ex) RR(Round Robin), SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
주요 스케줄링 알고리즘
FCFS(First Come First Service, 선입 선출)
- = FIFO(First In First out)
- 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
SJF(Shortest Job First, 단기 작업 우선)
- 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법
HRN(Hightest Response-ratio Next)
- 대기 시간과 서비스(실행) 시간을 이용하는 기법
- 실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완
RR(Round Robin)
- 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나
- 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간 단위로 CPU를 할당
- FCFS와 유사하지만 프로세스마다 CPU를 사용할 수 있는 최대시간이 있음
- 프로세스는 자기에게 주어진 시간 동안만 작업
*시분할 시스템(Time Sharing System)
: 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 사용자들에게 독립된 컴퓨터를 사용하는 느낌을 주는 것으로, 라운드 로빈(Round Robin)
- 우선순위 스케줄링의 단점은 순위가 낮은 프로세스들은 무작정 대기를 해야 돼서 CPU를 계속 기다리고만 있는 상태가 되는 것 → 라운드 로빈 기법
- 프로세스가 하나 끝날 때까지 CPU를 가지고 있는게 아니라, 할당된 시간만큼 돌아가며 처리하는 방식
- 우선순위가 낮은 프로세스도 공평하게 실행
SRT(Shortest Remaining Time)
- SJF방식을 선점 스케줄링 방식으로 변경
- 최단 잔여시간을 우선으로 하는 스케줄링
- 진행 중인 프로세스가 있어도, 최단 잔여시간인 프로세스를 위해 sleep 시키고 짧은 프로세스를 먼저 할당
교착상태
둘 이상의 프로세스들이 서로 남이 가진 자원을 요구하면서 양쪽 모두 작업 수행을 못하고 대기 상태로 놓이는 상태
교착상태 발생 조건
- 상호 배제 (Mutual Exclusion)
: 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함 - 점유와 대기 (Hold and Wait)
: 최소한 하나의 자원을 가지고 있으면서 다른 프로세스에 할당되어 있는 자원을 추가로 요구하기 위해 대기하는 프로세스가 있어야함 - 비선점 (Non-preemption)
: 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함 - 환형 대기 (Circular Wait)
: 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 가지면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함
교착상태 해결 방법
- 예방 기법 (Prevention)
: 교착상태가 발생하지 않도록 사전에 시스템을 제어 - 회피 기법 (Avoidance)
: 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피함 (은행원 알고리즘(Banker’s Algorithm) 사용) - 발견 기법 (Detection)
: 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것 - 회복 기법 (Recovery)
: 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점 하여 프로세스나 자원을 회복하는 것
'License' 카테고리의 다른 글
[정처기 실기] 보안 파트 요약 (0) | 2024.04.23 |
---|