<div><span style="font-size:9pt;">s1. 컴퓨터 시스템 <p1CPU/p2메모리/p3I/O></span></div> <div> <hr></div> <div><span style="font-size:9pt;">P1 CPU(중앙처리장치) 구조</span></div> <div> <hr></div> <div>1. cpu 구조</div> <div>메인메모리 - ALU+Control Unit - I/O</div> <div>입력장치(자료) -> 연산(일련의 과정을 제어) -> 출력장치(결과)</div> <div><br></div> <div>*CPU 구성 요소</div> <div>ALU 연산장치 : 산술연산, 논리연산들을 수행하는 회로</div> <div><u>레지스터</u> : 데이터 중간결과를 임시 저장</div> <div>Control Unit : 프로그램 코드(명령어) 해석, 제어신호 순차적 발생</div> <div>내부cpu 버스 : ALU - 레지스터 경로</div> <div><br></div> <div>*레지스터 종류</div> <div>PC : 다음 수행 명령어가 저장된 주기억장치의 주소 저장</div> <div>MAR : 주기억장치에 접근하기 위한 주기억장치의 주소 저장</div> <div>MBR : 입출력할 자료를 기억</div> <div>IR : 주기억장치에서 인출한 명령코드를 기억</div> <div><br></div> <div>2. 버스 시스템</div> <div>주기억장치 <------------> 중앙처리장치</div> <div>(명령어 자료) (cpu/명령어 처리)</div> <div>데이터, 주소, 제어 정보를 전달하는 전송 라인</div> <div><br></div> <div>*버스 종류</div> <div>데이터 버스 / 주소버스(기억장소, 장치식별) / 제어 버스(제어신호)</div> <div><br></div> <div>3. cpu 명령어 실행 주기</div> <div>인출Fetch : 메모리에 데이터를 로드, cpu 레지스터에 적재하는 과정<br></div> <div>간접indirect : 간접주소 방식, 메모리 참조시 메모리에 주소가 존재, 메모리 내에서 한 번 더 조회</div> <div>실행excution : 산술, 논리연산 수행</div> <div>인터럽트interrupt : 예기치 않은 문제-> 업무처리를 지속하게 하는 운영체제의 기능</div> <div> - 하드 인터럽트(기계 착오, 외부 입출력, pvc) </div> <div> - 소프트 인터럽트(자신이 실행한 명령, 명려 실행과 관련된 모율의 변화)</div> <div>*인터럽트 종류</div> <div>외부 인터럽트 : 전원 이상, 기계착오, 입출력</div> <div>내부 인터럽트 : 잘못된 명령어, program check interrupt, division by zero, overflow, exception</div> <div>소프트웨어 인터럽트 : svc(super visor call)</div> <div> <hr>p2 메모리 시스템</div> <div>1. 기억장치 계층구조</div> <div><u><span style="font-size:9pt;">레지스터 - </span><span style="font-size:9pt;">캐시 - </span></u><span style="font-size:9pt;"><u>주기억장치</u></span><span style="font-size:9pt;">- </span><span style="font-size:9pt;"><u>보조기억장치</u></span></div> <div>(프로그램과 데이터를 직접 읽음) (주기억장치에 이전 이후 읽음)</div> <div>용량 감소 용량증가</div> <div>비용 증가 비용감소</div> <div>속도 증가 속도감소</div> <div><br></div> <div>2. 캐시메모리</div> <div>CPU와 주기억장치의 속도차이 극복, 고속의 버퍼 메모리</div> <div><span style="font-size:9pt;">*매핑 방식(직접사상/연관사상/집한연관사상)</span></div> <div>1)직접사상</div> <div>메인메모리를 여러 구역으로 분할하여 블록화, </div> <div>캐시의 각 슬롯과 직접 매핑.</div> <div>단순, 신속 / 높은 캐시 미스, 잦은 교체</div> <div>2)연관사상</div> <div>메인메모리의 각 블록이 캐쉬의 어느 슬롯이든 적재 가능</div> <div>복잡, <u>하드웨어</u> 비용 증가 / 지역성 높은 접근시 캐시 적중률 높음</div> <div>3)집합연관사상</div> <div>직접/연관 절충한. 캐시와 메모리가 M 대 1로 대응</div> <div>캐시를 Set으로 나누서 메모리에 직접 연결</div> <div>Set 안에서 어느 슬롯이든 적재 가능</div> <div>직접.관 장점 수용 / 캐시 Fin/Fout 발생 증가, 구현 비용 증가</div> <div><br></div> <div>3. 캐시 메모리 관리 방식</div> <div><span style="font-size:9pt;">cpu가 원하는 데이터가 캐시 메모리에 있을 수 있도록 관리 하는 방법</span></div> <div><span style="font-size:9pt;">1)인출 방식</span></div> <div><span style="font-size:9pt;">Demand Fetch : 필요 시 캐시를 인출</span></div> <div>Pre-Fetch : 예상되는 블록을 미리 패치</div> <div>2) 캐시 메모리 교체 알고리즘 종류</div> <div>Random : page 임의 선정 / overhead 적음</div> <div>FIFO : 가장 올래 있었던 page 교체 / 자주 사용되는 pag 교체 가능성</div> <div>LFU : 가장 사용 횟수가 적은 page 교체 / 최근 적재된 page 교체 가능성</div> <div>LRU : 오랫동안 사용 되지 않은 page 교체 / Time stamping 의한 overhead 존재</div> <div>Optimal : 가장 차좀 되지 않은 page 교체 / 이상적, 구현 불가능</div> <div>NUR : 참조비트, 수정비트. 미사용page 교체 / 최근 사용되지 않은 페이지 교체</div> <div>SCR : 두번의 기회. 참조비트 1로 세 -> 1인경우 0으로 셋 -> 0인 경우 교체</div> <div><br></div> <div>*페이지 교체 관리 시 문제점과 해결방안</div> <div>page fault 발생(페이지부재) / Demand paging(요구 페이징) / Thrashing 발생(스레싱)</div> <div>-기억장채이 적재되지 않은 page의 사용</div> <div>-요구 될떄만 page를 적재하는 방식</div> <div>-process 수행보다 page 교체에 더 많은 시간을 소요하는 현상</div> <div>>load control : 프로세서의 생성 지연, 큐에 작업을 대기 스레싱 현상 감소</div> <div>>locality(구역성) : 시간과 공간 지역성을 집중적 참조</div> <div>>working set : 일정시간동안 참조되는 페이지 집합(set)을 주기억장치에 유지</div> <div>>PFF : page fault 빈도에 따라 residence set 조정</div> <div><br></div> <div>4. 캐시 메모리 일관성</div> <div>각 프로세서가 캐시를 보유하며 </div> <div>캐시에 로드된 데이터를 변경할 경우</div> <div>주기억장치와동일하게 유지되는 메커니즘</div> <div><br></div> <div>*캐시의 불일치(through / back)</div> <div>캐시동작 write through : 메모리에 즉시 변경</div> <div>메인메모리 x= 100</div> <div>캐시메모리 x=100 x=100 x=100</div> <div>프로세서 p1 p2 p3</div> <div><span style="font-size:9pt;">- p1프로세서로 인하여 캐시1 x=110으로 변경 -> 메인메모리 x=110으로 변경</span></div> <div>- 메인메모리와 p2 p3 캐시 메모리 불일치 : 일관성이 깨짐</div> <div><br></div> <div>캐시동작 write back : 데이터를 캐쉬에만 기록 차후에 메모리에 저장</div> <div> <div>메인메모리 x= 100</div> <div>캐시메모리 x=100 x=100 x=100</div> <div>프로세서 p1 p2 p3</div></div> <div>p1이 캐시에만 저장. store가 일어나기 전까지 주기억장치와 캐시가 비 일관성</div> <div> </div> <div>5. 가상 메모리 시스템</div> <div>보지기억장치를 -> 주기억장치로 사용</div> <div>공간을 확대하는 기억장치 관리 방법</div> <div>실제 물리적 메모리 보다 더 큰 용량의 메모리 공간을 제공하는 메모리 관리 기법</div> <div>virtual address space</div> <div> </div> <div>*가상메모리 관리 단위(페이지/세그먼트)</div> <div>page :동일한 크기의 최소 논리 분할 단위</div> <div>static 고정분할. 메모리 관리 측명. 요구 페이지만 적재. 외부 단현화 해결 교체시간 최소</div> <div>내부단편화 발생 쓰레싱, 잦은 디스크i/o</div> <div>segement :용도별(파일관리)로 논리적 단위로 나눈것</div> <div>dynamic 동적분할. 파일관리측명. 사용자 관점. 내부단편화 해결 코드 데이터 공유 용이</div> <div>외부단펴화, 메인메모리 소모가 심함</div> <div> </div> <div>*가상 메모리 관리 정책</div> <div>할당기법 : 프로세스 - 메모리 / 메모리의 블록 단위를 결정 / 고정 가변 페이징 세그먼트</div> <div>호출기법 : 보조기억 - 주기억장치 / 적재 시점 결정 / demand fetch prefetch</div> <div>배치기법 : 페이지->주기억장치 / 적재 시점 결정 /first best next worst (fit)</div> <div>교체기법 : 주기억장치 공간 부족시 교체대상 결정 / random FIFO LRU LFU NUR SCR</div> <div> </div> <div>*할당적책</div> <div>연속할당 : 고정분할(고정/내부단편화) /가변분할(동적/외부단편화)</div> <div>비연속할당 : 페이징(가상메모리블록을 페이지 단위로 관리)/ 세그먼트(가변크기의 세그먼트로 분할)</div> <div> </div> <div>6.가상 메모리 관리 기법</div> <div>1) 페이징 메모리 관리 기법</div> <div>논리주손의 고정된 페이지 블록들로 분할 관리</div> <div>페이지->물리메모리의 프레임과 맵핑</div> <div>페이지를 가리키는 논리주소에서 프레임을 가리키는 물리주소로 변환</div> <div>2) 세그먼트 메모리 관리 기법</div> <div>메모리를 세그먼트 set로 나눠 관리</div> <div>세그먼트 = base address(세그먼트 시작주소) + length value(길이 지정)</div> <div>주소지정 = 세그먼트 셀렉터(세그먼트 베이스 주소) + offset(변위값)</div> <div>세그먼트 테이블에서 base segement addre 획득 + offset >> 물리주소를 산출</div> <div>가변공간을 할당하기에 계산을 통해 주소를 맵핑</div> <div>3) paged segmentation 기법</div> <div>페이지들로 세그먼트를 구성, 세그먼트 표 참조 후 페이지 표를 참조</div> <div> <hr></div> <div>p3. I/O 인터페이스</div> <div>Prgram I/O : 메모리에 기록된 입출력 명령 수행. cpu가 주변장치를 감시(polling 방식)</div> <div>인터럽트 I/O : 인터럽트 요청을 감치. 서브루틴으로 분기하여 수행. 기존 작업은 임시 중단</div> <div> </div> <div>1. DMA(direct memory access)</div> <div>cpu 개입 없이 (입출력장치 - 기억장치) 데이터 전송.</div> <div>cpu 간섭 배제. 메모리와 주변장치 직접 관리. 기계식(속도가 빠르다)</div> <div>*동작방식</div> <div>cycle stealing : dma제어기 cpu가 버스를 공유. cpu가 버스를 사용 하지 않는 사이클에만 접근.</div> <div>burst mode : dma 제어기가 버스를 점유. 동작 완료 후 버스 해제.</div> <div>2. I/O 프로세서</div> <div>채널에 의한 제어. 별도의 전용 입출력 처리 프로세서.</div> <div>selector 채널 : 한번에 한개씩. 단일 입출력만 가능. 고속장치(disk, cdrom).burst mode 동작</div> <div>multiplexer 채널 : 동시에 많은 데이터 전송. 시분할 방식 byte 단위. 저속장시(printer. serial)</div> <div>block multiplexer 채널 : 하이브리드 모드. 동시에 많은 데이터. 블록 단위</div> <div> <hr></div> <div>02. 운영체제 구조<운영체제, 프로세스 관리, cpu 스케줄링, 병행성 제어></div> <div> <hr></div> <div>p1. 운영체제 개요</div> <div>처리능력 향상. 신뢰성 향상. 응답시간 단축. 자원활용 향상(자원공유, 상호배제), 가용성 향상</div> <div>*자원관리 기능</div> <div>프로세스 관리 : 프로세스 스케줄링 및 동기화 관리</div> <div>기억장치 관리 : 메모리 할당 및 회수 관리</div> <div>주변장치 관리 : I/O 스케줄링 점유 관리</div> <div>파일 관리</div> <div>* 프로세서=cpu / 프로세스 = 실행된 프로그램</div> <div> </div> <div>p2. 프로세스 관리</div> <div>1. 프로세스와 스레드</div> <div>1)프로세스</div> <div>실행중인 프로세서(레지스터, 포인터, 데이터의 집합체)</div> <div>프로그램 단위. 실행중이거나 실행 가능한 pcb</div> <div>system call(call 종료까지 blocking). 자원할당을 위한 기본 구분 단위</div> <div>문맥교환으로 인한 부하발생</div> <div>2)스레드</div> <div>제어의 흐름. 프로세스에서 실행 개념만 분리</div> <div>프로세서<제어흐름/<u>실행환경</u>>. 실행 기본 단위</div> <div>library call. 요청 thread만 blocking. cpu를 이용하는 기본 작업</div> <div> </div> <div>2. 프로세스 상태</div> <div>운영체제-프로세스 실행 제어. 정보 유지</div> <div>실행 결정 및 자원 할당 과정.</div> <div>상태 변환을 위한 - job 스케줄러 / 프로세스 스케줄러</div> <div>*프로세스 상태전이도</div> <div>[그림]</div> <div>(프로세스 스케줄러) 종료</div> <div> (작업스케줄러)실행</div> <div>생성 - 준비 - 대기</div> <div>작업큐 준비큐</div> <div>admit / dispatch / Timer run out / Blocked / wake up / release</div> <div> </div> <div>3. 문맥 교환(Context Switching)</div> <div>cpu가 이전의 프로세스 상태를 pcb에 보관하고,</div> <div>다른 프로세스의 정보를 pcb에서 읽어 레지스터에 적재하는 과정</div> <div>준비-실행-대기.</div> <div>인터럽트 / I/O 대기 / Time run ou 경우 발생</div> <div>선점형 os의 경우 우선 순위에 따라 프로세스 문맥 교환 발생</div> <div>2개 이상의 프로그램을 주기억장치에 기억. cpu를 번갈아 사용하면서 자원을 최대로 활용하는</div> <div>멀티프로그밍 환경에서 문맥교환 과정이 이루어지며, 병행처리를 수행</div> <div>*pcb(Pocess Control Block)</div> <div>프로세스 제어 정보. 상태 정보를 저장 하는 구조체.</div> <div>프로세스 상태 관리와 문맥교환을 위해 필요.</div> <div>프로세스 생성시 주기억장치에 유지</div> <div>PID(프로세스 고유번호)</div> <div>포인터(다음 실행 프로세스 포인터)</div> <div>상태(준비,대기,실행 등의 상태)</div> <div>레지스터 세이브 area : 레지스터 관련 정보</div> <div>priority : 스케줄링 및 프로세스 우선순위</div> <div>account : cpu 사용 시간, 실제 사용된 시간</div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.