Computer Science/OS
[OS] 연속 메모리 할당
단일 프로그래밍 환경에서 연속 할당 초기 컴퓨터 시스템은 사용자 한명만 컴퓨터를 사용할 수 있었고 컴퓨터 자원도 사용자 혼자만 마음대로 쓸 수 있었다. 그리고 프로그램은 메모리보다 클 수 없고 직접 배치 과정을 수행하여 항상 같은 메모리 위치에 적재되었다. 단일 프로그래밍 환경에서 연속 메모리 할당은 메모리를 사용자 영역과 OS 상주 영역으로 나눈다. OS 는 상위나 하위에 자유롭게 둘 수 있다. OS 가 상주한 영역인 모니터, 사용자 프로그램이 들어 있는 영역인 사용자, 사용하지 않는 영역인 미사용으로 나눌 수 있다. 메모리를 제어하는 모든 권한이 사용자에게 있기 때문에 사용자가 주소를 잘못 지정하면 OS가 손상될 수 있다. 그래서 (b) 와 같이 프로세서에 경계 레지스터를 두어 이를 방지한다. 사용자..
[OS] 메모리 관리의 개요
메모리 관리의 개념과 정책메모리 관리의 개념모든 프로그램은 우선 메모리에 적재되어야 실행이 가능하므로 메모리는 프로그램을 실행하는데 중요한 작업 공간이다.메모리 관리는 프로세스들을 위해 메모리를 할당하고 제거하며 보호하는 활동이다. 더 단순하게는 프로세스의 요청에 따라 메모리의 일부를 할당하고, 필요 없으면 자유롭게 재사용할 수 있도록 하는 것이다.디스크에 있는 프로그램을 실행하려면 먼저 메모리에 적재한 후 메모리 관리자가 예약된 메모리를 할당해 주어야 하는데, 이것도 메모리 관리에 해당한다.다중 프로그래밍 시스템에서는 여러 프로세스가 메모리에 상주할 수 있도록 OS 가 동적으로 메모리를 세분화하는 이 과정도 메모리 관리에 해당한다. 메모리 관리는 메모리 관리자가 담당한다. 메모리 관리자는 OS 의 관리..
[OS] 스케줄링 알고리즘
스케줄러는 스케줄링 알고리즘에 따라 프로세서를 할당하고 작업을 완료한다. 대부분의 알고리즘은 대화식 사용자 환경과 빠른 응답 시간을 구현하는 것에 집중하는데, 여기서는 단일 처리 시스템을 기준으로 주요 스케줄링 알고리즘을 알아볼 것이다. 원칙적으로는 1개의 프로세스가 여러 프로세서 버스트를 가진다. 여기서는 간략하게 프로세서 버스트 1개의 길이를 프로세스 길이, 또는 프로세스 실행 시간이라고 칭한다. 기본 스케줄링 공평성 중시 : FCFS, RR 효율성 중시 : SPN, SRTN, HRN 효율성 중시 알고리즘을 사용하기 위해서는 실행시간을 예측해야하는데 이에 대한 방법의 부재와 예측하는데 부하가 생길 수 있음. 선입선처리(FCFS, First-Come-First-Served) 스케줄링 선입선처리(FCFS..
[OS] 프로세스 스케줄링의 이해
스케줄링의 개념 단일 처리 시스템을 사용하지 않는 이유중 한 가지는 바로 이 스케줄링과 관련이 있다. 단일 처리 시스템에서 실행 중인 프로세스가 입출력을 요청하면, 이 프로세스가 실행을 마칠 때 까지는 사용하던 자원을 대기해야 하므로 효율이 많이 떨어진다. 하지만 다중 처리 시스템에서는 여러 프로세스를 동시에 메모리에 올려놓고 실행 중인 프로세스가 입출력을 요청하면, 운영체제가 실행중인 프로세서를 회수하여 다른 프로세스에게 할당한다. 이처럼 다중 처리 시스템에서는 다음과 같은 장점을 얻을 수 있다. 프로세서 이용율을 높일 수 있다. 프로세서 처리율(주어진 시간에만 처리하는 작업량)이 증가한다. 다중 프로그래밍에서 프로세서를 할당할 프로세스를 선택할 때 어떤 전략이 필요한데 이때 필요한 개념이 스케줄링 이..
[OS] 기아 상태와 식사하는 철학자 문제
교착 상태가 자원을 자유롭게 할당한 결과(자원 부족) 라면, 기아 상태는 작업이 결코 사용할 수 없는 자원을 계속 기다리는 결과(교착 상태)를 예방하려고 자원을 할당할 때 발생(기다림)하는 결과이다. 보편적인 기아 상태 정의 운영체제에서의 "기아 상태"는 프로세스 스케줄링에서 발생할 수 있는 현상을 말한다. 기아 상태는 CPU 스케줄링 알고리즘 중 하나인 "스케줄러 기아 현상"에 의해 발생한다. 스케줄러 기아 현상은 우선순위가 낮은 프로세스가 항상 우선순위가 높은 프로세스에게 밀려서 실행 기회를 얻지 못하는 상태를 의미한다. 일반적으로 운영체제는 다양한 프로세스를 관리하며, 우선순위를 부여하여 실행 순서를 결정한다. 그러나 스케줄러 기아 현상은 우선순위가 낮은 프로세스가 계속해서 우선순위가 높은 프로세스..
[OS] 교착 상태의 해결 방법
이 포스팅에서는 교착 상태 문제를 해결하는 세가지 방법에 대해 알아볼 것이다. 시스템이 교착상태가 발생하지 않도록 예방(prevention) 하는 방법 교착 상태의 발생 가능성을 배제하지 않고 이를 적절히 회피(avoidance)하는 방법 교착 상태를 허용하되 교착 상태를 탐지(detection)하여 다시 회복하는 방법 탐지 및 회복은 사용하기 어렵고 오버헤드가 증가하므로 간단하게 살펴볼 것이다. 1. 교착 상태 예방 기법 4 가지의 교착 상태 발생 조건 중 하나라도 발생하지 않도록 하여 교착 상태를 예방하는 것 (상호배제 문제는 고려해야 함) 전용 자원에서는 교착 상태가 발생하지 않으므로 프로세스가 원하는 자원을 배타적으로 사용하려는 것을 제외시켜야 함. 하벤더(Havender, 1968년)가 상호배제..
[OS] 교착 상태(deadlock) 개념과 발생 원인
교착 상태의 개념 교착 상태(deadlock) 결코 일어나지 않을 사건(event)을 기다리는 상태. 즉, 컴퓨터에서는 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원(비공유)을 기다릴 때를 의미한다. 프로세스 A는 스캐너 사용 권한을 요청하여 허용되었고, 프로세스 B는 CD 레코터를 요청하여 허용 프로세스 A가 CD 레코더를 요청하더라도 프로세스 B가 CD 레코더를 해제할 때까지 요청 거부 프로세스 B가 CD 레코더를 해제하지 않고 스캐너를 요청하면 두 프로세스는 서로 차단되어 영원히 기다림. 초기 일관 처리 시스템에서는 교착 상태가 발생하지 않았다. 사용자가 작업 제어 카드에 작업을 완료하는데 필요한 자원을 명시했고 일관 처리 시스템의 OS는 요청한 자원을 준비 큐로 이동시키기 전에 먼저 사..
[OS] 상호배제와 동기화
상호배제의 개념 상호배제(Mutual Exclusion)는 병행 프로세스에서 특정 공유 자원을 한 순간에 한 개의 프로세스만 사용할 수 있을 때, 프로세스 하나가 공유 데이터에 접근하는 동안 다른 프로세스가 해당 테이터에 접근할 수 없게 제어하는 기법이다. 프로세스 간 동기화 물론 읽기 연산은 공유 데이터에 동시에 접근해도 문제가 발생하지 않는다. 하지만 변수나 파일은 프로세스 별로 하나씩 차례로 읽거나 쓰도록 해야 한다. 이때 동기화는 공유자원을 동시에 사용하지 못하게 실행을 제어하는 기법이다. 두개 이상의 프로세스를 한 시점에서 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로 상호배제의 한 형태이다. 동기화는 상호배제를 보장하지만, 교착 상태와 기아 상태가 발생할 수 있다...
[OS] 병행 프로세스
병행 프로세스의 개념 컴퓨터는 프로그램 작업을 수행하는 데 사용할 수 있는 여러 자원으로 구성된다. 프로세서 : 실제로 명령을 실행 메인 메모리 : 데이터를 저장 레지스터 : 프로세서의 임시 저장소 캐시(cache) : 프로세서가 자주 접근하는 프로세서 메모리 디스크 : 프로그램을 영구 저장 입출력 장치 : 키보드, 마우스, 프린터 등 네트워크 포트 이 중 메모리 같은 자원은 공유 영역으로써 모든 프로세스가 동시에 공유한다. 즉, 이 메모리 자원은 공유 영역으로서 병렬(parallel) 로 사용된다. 반면 입출력 장치 일부나 프로세서는 한 번에 프로세스 하나만 사용할 수 있는 공유 자원이다. 프로세서 하나는 한 번에 프로세스 하나만 실행할 수 있다. 하지만 OS가 프로세서를 빠르게 전환하여 프로세서 시간..