(이전 게시물에 이어서) 2차 기회 알고리즘(Second-Chance Algorithm) 참조 비트 사용하고 클록 교체(clock replacement)라고도 함 교체될 페이지를 순서대로 조사 참조 비트가 1이면 0으로 세트하고 한 번 더 기회를 줌 참조 비트가 0이면 해당 페이지를 교체 순환 큐(circular queue)를 사용하여 구현 포인터(시계의 침)가 다음에 교체될 페이지를 가리킴 개선된 2차 기회 알고리즘 (Enhanced Second-Chance Algorithm) (참조비트, 변경비트) 두 개의 비트를 조합하여 등급을 설정 (0, 0) 최근에 사용되지도 변경되지도 않은 경우 : 교체하기 가장 좋은 페이지 -
🍜 배경 프로그램 코드는 실행 시에 메모리에 적재되어 있어야 하지만, 전체 프로그램의 사용은 빈번하지 않음 (ex. 에러 코드, 비정상적인 루틴, 대규모 데이터 구조) 전체 프로그램 코드가 동시에 필요하지 않음 프로그램의 일부만 메모리에 적재하고 실행 시 이점 프로그램이 더 이상 물리 메모리의 크기 제약을 받지 않음 각 프로그램의 실행 시 메모리를 덜 차지함 동시에 더 많은 프로그램의 실행이 가능 응답시간이 증가시키지 않으면서 CPU 활용도의 효율성 증대 프로그램을 메모리로 적재하거나 스왑 시에 더 적은 I/O 필요 각 사용자 프로그램이 더 빨리 실행 가상 메모리(virtual memory)는 실제의 물
🐶 세그먼테이션(Segmentation) 💁 프로그램의 사용자 관점 🦏 세그먼테이션 하드웨어 논리 주소는 두 부분으로 구성 : segement-number, offset 세그먼트 테이블(segment table) 사용자가 정의한 이차원 주소는 일차원의 실제 주소로 사상 테이블의 각 항목 세그먼트의 기준 (base) : 세그먼트의 시작 주소를 표시 세그먼트 한계 (limit) : 세그먼트의 길이를 명시  레지스터와 상한(limit) 레지스터 사용 베이스 레지스터는 가장 작은 합법적인 물리 메모리 주소의 값을 저장 상한 레지스터는 주어진 영역의 크기를 저장 🤡 주
🛶 교착 상태 회피 (Deadlock Avoidance) 교착 상태를 회피하는 다른 대안은 자원이 어떻게 요청될지에 대한 추가 정보를 제공하도록 요구 가장 단순하고 제일 유용한 모델은 각 프로세스가 자신이 필요로 하는 각 유형의 자원마다 최대 수를 선언하도록 요구 교착 상태 회피 알고리즘은 시스템에 순환 대기 상황이 발생하지 않도록 자원 할당 상태를 검사 자원 할당 상태는 가용 자원의 수, 할당된 자원의 수 그리고 프로세들의 최대 요구 수에 의해 정의 안전 상태 (Safe State) 시스템이 모든 프로세스들의 안전 순서(safe sequence)를 찾을 수 있다면 시스템은 안전(safe) Pi가 요청하는 자원을 시스템에 현재 남아 있는 자원과 앞에
😽 교착 상태 문제 (Deadlock Problem) 프로세스가 한 자원을 점유하고 봉쇄되고(blocking), 다른 프로세스가 이 자원을 획득하기 위해 요청 후 기다리는 상태 예 하나의 프린터와 하나의 DVD 드라이브가 있는 시스템 프로세스 P1는 DVD 드라이브를 점유하고, 프로세스 P2는 프린터를 점유한다고 가정 P1가 프린터를 요청하고, P2가 DVD 드라이브를 요청한다면 교착 상태가 발생 각각은 프린터와 DVD를 방출하는 사건을 기다리는데, 이 사건은 서로 대기 중인 프로세스들 중의 어느 하나에 의해서만 발생이 가능 🤺 시스템 모델 (System Model) 시스템의 자원(resource)은 다수의 유형으로 분할 각 자원의 유형
🥭 교착 상태 (Deadlock)와 기아 교착 상태 (deadlock) 두 개 이상의 프로세스들이, 오로지 대기중인 프로세스들 중 하나에 의해서만 야기될 수 있는 사건(signal())을 무한정 기다리는 상황 두 개의 프로세스 P0과 P1에서 1로 초기화된 세마포 S와 Q를 접근하는 시스템 예 기아 (starvation) 교착 상태와 연관된 무한 봉쇄(indefinite blocking) 프로세스들이 세마포에서 무한정 대기하는 것으로, 프로세스가 중지된 세마포 큐에서 제거되지 않음 🥞 임계 구역 문제 발생 운영체제에서 임계 구역 문제가 언제 발생? 커널에서 인터럽트 루틴 처리 프로세스가 커널에서 선점 : 시스템 호출 중에 선점 -
🥑 배경 공유 자료를 병행 접근하면 인터럽트 시점 문제로 자료의 불일치 초래 자료의 일관성을 유지하기 위해 병행 실행 중인 프로세스들의 바른 순서 수행을 보장하는 메커니즘 필요 경쟁 상황 (race condition) 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황 경쟁 상황으로부터 보호하기 위해 한 순간에 하나의 프로세스만이 공유 자료를 조작하도록 보장하는 프로세스들을 동기화 임계구역 문제 (Critical-Section Problem) n개의 프로세스는 임계구역(Critical-Section)이라고 부르는 코드 부분 포함 다른 프로세스와 공유하는 변수의 변경, 테이블의 갱신, 파일
🍨 다중 처리기 스케줄링 (Multiple-Processor Scheduling) 여러 개의 CPU가 있는 다중 처리기에서 스케줄링은 더 복잡 여러 스레다 병렬로 실행되어 부하 공유 가능 다중 처리기 스케줄링에서는 아래 이슈를 고려 대칭/비대칭 다중 처리 처리기 친화성 부하 균등화 SMT 대칭/비대칭 다중 처리 비대칭 다중 처리(asymmetic multiprocessing) 주 서버(master server)라는 하나의 처리기가 모든 스케줄링 결정과 입/출력 처리 그리고 다른 시스템의 활동을 취급 다른 처리기들은 다만 사용자 코드만을 수행 단지 한 처리기만 시스템 자료 구조를 접근하여 자료 공유의 필
🤽CPU 스케줄러 단기 스케줄러는 실행 준비가 되어 있는 메모리 내의 프로세스들 중에서 선택하여, 이들 중 하나에게 CPU를 할당 비선점 스케줄링과 선점 스케줄링 비선점 스케줄링은 스케줄링 면에서 선택의 여지가 없음 실행을 위해 새로운 프로세스를 반드시 선택 선점 스케줄링은 선택의 여지가 있음 공유 자료에 대한 접근을 조정하는 데 필요한 비용을 유발 선점은 또한 운영체제 커널 설계에 영향 (동시 사용으로부터 보호) CPU 스케줄링 결정 네 가지 상황 한 프로세스가 실행 상태에서 대기 상태로 전환될 때 (ex. IO요청이나 자식 프로세스들 중의 하나가 종료되기를 기다리기 위해 wait를 호출할 때) : 비선점 프로세스가 실행 상태에서 준비 완료 상태로 전환될
🎫프로세스 OS는 다양한 프로그램을 수행 일괄 처리 시스템(batch system)은 작업(job)들을 실행 시분할 시스템(time-shared system)은 사용자 프로그램들 또는 태스크(task)들을 수행 작업, 태스크, 프로세스는 거의 비슷한 단어 프로세스란 수행중인 프로그램! 프로세스 구성 요소 텍스트 섹션(text section) : 프로그램 코드 프로그램 카운터(pc, program counter), 레지스터 스택(stack) : 임시 데이터 저장소 (매개 변수, 복귀주소, 지역 변수) 데이터 섹션(data section) : 전역변수 힙(heap) : 실행 중에 동적으로 할당되는 메모리 프로그