2025/02 75

[Chapter 5] 개념 이해를 위한 운영체제 [메모리 관리 - 다중 프로그래밍 시스템]

다중 프로그래밍 시스템에서는 다수의 사용자 프로세스를 메모리에 적재하기 위하여 사용자 영역을 여러 개로 분할하여야 한다. 여기서 분할은 하나의 프로세스를 메모리에 적재하는데 필요한 메모리 영역을 의미하며 크기가 고정 혹은 가변적이다.다수의 고정 혹은 가변 분할된 메모리 영역에 프로세스를 할당하는 방법에는 연속(contiguous) 할당과 불연속(non contiguous) 할당이 있다. 연속 할당연속 할당은 하나의 사용자 프로세스를 임의의 분할에 연속적으로 할당하는 방법으로서 분할의 크기가 할당하려는 사용자 프로세스보다 반드시 크거나 같아야 한다.연속 할당 기법은 고정 혹은 가변 분할에 따라 차이가 있다. 고정 분할고정 분할은 다중 프로그래밍을 위하여 메모리 주소 공간을 임의의 크기로 분할하여 사용자 프..

CS/운영체제 2025.02.27

[Chapter 5] 개념 이해를 위한 운영체제 [메모리 관리 - 단일 프로그래밍 시스템]

단일 프로그래밍 시스템에서는 메모리 공간을 단순히 운영체제(모니터 혹은 커널) 영역과 사용자 영역으로 분할하여 사용한다. 따라서 운영체제 영역을 제외한 나머지 영역을 하나의 사용자 프로세스에게 할당된다.이러한 시스템에서 메모리 공간을 효율적으로 사용하기 위한 운영체제의 특별한 기법이 필요 없다. 그러나 사용자 프로세스의 오류에 의해 운영체제가 파괴되는 것으로부터 보호할 필요가 있다.CPU 내부의 경계 레지스터(boundary register)에 사용자 영역의 시작 주소를 설정함으로써 사용자 프로세스의 오류에 의해 운영체제 영역으로 침입하는 것을 방지하도록 한다.운영체제는 사용자 프로세스가 메모리를 참조할 때마다 CPU의 경계 레지스터 값과 비교하겨 클 경우에만 접근을 허용한다.물론 사용자 프로세스는 입출..

CS/운영체제 2025.02.27

[Chapter 5] 개념 이해를 위한 운영체제 [메모리 관리 - 개요]

어떤 프로그램(혹은 프로세스)이 실행되기 위해서는 그 프로그램이 반드시 메모리(주 기억장치)에 적재되어야 한다. 오직 하나의 프로세스만 지원하는 단일 프로그래밍 시스템에서는 운영체제가 적재된 메모리 공간을 제외한 나머지 영역을 하나의 프로세스가 독점하여 사용하게 된다. 따라서 메모리 공간을 효율적으로 사용하기 위한 운영체제의 특별한 기법이 필요 없다. 그러나 다수의 프로세스를 지원하는 다중 프로그래밍 시스템에서는 운영체제가 적재된 메모리 공간을 제외한 나머지 영역이 다시 분할되어야 한다. 이러한 분할은 정적 또는 동적으로 이루어지기 때문에 메모리 공간을 보다 효율적으로 이용하기 위한 운영체제의 메모리 관리 기능이 요구된다. 효율적인 메모리 관리 정책을 결정하기 위해서는 기본적으로 다음과 같은 사항들을 고..

CS/운영체제 2025.02.27

[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 교착상태 해결책]

교착상태 해결책에는 교착상태가 발생하지 않도록 자원을 할당하는 프로토콜을 사용하는 방법으로써 예방(prevention)과 회피(avoidance) 그리고 교착상태를 허용하고 발생 여부를 탐지(detection)하여 복구(recovery)시키는 방법이 있다. 그러나 운영체제에서 교착상태에 대한 해결책을 지원하지 않을 경우에는 교착상태의 프로세스를 강제로 종료시키거나 재부팅(rebooting)할 수 밖에 없다.교착상태 예방교착상태 예방은 교착상태의 발생 가능성을 사전에 제거함으로써 예방하는 것이다. 교착상태의 원인(4가지) 중 어느 하나라도 만족하지 않도록 운영체제에서 자원을 관리함으로써 교착상태의 가능성을 사전에 제거할 수 있다. 이 방법은 개념적으로 간단명로하지만 자원 할당에 대한 지나친 제약으로 지원의..

CS/운영체제 2025.02.26

[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 교착상태 원인]

교착상태는 다중 프로그래밍 환경에서 효율적인 자원 관리를 위해 자원을 공유하면서 병행적으로 실행하기 때문에 발생한다. 일반적으로 프로세스는 다음과 같은 순서로 자원으로 사용한다.요청(request)프로세스는 시스템 호출을 통하여 사용하고자 하는 자원 할당을 운영체제에게 요청한다. 운영체제는 가능한 자원을 요청한 프로세스에게 할당해 준다.만약 요청한 자원이 다른 프로세스에 의해 사용중일 경우 프로세스는 대기 상태에서 기다리게 된다.사용(usage)프로세스는 할당받은 자원을 사용한다.해제(release)프로세스는 자원을 사용한 후 시스템 호출을 통하여 운영체제에게 자원 해제를 요청한다.프로세스의 교착상태가 발생하는 근본적인 원인은 다중 프로그래밍을 지원하는 운영체제에서 네 가지 조건을 동시에 만족시키면서 자..

