▶ 141 운영체제의 개념
운영체제(OS; Operating System)
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
- 사용자와 하드웨어 간의 인터페이스
운영체제의 목적 / 중요★
- 처리 능력 향상, 사용 가능도 향샹, 신뢰도 향상, 반환 시간 단축
처리능력(Throughput) |
일정 시간 내에 시스템이 처리하는 일의 양 |
반환 시간(Turn Around Time) |
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 |
사용 가능도(Availability) |
시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도 |
신뢰도(Reliability) |
시스템이 주어진 문제를 정확하게 해결하는 정도 |
운영체제의 기능
- 프로세서(중앙처리장치, Processor), 기억장치(주기억장치, 보조기억장치), 입출력장치, 파일 및 정보 등의 자원 관리
- 자원을 효율적으로 관리하기 위한 스케줄링 기능 제공
* 스케줄링 : 어떤 자원을 누가, 언제, 어떤 방식으로 사용할지 결정해주는 것
- 편리한 인터페이스 제공
- 시스템의 각종 하드웨어, 네트워크 관리, 제어
- 시스템의 오류 검사, 복구
운영체제의 주요 자원 관리
프로세스 관리 |
프로세스 스케줄링 및 동기화 관리 담당 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당 |
기억장치 관리 |
프로세스에게 메모리 할당 및 회수 관리 담당 |
주변장치 관리 |
입출력장치 스케줄링 및 전반적인 관리 담당 |
파일 관리 |
파일의 생성과 삭제, 변경, 유지 등의 관리 담당 |
운영체제의 종류
운영체제 |
특징 |
인터페이스 |
Windows |
마이크로소프트 사가 개발한 운영 체제 |
GUI |
UNIX |
AT&T벨 연구소, MIT, General Eletric이 공동 개발한 운영체제 |
CLI |
LINUX |
UNIX와 호환이 가능한 커널, 누구나 제한 없이 활용 및 재배포 가능 |
CLI |
MacOS |
애플사가 UNIX 기반으로 개발한 운영체제 |
GUI |
MS-DOS |
Window 이전에 사용되던 운영체제 |
CLI |
- Window, MacOS, MS-DOS는 Client용
- UNIX, LINUX는 Sever 용
* GUI(Graphic User Interface) : 그래픽 사용자 인터페이스
* CLI(Command Line Interface) : 키보드로 명령어를 직접 입력해 사용하는 사용자 인터 페이스
* 커널 : 운영체계의 가장 중요한 핵심 부분, 기본적인 서비스 제공
▶ 142 Windows
Windows
1990년대 마이크로소프트 사가 개발한 운영체제
Windows의 특징
• 그래픽 사용자 인터페이스(GUI)
그래픽 사용자 인터페이스는 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여
모든 작업을 수행하는 방식
• 선점형 멀티태스킹(Preemptive Multi-Tasking)
동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
* 멀티태스킹 : 여러 개의 프로그램을 동시에 열어 두고 다양한 작업을 동시에 진행하는 것
• PnP(Plug and Play, 자동 감지 기능)
컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능
• OLE(Object Linking and Embedding)
다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능
▶ 143 UNIX
UNIX
1990년대 AT&T 벨 연구소, MIT, General Electric이 공동 개발한 운영체제
- 시분할 시스템을 위해 설계된 대화식 운영체제
- 대부분 C언어로 작성되어 있어 프로세스 간의 호환성이 높음
- 다중 사용자, 다중 작업 지원
- 트리 구조의 파일 시스템
- 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합
UNIX 시스템의 구성
• 커널(Kernel) / 중요★
- UNIX의 가장 핵심적인 부분
- 컴퓨터 부팅 시 주기억장치에 적재된 후 상주하면서 실행
- 하드웨어 보호, 프로그램과 하드웨어 간의 인터페이스 담당
•
쉘(Shell)
/ 중요★
- 사용자의 명령어를 인식해 프로그램 호출하고 명령을 수행하는 명령어 해석기
- DOS의 COMMAND.COM과 같은 기능 수행
- 시스템과 사용자 간의 인터페이스 담당
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재, 보조기억장치에서 교체 처리 가능
- 파이프라인 기능 지원, 입출력 방향 변경 가능
•
Utility Program
/ 중요★
- 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용
- DOS에서의 외부 명령어에 해당
☞ UNIX에서의 프로세 스 간 통신
각 프로세스는 시스템 호출을 통해 커널의 기능을 사용
- 시그널(Signal) : 간단한 메시지를 이용하여 통신하는 것으로 초기 UNIX 시스템에서 사용됨
- 파이프(Pipe) : 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신 방식
- 소켓(Socket) : 프로세스 사이의 대화를 가능하게 하는 쌍방향 통신 방식
▶ 144 기억장치 관리의 개요
기억장치 계층 구조
기억장치의 관리 전략
1. 반입(Fetch) 전략 / 중요★
보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
- 예상 반입 : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
2. 배치(Placement) 전략 / 중요★
새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
- 최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영영에 배치시키는 방법
- 최적 적합(Best Fit) : 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
- 최악 적합(Worst Fit) : 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
* 단편화 : 데이터를 할당할 경우 생기는 빈 기억 공간
3. 교체(Replacement) 전략 / 중요★
주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서
어느 영역을 교체하여 사용할 것인지를 결정하는 전략
- FIFO, OPT, LRU, LFU, NUR, SCR 등이 있음
▶ 145 주기억장치 할당 기법
주기억장치 할당
연속 할당 기법 |
프로그램을 주기억장치에 연속으로 할당하는 기법 - 단일 할당 기법 : 오버레이, 스와핑 - 다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법 |
분산 할당 기법 (가상기억장치 관리 기법) |
프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법 - 페이징 기법 - 세그먼테이션 기법 |
연속 할당 기법
• 단일 할당 기법
- 오버레이(Overlay) 기법 : 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
- 스와핑(Swapping) 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
• 다중 분할 할당 기법
- 고정 분할 할당 기법(MFT) = 정적 할당 기법
- 가변 분할 할당 기법(MVT) = 동적 할당 기법 : 고정 분할 할당 기법의 단편화를 줄이기 위한 것
* 내부 단편화 : 프로그램이 할당된 후 사용되지 않고 남아있는 공간
* 외부 단편화 : 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아있는 분할된 전체 영역
* 단편화(Fragment)
☞ 단편화 해결 방안
- 통합(Coalescing) : 인접공간 합침
- 압축(Compaction) : 기억공간의 맨 끝으로 합침
▶ 146 가상기억장치 구현 기법 / 페이지 교체 알고리즘
▶ 147 가상기억장치 기타 관리 사항
가상기억장치
보조기억장치의 일부를 주기억장치처럼 사용하는 것, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법
페이징(Paging) 기법
가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법
- 내부 단편화 발생
- 주소 변환을 위해 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블 사용, 비용 증가, 처리 속도 감소
* 페이지 : 프로그램을 일정한 크기로 나눈 단위
* 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
세그먼테이션(Segmentation) 기법
가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
- 외부 단편화 발생
- 기억공간 절약
- 세그먼트 맵 테이블 사용
- 기억장치 보호키 필요
* 매핑(Mapping) : 가상기억장치에서 주기억장치로 페이지를 옮겨 넣을 때 주소를 조정해 주는 것
가상기억장치 기타 관리 사항
1. 페이지 크기 / 비교문제
• 페이지 크기가 작을 경우
- 페이지 단편화 감소
- 효율적인 워킹 셋 유지 가능
- Locality에 더 일치할 수 있기 때문에 기억장치 효율 증가
- 페이지 맵 테이블의 크기 커지고(주소 많아짐), 매핑 속도 늦어짐
- 디스크 접근 횟수 증가, 전체적인 입출력 시간 증가
• 페이지 크기가 클 경우
- 페이지 맵 테이블의 크기 작아지고, 매핑 속도 빨라짐
- 디스크 접근 횟수 감소, 입출력 효율성 증가
- 페이지 단편화 증가
- 불필요한 내용까지도 주기억장치에 적재될 수 있음
2. Locality / 중요★
프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질
- 스래싱을 방지하기 위한 워킹 셋 이론 기반
- 시간 구역성과 공간 구역성이 있음
• 시간 구역성(Temporal Locality)
프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 접근하는 현상
- Loop, Stack, 집계, Counting 등
• 공간 구역성(Spatial Locality)
프로세스 실행 시 일정 위치의 페이지를 집중적으로 접근하는 현상
- 배열 순회, 순차적 코드의 실행 등
3. 워킹 셋(Working Set) / 중요★
프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
4. 페이지 부재 빈도 방식 / 중요★
프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상,
페이지 부재 빈도(PFF; Page Fault Frequency)는 페이지 부재가 일어나는 횟수를 의미
5. 스래싱(Thrashing)
프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
• 스래싱 현상 방지 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지
- 워킹 셋 유지
- 임계치 예상해 운영
페이지 교체 알고리즘
페이지 부재 발생 시 사용
* 페이지 부재 : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우
1. OPT(OPTimal replacement, 최적 교체) / 중요★
앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
2. FIFO(First In Fist Out) / 중요★
가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
참조페이지 |
2 |
3 |
2 |
1 |
5 |
2 |
3 |
5 |
페이지 프레임 |
2 |
2 |
2 |
2 |
5 |
5 |
5 |
5 |
|
3 |
3 |
3 |
3 |
2 |
2 |
2 |
|
|
|
|
1 |
1 |
1 |
3 |
3 |
|
부재 발생 |
● |
● |
|
● |
● |
● |
● |
3. LRU(Least Recently Used) / 중요★
최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
참조페이지 |
2 |
3 |
2 |
1 |
5 |
2 |
3 |
5 |
페이지 프레임 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
3 |
3 |
3 |
5 |
5 |
5 |
5 |
|
|
|
|
1 |
1 |
1 |
3 |
3 |
|
부재 발생 |
● |
● |
|
● |
● |
● |
4. LFU(Least Frequently Used)
사용 빈도가 가장 적은 페이지를 교체하는 기법
5. NUR(Not Used Recently) / 중요★
LRU와 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체하는 기법
- 참조비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정
참조 비트 |
0 |
0 |
1 |
1 |
변형 비트 |
0 |
1 |
0 |
1 |
교체 순서 |
1 |
2 |
3 |
4 |
6. SCR(Second Chance Replacement, 2차 기회 교체)
가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것, FIFO 기법의 단점 보완
▶ 148 프로세스의 개요
프로세스(Process) / 정의 알기
프로세서(CPU)에 의해 처리되는 프로그램을 의미하며, 작업, 테스트라고도 함
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로시저가 활동중인 것
* 프로시저 : 한프로그램을 여러개의 작은 프로그램으로 분할
- 비동기적 행위를 일으키는 주체
PCB(Process Control Block, 프로세스 제어 블록) / 표 중요★
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
- 저장되어 있는 정보는 아래의 표와 같음
저장 정보 |
설명 |
프로세스의 현재 상태 |
준비, 대기, 실행 등의 프로세스 상태 |
포인터 |
- 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억 - 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억 |
프로세스 고유 식별자 |
프로세스를 구분할 수 있는 고유의 번호 |
스케줄링 및 프로세스의 우선순위 |
스케줄링 정보 및 프로세스가 실행될 우선순위 |
CPU 레지스터 정보 |
Accumulator, 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC)등에 대한 정보 |
주기억장치 관리 정보 |
기준 레지스터, 페이지 테이블에 대한 정보 |
입출력 상태 정보 |
입출력장치, 개방된 파일 목록 |
계정 정보 |
CPU 사용 시간, 실제 사용 시간, 한정된 시간 |
프로세스 상태 전이
버퍼 |
스풀링 |
주기억장치 |
보조기억장치 |
한개 작업 |
여러개 작업 |
스레드(Thread) / 정의 알기
프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 하나의 프로세스에 하나의 스레드 : 단일 스레드
- 하나의 프로세스에 하나 이상의 스레드 : 다중 스레드
• 스레드의 분류
사용자 수준의 스레드 |
- 사용자가 만든 라이브러리를 사용하여 스레드 운용 - 속도는 빠르지만 구현 어렵 |
커널 수준의 스레드 |
- 운영체제의 커널에 의해 스레드를 운용 - 구현이 쉽지만 속도가 느림 |
▶ 149 스케줄링
스케줄링
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
☞ 문맥 교환
하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것
프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업
스케줄링의 목적
- 공정성 : 모든 프로세스에 공정하게 할당
- 처리율 증가 : 단위 시간당 프로세스를 처리하는 비율 증가
- CPU 이용률 증가
- 우선순위 제도
- 오버헤드 최소화
- 응답 시간(반응 시간) 최소화 : 작업을 지시하고, 반응하기 시작하는 시간 최소화
- 반환시간 최소화 : 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간 최소화
- 대기 시간 최소화 : 프로세스가 준비상태 큐에서 대기하는 시간 최소화
- 균형 있는 자원 사용
- 무한 연기 회피
프로세스 스케줄링의 기법 / 강제 종료를 기준으로 함
• 비선점(Non-Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 모든 프로세스에 대한 요구 공정하게 처리
- 프로세스 응답 시간 예측 용이, 일괄 처리 방식에 적합
- 비선점 스케줄링의 종류 : FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘
• 선점(Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 선점 스케줄링의 종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐(MLQ), 다단계 피드백 큐(MFQ) 등의 알고리즘