[정보처리기사]3단원 운영체제 오답노트
3단원 운영체제 오답노트
1장. 시스템 소프트웨어의 구성
- PCB : 프로세스에 할당된 자원에 대한 정보
- 프로세스 상태
- 프로그램 카운터 (Program Counter)
- 프로세스 우선순위
- 중앙처리장치 레지스터 보관 장소
- 프로세스 고유 구별자
- 부모, 자식 프로세스에 대한 포인터
- 부모 프로세스와 자식 프로세스는 PCB 를 공유 X
- 프로세스의 사용빈도 X
- 프로세스의 생성 정보 X
- 파일 할당 테이블 X
- 할당되지 않은 주변장치의 상태정보 X
- 시분할 시스템 (Time Sharing)
- 여러명의 사용자가 사용하는 시스템에서
- 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리
- 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 줌
- 하드웨어를 능률적으로 사용
- 라운드 로빈 방식
- CPU는 작업시간량 (Time Slice, Quantum) 을 나누어 정해진 시간동안 번갈아가며 처리
- 처리기를 작업시간량 (Time Slice) 으로 나누는것 X
- 둘 이상의 CPU X
- 다중프로그래밍을 결합해 대화식 처리(모든 작업이 동시진행)가 가능
- 크로스 어셈블러 : 다른 컴퓨터를 이용한 어셈블리어 번역
- 클러스터 (Cluster) : 전체 컴퓨터들이 상호연결되어 협력하면서 하나의 컴퓨팅 지원인 것처럼 동작
로더 (Loader)
보조기억장치로부터 주기억장치에 올려놓는 기능
- 기능
LARLL
- 할당 (Allocation) : 공간확보 (주체는 프로그래머)
- 연결 (Linking) : (주체는 프로그래머)
- 재배치 (Relocation) : (주체는 언어번역 프로그램)
- 적재 (Loading) : (주체는 로더)
- 종류
- Compile And Go Loader
- 별도의 로더 없음
- 언어번역 프로그램이 로더역할 담당
- 절대 로더 (Absolute Loader)
절대적인
- 로더의 역할 축소
- 기억장소 할당 및 연결을 프로그래머가 직접 지정 (매우 어려움)
- 목적프로그램을 기억장소에 적재시키는 역할만 담당
- 한번 지정한 주기억장소의 위치는 변경이 힘듬
- 동적 적재 로더 (Dynamic Loading Loader)
- 실행 시 필요한 일부분만을 적재하는 로더
- Compile And Go Loader
- 기능
- 프로세스
- 실행중인 프로그램
- PCB를 가진 프로그램
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 오류에 대한 조치는 X
- 운영체제
- 일종의 소프트웨어 장치
- 사용자와 시스템 간 인터페이스
- 기능
- 입출력 장치 및 프로세스 관리
- 스케줄링 (디스크 스케줄링은 X)
- 자원공유
- 자원보호
- 프로세스 생성 제거 X
- 중지 및 수행 X
- 언어번역 X
- JAVA X
- 유지관리 X
- 입출력 주력 X
- 목적
- 처리능력 - Throughput - 일정시간내 시스템이 처리하는 일의 양
- 신뢰도 - Reliability
- 사용 가능도 향상 - Availability - 사용자가 요구할 때 어느정도 신속하게 지원하는가
- 변환 시간 (Turn Around Time) 단축
- 발달 과정
일시다분
- 일괄처리 시스템
- 다중처리, 시분할, 실시간 시스템
- 다중모드 시스템
- 분산처리 시스템
- 인터프리터
- BASIC, SNOBAL
제어 프로그램
다른 업무로의 이행을 자동적으로 수행하기 위한 준비 및 처리 완료를 담당하는 기능
- 감시 프로그램
- 작업 제어 프로그램
- 작업(데이터) 관리 프로그램 : 자료 전송, 파일의 조작 및 처리 담당
- 외에는 처리 프로그램
- 다중 처리 (Multi-processing) 시스템
- CPU를 여러개 두고 동시에 프로그램을 수행
2장. 스레드
- 프로세스의 주요 상태
- 준비 (Ready)
- 실행 (Running)
- 대기 (Waiting)
- 종료 (Exit)
- 적응 기법의 개념을 적용 : MFQ
- 라운드 로빈 (Round Robin, RR) 은 프로세스들 사이에 우선순위를 두지 않고 시간단위 (Time Slice/Quantum) 으로 CPU를 할당
- Time Sharing System 을 위해 고안된 방식
- 시간 할당량이 커지면 FCFS 스케줄링과 같은 효과
- 시간 할당량이 작아지면 프로세스 문맥교환 (오버헤드) 이 자주 일어남
위 문제 답 4번임 (하나의 프로세스에 여러개의 스레드가 존재할 수 있음)
스레드
- 하나의 프로세스 내에서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
- 오버헤드 (프로세스의 생성 및 문맥교환)가 줄어 운영체제 성능 개선
- 동일 프로세스 환경에서 독립적인 다중 수행 가능
- 사용자 수준의 스레드는 사용자의 라이브러리를 사용하여 운용
- 커널에 의한 스레드 운용 X
- 하나의 프로세스에는 여러개의 스레드가 존재 = 병행성 증진
- 스레드는 독립된 제어흐름을 가지며 고유 레지스터 사용
- 레지스터를 모든 스레드들이 공유 X
- 프로세스 내부에만 존재
- HRN 방식
- SJF 를 보완하기 위한 기법
- 우선순위 계산식 : (대기시간 + 서비스시간) / 서비스시간
- 클수록 우선순위가 높음
- SJF 정책
- 실행시간이 가장 짧은 프로세스에게 먼저 CPU를 할당
- 실행시간 주정치가 가장 작은 작업을 먼저 실행
- 제출시간인지 도착시간인지 정확히 확인할 것
- 제출시간이라면 실행시간-제출시간
- 선점 기법
- 우선순위가 높은 프로세스를 빠르게 처리
- 대화식 시분할 시스템 (빠른 응답시간을 요구하는) 에 사용
- 선점으로 인한 많은 오버헤드가 초래
- 인터럽트용 타이머 (선점을 위해 시간 배당을 위한) 클럭이 필요
- 종류
- SRT
- RR
- 다단계 큐
- 다단계 피드백 큐 (MFQ)
- 선점 우선순위
- 비선점 스케줄링 기법
- 이미 할당된 CPU를 다른 프로세스가 강제로 뺏어 사용할 수 없는 공정한 기법
- 응답 시간 예측이 용이
- 종류
- FIFO(FCFS)
- SJF
- 우선순위
- HRN
- 기한부
- FCFS (=FIFO)
- 먼저 도착한 것을 먼저 처리
- 최대 평균 반환시간
- (12+(12+9)+(12+9+6)) / 3 = 20
- 최소 평균 반환시간
- (6+(6+9)+(6+9+12)) / 3 = 16
3장
기억장치 관리 전략
FPR
- 반입 (Fetch) 전략
- 주기억장치로 언제 적재할 것인지 결정
- 배치 (Placement) 전략
- 최초 적합 (First Fit)
- 최적 적합 (Best Fit)
- 최악 적합 (Worst Fit)
- 10K 프로그램
- First Fit : 15K인 영역2
- Best Fit : 10K인 영역3
- Worst Fit : 30K인 영역4
- 10K 프로그램이지만 각 상태가 존재할 경우
- 사용 중인 영역은 건너뛰고
- 영역 크기가 프로그램보다 작으면 건너뛰고
- 15K인 영역C에서 First Fit 이 사용됨
- 내부 단편화
- 저장되는 공간이 더 커서
- 저장된 내용을 뺀 나머지 부분
- 외부 단편화
- 저장되는 내용이 공간보다 더 커서
- 그 공간을 사용하지 못한 부분
- 각각 사용할때에는 최초, 최적, 최악을 하나의 경우로 생각하면 됨
- 교체 (Replacement) 전략
- 페이지교체 알고리즘을 이용
교착상태(DeadLock)
자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
발생 (필요 충분) 조건
- 상호 배제 (Mutual Exclusion)
- 한번에 한 프로세스만 자원 사용
- 점유와 대기 (Hold & Wait)
- 다른 자원이 할당되기를 기다리는동안
- 이미 확보한 자원을 계속 보유하고 있음
- 비선점 (Non-Preemptive)
- 강제로 빼앗을 수 없음
- 환영 대기 (Circular Wait)
- 서로간의 요구관계가 회전
- 상호 배제 (Mutual Exclusion)
해결 방법
- 예방 (Prevention) 기법
- 상호 배제 부정
- 점유 및 대기 부정
- 프로세스가 실행되기 전
- 필요한 모든 자원을 할당하여
- 프로세스 대기를 없애거나
- 자원이 점유되지 않은 상태에서만
- 자원을 요구하도록 함
- 비선점 부정
- 환영대기 부정
- 회피 (Avoidance) 기법
- 교착상태가 발생하면 적절히 피해나가는 방법
- 주로 은행원 Banker 알고리즘에 사용
- 불안전 상태 (교착상태가 발생할 수 있는 상태)
- 모든 시스템이 교착상태는 아님
- 교착상태를 완전히 배제하진 않음
- 사전에 교착상태를 배제하지 않음
- 발견 (Detection) 기법
- 시스템에 교착상태가 발생했는지 점검
- 이후 교착상태가 있는 프로세스와 자원 발견
- 자원할당 그래프를 이용
- 시스템에 교착상태가 발생했는지 점검
- 회복 (Recovery) 기법
- 교착상태의 프로세스에 할당된 자원을 선점
- 프로세스나 자원을 회복
- 예방 (Prevention) 기법
- 임계 구역
- 임계 구역에는 하나의 프로세스만 접근
- 작업은 신속하게
- 인터럽트 발생은 하지 않음
- Test & Set 알고리즘 = 특수한 하드웨어 자원이 필요한 상호배제 기법
4장
NUR (Not-Used-Recently)
안참조변
참조도 안되고 변형도 안된 페이지를 우선적으로 교체함
참조비트(Reference Bit) 와 변형비트(Modified Bit)를 이용
참조 비트 변형 비트 내용 0 0 가장 먼저 페이지 교체 1 1 가장 나중에 페이지 교체
- 내부 단편화
- 저장되는 공간이 더 커서
- 저장된 내용을 뺀 나머지 부분
- 외부 단편화
- 저장되는 내용이 공간보다 더 커서
- 그 공간을 사용하지 못한 부분
- 60K와 160K가 사용하지 못했으므로, 해당 공간의 크기 (50K + 120K) 를 계산하면 되므로 170K 이다
- Worst Fit 이므로, 40K-17K = 23K
- 세그먼테이션 (Segmentation)
- 고유한 이름과 크기를 갖음
- 작업의 크기를 서로 다르게 나누고
- 기억장소 보호 방법으로
- 기억장치 보호키를 사용
- 외부 단편화 발생 가능
- 세그먼트 맵 테이블 필요
- 페이지의 맵 X
- 국부성 (=구역성 = Locality)
- 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
- 캐시 메모리 시스템의 이론적인 근거
- Denning 교수에 의해 증명됨
- 어떤 프로그램의 참조 영역은 지역화 된다
- 시간적 구역성 (Temporal Locality)
- 최근에 참조한 기억장소의 특정 부분은 그 후에도 계속 참조할 가능성이 높음을 의미함
- Loop
- 스택 (Stack)
- 부프로그램 (Sub Program)
- Counting
- 집계 (Totaling)
- 나머지는 공간구역성
- 배열순회 X
- 워킹셋
- 데닝(Denning)이 제안
- 일정시간 동안 자주 참조하는
- 시간에 따라 바뀌게 됨
- 페이지들의 집합
- 프로그램의 구역성(Logicality) 특징을 이용
- 프로세스 수행에 소요되는 시간의 차이 X
- LRU (Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
- B-C-B-A 순이므로 최근에 가장 오랫동안 사용하지 않은 페이지는 C
- 그러므로 B-D-A 순으로 교체됨
- 페이징 크기
- 페이지 크기가 작을 경우
- 많은 페이지수가 필요
- 페이지 사상표의 공간은 더 많이 요구됨
- 알찬 워킹 셋을 유지할 수 있음
- 페이지 크기가 클 경우
- 페이지 단편화로 인해 많은 기억공간을 낭비
- 페이지 사상표의 공간 크기는 줄어듬
- 전체적인 디스크 접근 시간이 줄어들어
- 이동(입출력) 효율이 좋아짐
- 실제 프로그램 수행과 무관한 내용이 포함될 수 있음
- 페이지 크기가 작을 경우
5장.
- 에션바흐 (Eschenbach 스케줄링)
- 부하가 매우 큰 항공예약 시스템을 위해 개발
- 탐구시간의 최적화와
- 회전 지연시간의 최적화를
- 동시에 추구
- 스레싱 (Thrashing)
- 프로세스가
- 기억장치 접근에서
- 지나치게 페이지 폴트가 발생
- 프로세스 수행시간 < 페이지 이동 시간
- 오류율이 클수록 스레싱이 많이 발생
- 전체 시스템 성능 및 처리율 저하
- 다중 프로그래밍의 어느 시점을 넘어서면 스레싱의 빈도가 높아짐
- 해결 방법
- 프레임 제공
- 프로세스 종료
- 부족한 자원 증설
- SSTF
- 탐색 거리가 가장 짧은 요청을 먼저 서비스
- 현재 헤드 위치의 가까운 곳에 있는것을 먼저 처리
- 가운데 트랙이 서비스를 더 받음
- 멀리 떨어진 요청은 기아상태 발생 가능
- 처리량이 많은 일괄 처리 시스템에 적합
- 50-40-70-80-100-120-130-150-180-200-0
- 10+30+10+20+20+10+20+30+20+200 = 370
- 0-14-37-53-65-67-98-122-124-187
- 53>65>67>37>14>0>98>122>124>187
- 아! 요청 대기큐에 0이 존재하지 않으므로 0을 거쳐가는것이 아님
- 그러므로, 53>65>67>37>14>98>122>124>187
- 12+2+30+23+84+24+2+63 = 240
- 14-37-65-67-98-122-124-203
- 53>65>67>37>14>98>122>124>203
- 12+2+30+23+84+24+2+79 = 256
- C-SCAN
- 항상 바깥쪽에서 안쪽으로 움직이면서
- 가장 짧은 탐색 거리를 갖는 요청을 서비스 하는 기법
- 0-40-70-80-100-120-150-180-200
- 50 > 40 > 0 > 200 > 180 > 150 > 120 > 100 > 80 > 70
- 10 + 40 + 200 + 20 + 30 + 30 + 20 + 20 + 10 = 380
- 파일 시스템
- 사용자가 파일을 생성, 수정, 제거 할 수 있도록 기능을 제공
- 파일은 주로 보조기억장치에 저장하여 사용
- 인터럽트에 대한 자동 대처능력이 X
- 섹터 큐잉 (Sector Queuing)
- 회전시간의 최적화를 위해 구현된 디스크 스케줄링 기법
- 파일 디스크립터
- 파일이 액세스되는 동안
- 운영체제가 관리목적으로 알아야 할
- 파일에 대한 정보를 모아 놓은 자료구조
- 파일 제어 블록
- 시스템에 따라 다른 구조 (공용X)
- 파일시스템이 관리하므로 사용자가 직접참조 X
- 파일 디스크립터 정보
- 파일 이름,구조
- 보조기억장치의 유형
- 액세스 제어 정보
- 최종 수정날짜 및 시간
- 오류 발생시 처리방법 X
- 파일 내용 X
6장
- 데이터의 비밀성을 보장
- DES (Data Encryption Standard)
- RSA (Rivest Shamir Adleman)
- FEAL (Fast Encryption Algorithm)
- Read-Solomon code : 데이터 압축에 사용되는 알고리즘
- 디렉토리 구조
- 1단계 디렉토리
- 가장 간단한 디렉토리 구조
- 모든 파일들이 유일한 이름
- 같은 디렉토리 내에 위치하며 관리
- 2단계 디렉토리
MFD
UFD
- 중앙에 마스터 파일 디렉토리
- 그 아래 사용자가 갖고있는 파일 디렉토리가 존재하는 구조
- 트리단계 디렉토리 (3단계 X)
- 운영체제에 사용되는 디렉토리 구조
- 비순환 그래프 디렉토리
- 부 디렉토리의 공동 사용이 가능
- 같이 사용할 수 있도록 지원하기 위한 가장 효율적인 디렉토리
- 공유된 파일을 삭제할경우
- 고아 포인터 발생 가능
- 일반적인 그래프 디렉토리
- 사이클이 허용
- 불필요한 파일을 제거하기 위해
- 참조카운터가 필요한 디렉토리 구조
- 1단계 디렉토리
- 내부 보안
- 하드웨어나 운영체제에 내장된 보안 기능을 이용
- 공용키 보안 X
- 보안을 위한 권한을 DBMS가 자체결정 X
자원 보호 기법
컴퓨터 시스템에서 사용되는 자원들에 대하여 불법적인 접근방지와 손상을 예방하는 것
- 접근제어 행렬
- 전역 테이블
- 접근 제어 리스트
- 객체를 중심으로 구성
- 권한(자격) 리스트
- Capability List
- 행, 즉 사용자에 대한 자격들로 구성
- 권한 제어 행렬 X
- 순차파일
- 레코드를 삽입하는 경우
- 파일을 재구성해야 하므로
- 파일 전체를 복사해야함
- 자기테이프에서 사용
- 기억장치의 효율 좋음
- 검색효율은 별로
- 다음 레코드에 대한 접근이 빠름 (순차적)
- 공간낭비 없음
- 파일 구성이 쉬움
- 어떤 기억매체에서도 실현 가능
- 대화식 처리보다는 일괄 처리에 적합
- 파일 보호 기법
- 파일 명명 (Naming)
- 접근하고자 하는 파일 이름을 모르는 사용자를
- 접근대상에서 제외
- 비밀번호
- 접근제어 (Access Control)
- 각 파일에 접근 목록을 구성
- 접근 가능 사용자와 가능한 동작 기록
- 사용자 신원에 따라 서로 다른 접근 권한을 허용
- 파일 명명 (Naming)
- 색인 순차 파일 (Indexed Sequential File)
- 순차처리와 임의(랜덤)처리가 모두 가능
- 효율적인 검색 기능
- 기본 구역 Prime Area
- 색인 구역 Index Area
- 트랙 < 실린더 < 마스터
- 오버플로우 구역 OverFlow Area
- 인덱스를 처리하는 추가적인 시간이 소요
- 파일 처리 속도가 느림
- 오버플로우 레코드가 많아지면 재편성
- 오버플로우를 처리하기 위한 별도의 공간이 필요
7장
- 분산처리 시스템의 목적
- 신뢰도 (Reliability) 향상
- 자원 공유
- 연산속도 향상
- 보안성 X
- 다중포트 메모리
- 다중처리기 상호 연결방법 중 하나
- 하나의 프로세서에
- 하나의 버스가 할당되어
- 버스를 이용하려는 프로세스 간
- 경쟁이 적음
- 다중처리기에 의한 시스템 구성시 고려사항
- 메모리 충돌
- 캐시 일관성
- 메모리 효율성
- 메모리 용량 X
- 다중처리기 시스템의 상호연결 구조방식
- 공유 버스
- 프로세서, 기억장치, 입출력 장치들간 하나의 버스 통신로만을 제공
- 크로스바 스위치
- 크로스바 교환행렬 : 공유버스 시스템에서 버스의 수를 프로세서 수만큼 증가시킨 구조
- 다단계 상호연결망
- 큐브 X
- 공유 버스
- 주 (Master) - 종 (Slave) 처리기
- 하나의 프로세서가 주 프로세서
- 나머지들을 종프로세서로 지정
- 비대칭 구조
- 주프로세서 고장나면 시스템 전체 다운
- 주프로세서는 입출력, 연산, 운영체제 수행
- 종프로세서는 연산만 담당
- 종국은 주국으로부터 POLL 신호를 받아야함
- 대칭적 처리기 (대칭적 다중프로세서 SMP)
- 하나의 운영체제를 공유 (기억장치, IO장치 공유)
- 가장 복잡하지만 가장 강력한 구조
- 여러개의 프로세서가 동시에 수행 (능력이 비슷 , 동등한 권한)
- 프로세서의 수에 따라 효율이 증가되진 않음
- 프로세서 간 통신은 공유메모리를 통해
8장
- 쉘(shell)
- 명령어 해석기
- 시스템과 사용자간 인터페이스를 담당
- DOS의 COMMAND.COM과 같은 기능 수행
- 기능
- 자체 내장 명령어
- 파이프라인
- 입출력 방향지정
- UNIX의 특징
- 시분할 시스템을 지원 = 대화식 시스템
- C언어
- 트리구조의 다중사용자(Multi-User) 환경
- 동시에 시스템 가용
- 정보와 유틸리티 공유
- 편리한 작업환경
- 여러개의 작업을 병행처리(Multi-Tasking)
- 이식성이 높으며, 장치 프로세스 간 호환성이 높음
- 리스트구조 X
- 디렉토리구조 X
- 단일 작업용 X
- 주요 명령어
- fork : 새로운 프로세스 생성
- chmod : 파일에 대한 액세스 권한
- chown : 파일의 소유자 변경
- wait : 자식프로세스가 종료될 때 까지 부모 프로세스 임시중지
- mount : 기존 파일 시스템에 새로운 파일 시스템을 서브디렉터리에 연결 (외장하드 연결시)
- cp : 파일 복사
- mv : 파일 이동 및 이름 변경
- rm : 파일 삭제
- cat : 파일 내용을 화면에 표시 (dos의 type과 유사)
- getppid : 자식의 프로세스 ID를 얻음
- fsck : 파일 시스템 검사/보수하여 무결성 검사
- finger : 사용자 정보 표시
- ls : 현재 디렉토리 내 파일목록 확인
- pipe : 앞의 결과를 뒤의 입력으로 보낼 때
파일 시스템 구조
사용자가 적합한 구조로 파일을 구성할 수 있도록
- 부트(Boot) 블록
- 부팅시 필요한 코드를 저장
- 슈퍼(Super) 블록
- 사용가능한 I-node
- 사용가능한 디스크 블록의 갯수
- 전체파일 시스템에 대한 정보
- File시스템마다 각각의 슈퍼블록을 가지고 있음
- I-node 블록
- 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록
- 파일소유자
- 파일 크기
- 파일 타입
- 생성 시기
- 최종 수정 시기
- 파일 링크 수
- 데이터가 저장된 블록의 시작 주소
- 파일 경로명 X
- 파일이 최초로 수정된 시간 X
- 파일 사용 횟수 X
- 데이터 블록
- 디렉터리 별
- 디렉터리 엔트리와
- 실제 파일에 대한 데이터가 저장
- 부트(Boot) 블록