카테고리 없음 2025.02.26

[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 개요]

다중 프로그래밍을 지원하는 운영체제에서 여러 개의 프로세스들은 제한된 자원들을 공유하여 사용하게 된다. 프로세스가 어떤 자원을 사용하고자 할 경우 프로세스는 그 자원의 할당을 운영체제에게 요청한다. 운영 체제는 요청된 자원이 사용 가능하면 그 자원을 요청한 프로세스에게 즉시 할당해 주지만 그 자원이 다른 프로세스에 의해 점유되어 있으면 요청한 프로세스를 대기 상태에서 기다리도록 한다. 이렇게 대기 상태로 전환된 프로세스가 무한정 기다리게 될 경우가 발생할 수도 있다. 자원 A, B가 프로세스 1, 2에게 각각 할당된 상태에서 프로세스 1, 2가 자원 B, A의 할당을 각각 요청하게 되면 프로세스 1, 2는 무한정 기다리게 된다.이와 같이 다중 프로그래밍 환경에서 프로세스가 결코 발생하지 않을 특정 사건을..

CS/운영체제 2025.02.26

[Chapter 3] 개념 이해를 위한 운영체제 [병행성 - 리눅스 병행성]

스레드프로세스 내부에서 생성된 스래드들은 그 프로세스에게 할당된 모든 자원을 서로 공유하면서 병행적으로 실행한다.리눅스에서 전역 변수로 선언된 메모리 공간은 스래드들의 공유 메모리로 사용된다.따라서 스래드 함수 내부에서 전역 변수를 접근하는 부분이 임계 영역에 해당되기 때문에 공유 자원을 접근하는 임계 영역에 대한 스래드 간의 상호 배제 및 동기화 기법이 요구된다.#include#include#includeint count = 0;void *thread(void *unused){int i, j;for(i = 0; i pthread_create()를 이용해 10개의 스래드를 생성한다. 10개의 스래드들은 전역 변수(count)의 값을 1씩 증가 및 감소시키는 동일한 스래드 함수(*thread())를 병행적..

CS/운영체제 2025.02.25

[Chapter 3] 개념 이해를 위한 운영체제 [병행성 - 프로세스 간 통신]

프로세스 간 통신(IPC: Interprocess Communication)은 서로 다른 프로세스 끼리 데이터를 주고 받는 것이다. 프로세스 간 통신을 위해선 기본적으로 공유 메모리와 공유메모리에 대한 상호 배제적 접근을 위한 동기화 기법이 요구된다. 운영체제에 따라 다양한 형태의 IPC 기법이 지원되고 있지만 공유 메모리를 어느 주소 공간에 확보하느냐에 따라 근본적인 차이가 있다. 모든 프로세스는 서로 다른 사용자 영역을 가지고 있지만 운영체제 영역은 공유하고 있음을 유의해야 한다. 프로세스 간 통신을 위한 공유 메모리를 사용자 영역 혹은 운영체제 영역을 사용할 수 있다. 사용자 영역을 공유 메모리로 사용할 경우에는 별도의 동기화 기법이 요구된다. 반면 운영체제 영역을 공유 메모리로 사용할 경우에는 동..

CS/운영체제 2025.02.25

[Chapter 3] 개념 이해를 위한 운영체제 [병행성 - 임계 영역]

프로세스의 영역 중에서 공유 자원을 접근하는 코드 영역을 임계 영역"(critical section)" 이라고 부르며, 어떤 프로세스가 이 영역을 실행하고 있을 때 그 프로세스가 "임계 영역에 있다"고 말한다.ex) 공유 변수(buffer, counter)를 접근하는 코드 영역이 임계 영역에 해당되며, 생산자 프로세스의 counter = counter+1 문장이 실행되고 있을 때 생산자 프로세스가 "임계 영역에 있다"고 말한다. 마찬가지로 소비자 프로세스의 counter = counter-1 문장이 실행되고 있을 때 소비자 프로세스가 임계 영역에 있다"고 말한다. 주의할 점 모든 프로세스가 임계 영역을 가지고 있는 것은 아니다. 그러나 자원을 공유하면서 병해적으로 실행되는 프로세스들은 반드시 임계 영역을..

CS/운영체제 2025.02.24

[Chapter 3] 개념 이해를 위한 운영체제 [병행성 - 개요]

다중 프로그래밍 환경에서 실제로 실행 중인 프로세스는 하나이지만 다수의 프로세스들이 동시에 실행되고 있는 것처럼 보인다. 마찬가지로 다중 스레딩 환경에서도 실제로 실행중인 스레드는 하나이지만 다수의 스래드들이 동시에 실행되고 있는 것처럼 보인다. 이와 같은 환경에서 다수의 프로세스 혹은 스래드들이 동시에 실행되는 것을 프로세스 혹은 스래드의 "병행성(concurrency)"라고 부른다. 다중 프로그래밍 환경에서 다수의 프로세스들이 어떤 자원을 공유하면서 병행적으로 실행할 경우, 상호 영향을 미치게 되기 때문에 프로세스의 실행 결과 값이 달라질 수 있다. 마찬가지로 스래딩 환경에서도 동일한 프로세스에서 생성된 스래드들은 그 프로세스에게 할당된 자원들을 공유하면서 병렬적으로 실행되기 때문에 상호 영향을 미치..

CS/운영체제 2025.02.24