핵심 정리(운영체제)

2016. 8. 12. 15:03자격증 공부/정보처리기사

[1] OS


1. 계층 구조


사용자

응용P

유틸리티

Shell(명령 해석기)

커널(제어 P): HW 제어(스케쥴링)

기계어

Micro P(=펌웨어:ROM에 영구 기억)

HW


2. 시스템 SW


1) 어셈블러 번역 방법

ㄱ. 단일 PASS: 정확한 기호 번지 사용해야

ㄴ. 이중 PASS: 기호 번지 미리 정의 X, 번역 속도 느림


2) 매크로 프로세서 기능

ㄱ. 정의 인식/저장

ㄴ. 호출 인식/매크로 확장


3) 로더 기능: P 실행 위해 P를 보조에서 주 기억 장치로 옮겨놓음

ㄱ. Allocation(할당): RAM 확보

ㄴ. Linking(연결): RAM-논리적 주소 공간으로 연결

ㄷ. Relocation(재배치): RAM 안에서 위치 변경

ㄹ. Loading(적재): RAM에 필요한 부분만 적재


4) 로더 종류

ㄱ. Compile and Go: 컴파일러에 로더 합친 것/단순해서 프로그래밍하기 좋음

ㄴ. 절대 로더: RAM 할당&연결을 프로그래머가 지정/복잡하고 RAM 위치 변경이 힘듬

ㄷ. Direct Linking: 로더가 다 해 줌(4가지 기능) > 가장 일반적

ㄹ. Module은 적재만/Binding 적재 뺀 나머지

ㅁ. Dynamic Loading: 사용 중 P을 RAM에 적재/ 미사용 중 P을 보조 기억장치에 적재


3. OS 시스템 종류

1) 다중 프로그래밍: 여러 P가 동일 메모리 번갈아 사용 -> 처리량 극대화

2) 시분할 처리(=Round Robin): 여러 사용자가 동일 시스템 -> 응답시간 최소화


4. OS의 성능 평가 기준

1) Throughput(처리량): 시간 당 작업량

2) Turn-around Time(반환 시간): 작업 완료까지 걸린 시간(실행+대기 T)

3) Reliability(신뢰도): against 에러

4) Availability(사용 가능도): 자원 신속, 충분하게 지원해줄 수 있는가


5. OS 발달 과정

일괄 > 시분할 > 다중 mode > 분산 처리


[2] 프로세스 관리


1. 프로세스

ㄱ. RAM 내 P가 CPU에 의해 처리되는 상태

ㄴ. Dispatch(P를 CPU에 할당 받아 실행되는) 가능

ㄷ. 비동기적 행위(여러 P 찔끔찔끔 돌려가며 실행) 일으키는 주체


*Spool: P와 I/O 장치 사이 속도차이 극복케(Buffer로 하드디스크 사용)

Buffering: CPU와 I/O 장치 사이(RAM 이용) ex) 유튜브: 미리 필요한 데이터 읽어둠으로써


2. 인터럽트 처리

1) Context Switching(문맥 교환): 인터럽트 발생 수와 비례(오버헤드 UP)


3. PCB(Process Control Block)의 항목

1) 식별자: 구분 위한 명칭

2) PC(프로그램 카운터): 다음 실행 명령어 주소 기억

3) 포인터(프로세스 OR 할당 자원의 시작 번지 기억)

4) CPU 레지스터


4. CPU 스케쥴링


1) 프로세스 스케쥴링 알고리즘 비교


 비선점

선점(Pre-emptive):개밥그릇 뺏기 

 일단 cpu 할당시 권한 못 뺏음

 

 일괄 처리 방식 적합

대화형/실시간 적합 

 문맥 교환 적음

많음

 응답시간 예측 어려움

쉬움 


2) 비선점형 방식: 요구 시간 예측 어려움(길어지는 경우 많으므로)


 FIFO

SJF (Shortest Job First)

HRN(Highest Response-ratio Next) 

 구현 간단

한국 아줌마식 

실행 대비 대기 시간 큰 놈 우대 

 반환 시간 길다

긴 작업 무한 연기 될 수도 

 우선순위 = 1+ 대기/서비스 시간

 

 *에이징 기법(장유유서:오래 기다린 놈 우대)로 해결

 


3) 선점형 방식: 시분할에 적합


Round Robin: 찔끔찔끔-전형적 2인자 방식

SRT(Shortest Remaining Time) 

 할당된 시간(Time slice)만큼씩만 사용

 남은 실행 추정치 작은 것부터

 작을 수록 오버헤드 up

 더 작은 게 있으면 중간 중간 양보

 너무 크면 FIFO처럼 됨

 실행 시간 계산해야 돼서 오버헤드 UP

 

 *임계치(Threshold Value) 보다는 커야 스위칭

 

 잦은 스위칭 예방 위한 것임



5. 병행 프로세스와 교착 상태


1) 임계구역(Critical Section)

하나의 프로세스만 자원 이용할 수 있게 지정된 영역(=상호 배제)


*모니터: 프로세스 자원 점유 순서 제어(교통순경처럼)


2) 교착상태(Dead-Lock)

A -> B -> A 방식에서, A와 B 서로가 서로를 기다리는 상태

ex) 오지 않는 서로를 기다리는 커플


