성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

[03 운영체제] 01 운영체제 본문

Diary/정보처리기사

[03 운영체제] 01 운영체제

hyemi_flora 2024. 4. 23. 01:01

* 시스템소프트웨어
- 로더 : 프로그램 메모리에 적재
- 링커 : 목적파일을 실행 파일로 변환 (목적파일을 모아서 변환)
- 번역기 : 프로그래밍 언어를 기계어 등 다른 언어로 변환
- 운영체제 : 하드웨어 관리와 통신 등 다양한 기능을 제공

* 운영체제에는 제어프로그램과 서비스 프로그램이 있다.

* 제어프로그램 
- 시 프로그램 : 프로그램 실행과 시스템 상태를 감시/감독
- 업관리 프로그램 : 스케줄 관리 및 시스템자원 할당 담당
- 데이터 관리 프로그램 : 데이터 전송 및 파일 조직을 관리

* 운영체제 운용 기법
1)일괄 처리 시스템
2) 실시간 처리 시스템
3) 다중 프로그래밍 시스템
4) 시분할 시스템
5) 다중 처리 시스템 (프로세서가 여러개 있는 것)
6) 다중 모드 시스템 (위에 5개 혼용하여 사용하는 것)
7) 분산 처리 시스템 

* UNIX : 대부분 C언어로, 나머지는 어셈블리어 언어로 되어 있다.

* 유닉스 파일 시스템 구조
- 부트 블록 : 부팅시 필요
- 슈퍼 블록 : 전체 관리
I-node 블록 : 데이터 블록이 어디를 가르키는지의 정보, 파일이나 디렉토리에 대한 모든 정보
- 데이터 블록 : 실제 파일 데이터가 저장

* 파일 디스크립터(FD) : 유닉스 시스템에서 프로세스가 파일에 접근할때 사용

*기억장치 관리 전략
- 반입 (Fetch) 전략 : 요구반입, 예상반입 / 언제 주기억장치로 적재할 것인지 결정하는 전략
- 배치(Placement) 전략 : 최초적합(First Fit), 최적적합(Best Fit), 최악적합(Worst Fit)
- 교체(Replacement) 전략 : FIFO(First in First Out), OPT(Optimal replacement 최적교체), LRU(Least Recently Used), LFU(Least Frequently Used), NUR(Not Used Recently), SCR(Second Chance Replacement) (굵게 표시한거 계산식문제 나올 수 있음)

* 단편화 종류
- 내부 단편화 : 컴퓨터에 공간을 할당할때 5kb - 3kb : 2kb가 내부단편화 발생
- 외부 단편화 : 5kb - 7kb : 5kb의 외부 단편화가 발생

* 단편화 해결방법
- 통합 기법 : 인접한 분할 공간들을 합치는 것
- 압축 기법 : 분산된 여러 단편화 공간들을 합치는 것
- 재배치 기법 : 압축기법등을 진행하며 메모리의 이동이 발생했을때 프로그램의 주소를 새롭게 지정해주는 기법

* 가상기억장치 : 보조기억장치 일부를 주기억장치처럼 사용하는 기법

* 블록분할방법
- 페이징 기법 : 같은 크기의 블록으로 나누는것, 내부 단편화 발생
- 세그먼테이션 기법 : 가변 크기의 블록, 외부 단편화 발생

* 가상기억장치 기타 관리사항
- 페이지 부재 : 필요한 페이지가 주기억장치에 없는 상황
- 지역성 : 공간/시간 지역성 배열을 계속 돌리는게 지역성 / 프로세스가 실행되는 동일 일부 페이지만 집중 참조
- 워킹 셋 : 일정시간동안 자주 참조되는 페이지 집합
- 스래싱 : 프로세스 처리 시간보다 페이지 부재 발생이 더 클때 성능이 떨어지는 현상

* 프로세스 : 컴퓨터에서 실행중인 프로그램

* 프로세스 영역 
- 코드 영역 : 실행할 프로그램 코드 저장
- 데이터 영역 : 전역변수와 정적변수
- 스택영역 : 지역변수, 함수의 매개변수
- 힙 영역 : 동적할당

* 프로세스 상태전이 : 생성(NEW) -> 준비(READY) -(디스패치 Dispatch)-> 실행(RUN)  -> 종료(EXIT)
                                                          준비(READY) <-(Time Run out)- 실행(RUN) 
                                                          준비(READY) <-(Wake Up)-<-대기(WAIT) <-(BLOCK)- 실행(RUN) 

* 스레드 : 프로세스 내에서 실행되는 흐름 단위

* PCB(Process Control Block)
- 준비상태 -> 실행상태 넘어간 후 새로운 프로그램이 들어올때 어떤 상태인지 저장해두는것
- PCB는 운영체제가 프로세스의 정보를 저장하는 공간

* 문맥교환 (COntext Switching) : 하나의 프로세스가 CPU사용을 마치고 다른 프로세스가 CPU를 사용하도록 전환하는 과정

* 프로세스 스케줄링
- 선점형 스케줄링 : Preemptive, 운영체제가 실행중인 프로세스로부터 CPU를 강제로 빼앗아올수 있는 방식
                               Round Robin, SRT, 다단계 큐(MLQ), 다단계 피드백 큐(MFQ)
- 비선점형 스케줄링: Non-Preemptive, 프로세스가 CPU점유중일때 빼앗아 올 수 없는 방식
                                  FCFS, SJF, HRN, 우선순위, 기한부 등
이 종류중 기아현상(우선순위가 낮은 프로세스가 무한정 기다리는 현상)이 발생하는 것 : STR, MLQ, SJF, 우선순의
에이징 기법(기아현상을 해결하기 위한 기법)을 이용하는 것 : HRN, MFQ

* 병행 프로세스 : 두 개 이상의 프로세스가 동시에 존재하며 실행 상태에 있는 것

* 병행프로세스 문제 해결책
- 임계구역
- 상호배제 기법 (데커, 피터슨, 다익스트라, 램포트의 베이커리)
- 동기화 기법 (세마포어, 모니터)

* 교착상태 : 프로세스가 자원을 점유한 상태에서 다른 프로세스의 자원을 요구하며 무한정 기다리는 현상

* 교착상태 발생조건 : 상호배제, 점유와 대기, 비선점, 환형대기

* 교착상태 해결 방법 : 예방, 회피(은행가 알고리즘), 발견, 회복

* 디스크 스케줄링 : 하드디스크에 저장된 데이터에 접근하기 위한 최적화 기법

* 디스크 스케줄링 종류
- FCFS (First Come First Served)
- SSTE (Shortest Seek Time First)
- SCAN, C-SCAN
- LOOK, C-LOOK
- N-STEP SCAN (스캔기법을 기초로, 대기중은 요청을 우선적으로 처리하고, 처리과정 이후 요청은 이후 진행시 처리)
- 에센바흐 기법

* 스토리지 종류
- DAS (Direct Attachted Storage) : 서버에 직접 연결
- NAS (Network Attached Storage) : 네트워크 
- SAN (Storage Area Network) : 파이버 채널, 광채널

* RAID :  복수의 HDD를 하나의 드라이브로 인식
- RAID-0 : 스트라이핑 사용
- ~~ 1 : 미러링 사용
- ~~2 : 오류 정정을 위한 해밍코드 사용
- ~~3 : 한 디스크를 패리티 정보 저장용으로 사용
- ~~4: RAID - 3 과 유사하나 블록 단위 분산 저장
- ~~5 : 각 디스크에 패리티 정보 포함
- ~~6: 두 개의 패리티 정보를 디스크에 분산 저장