*교착상태 발생 필수 4요소

1) 상호배제

2) 점유&대기(Hold&Wait)

3) 비선점

4) 순환대기


*회피 위해서는? 은행원의 알고리즘 이용


[3] 기억 장치 관리


1. 단편화(Fragmentation)


내부-공간 남는 것

외부-너무 큰 것


2. 가상 기억 장치 사용 방식


1) 고정 분할(Paging)

분할 크기 고정(안 넘치도록) > 내부 단편화만 발생

Paging 크기 작을 수록 -> 내부 단편화 작음(모래로 꽉꽉 채우기), 효율이 높다

클 수록 -> 관리하기 용이(모래는 잘 날아감)


2) 가변 분할(Segment)

외부 단편화만 발생


3. 주요 기술


1) Thrashing: 지나친 Page Fault로 인해 성능 떨어지는 것

*방지법 3

ㄱ. 다중 P 줄인다

ㄴ. CPU 이용률 높인다

ㄷ. 자주 사용 페이지(Working Set) RAM에 갖다 두기


2) 구역성(Locality)

특정 부분 집중 참조


*통합(Colaescing): 인접 공간 합치기

집약(Compaction): 떨어진


4. 기억 장치 관리 전략

1) 반입(Fetch)

2) 배치(Place)

3) 교체(Replace)


<배치 전략 비교>


최초 적합(First Fit) 

최적(Best) 

최악(Worst 

첫번째에

크기 제일 비슷 

가장 안 맞는 공백에 

 초기 결정력 빠름

느림 


 내부 단편화 큼

작음 

 


<교체 전략 비교>


FIFO 

LRU(Least Recently Used) 

NUR(Not Used Recently) 

 가장 간단

참조된지 오래된 것

사용된지 오래된 것

 Page Fault

다발

 

 비트값 1 > 최근

비트값 2 > 오래된



5. 디스크 스케줄링


FCFS(First Come First Served) =FIFO 

SSTF(Shorted Seek Time) 

SCAN 

C-SCAN 

온 순서대로(모범시민)

가장 가까운 순 

가까운 순이지만 가던 방향으로 끝까지

무조건 바깥에서 안쪽으로(Crazy)

부하 적을 때 유리 

 일괄처리 유리(편차 큼)

 부하 적을 때 최고

 부하 많을 때 최고

 꼬불꼬불

(편차 큼)기아 상태 발생 

 0까지는 안 감

 편차 작음

꽈배기 

 지팡이

 화살표

 Z 모양


[4] 정보 관리


1. 파일 시스템


1) 파일의 구조

ㄱ. Direct Access File

키 필드 > 해싱 사상 함수 > 물리적 주소 > 기록 검색


ㄴ. ISAF(색인 순차 접근 파일)

순차 + 직접 모두 가능

But 처리 속도 느림/기억 공간 낭비(색인 때문에)

데이터 변경 잦으면 재편성 필요


2) FCB(File Control Block)

FC 위한 정보 갖는 블록(파일명, 위치, 구조, 유형, 생성/제거 시간 포함)


3) Directory

<1단계>

<2단계> 사용자 간 파일 공유 어려움, 이름이 길어짐

<트리 구조> 데이터 생성/파괴 용이, 동명이D 가능(UNIX에서 사용)


4) 접근 제어 기법

ㄱ. Access Control Matrix: 장치(x축) x 사용자(y축)으로 정리

ㄴ. Access Control List: 장치(CPU, 메모리) 별로 제어 권한 정리

ㄷ. Capability List: 사용자, 관리자 별로 정리


[5] 분산 O.S.


1. 컴퓨터 시스템 구조


1)


 SISD(1 Instruction 1 Data)

 일반인 PC

 SIMD

 다중처리 알파고

 MISD

 비현실적

 MIMD

 강결합



2) 주/종 프로세서 구조


Master CPU: 입출력, 연산 다

Slave CPU: 연산만(돈 못 먹고 일만 하는 노예)


2. 분산 OS


장점: 처리 속도, 확장성, 공유 용이

단점: 보안 취약, SW 개발 어려움, 적응성 낮음


3. Thread: 프로세스를 여러 개로 쪼갠 것(일을 나눠 여러 일꾼-CPU에게 나눠주는 식)

장점: 병행성 높음, 실행환경 공유 > 오버헤드 낮음


[6] OS의 실제


1. UNIX


1) 특징

ㄱ. 대화식OS + 오픈 소스(라이센스 비용 저렴)

ㄴ. C언어로 기술

ㄷ. 커널 용량이 작아 이식성 Good


2) UNIX 파일 시스템


부트 Block: 부팅용

실린더 Block: 파일 시스템 정보

i-node 테이블: 파일 정보

파일 테이블


3) 주요 명령어


-fork: 새로운 프로세스 생성, 혹은 복제

-fsck: FS Check

-finger: 사용자 정보 표시

-chmod: 파일에 대한 액세스 권한 설정, 사용자에게 부여

-chown: 소유자 변경

-wait: 자식 프로세스 하나 종료될 때까지 부모 프로세스 중지

-getppid: 자식 프로세스의 ID를 얻음

-mount: 기존 파일 시스템에 새로운 것을 연결

-cat: 파일 내용을 화면에 표시

-is: 현재 디렉토리 내 파일 목록 확인