[운영체제] 가상메모리와 주소 변환 - Part4. 페이징/세그먼테이션 혼용기법 앞의 두 글 Part2, Part3에서 페이징 기법에 대해 살펴보았다. 이번 글에서는 세그먼테이션의 개념과, 페이징과 세그먼테이션을 혼용한 메모리 관리 기법에 대해 다뤄보도록 한다. 세그먼테이션이란? 세그먼테이션은 메모리를 **논리적인 단위(세그먼트)**로 나누는 방식이다.프로그램은 보통 여러 영역으로 구성되는데, 예를 들어 다음과 같은 영역들이 있다.코드 영역데이터 영역스택 영역세그먼테이션은 이 각각을 별도의 세그먼트로 분리하여, 각 영역을 독립적으로 관리할 수 있도록 해준다.이 방식의 장점은 다음과 같다:논리적 구조를 명확하게 표현 가능각 세그먼트의 크기가 가변적이라 필요한 만큼만 메모리 할당 가능메모리 보호, 공유, 동적 확장 등 고급 기능에 유리하지만 단점도 있다. 단편화(fragmentatio.. 2025. 6. 10. [운영체제] 가상메모리와 주소 변환 - Part3. 연관/직접사상의 동적 주소변환 과정 앞선 글 Part2에서 페이지 사상표를 이용하여 동적 주소변환을 하는 직접사상에 대해 알아보았다. 이번 글에서는 주소변환의 또 다른 방식인 연관사상(associative mapping) , 그리고 연관사상과 직접사상을 같이 사용하는 연관/직접 사상에 대해 알아보도록 한다. 연관/직접 사상 방식의 주소 변환 흐름가상주소는 (p, d) 형태다.p: 가상 페이지 번호d: 해당 페이지 안에서 몇 바이트 떨어져 있는지 나타내는 변위(오프셋)이 주소를 물리주소 (p′, d)로 변환하는 과정은 다음 두 가지 중 하나로 진행된다. ✅ 1단계: 연관사상표에서 먼저 찾기프로세스가 어떤 변수나 데이터(a)를 참조하는 명령어를 실행한다.CPU가 해당 명령을 실행해 가상 주소 (p, d)를 사용해서 메모리 접근을 시도한다.. 2025. 6. 10. [운영체제] 가상메모리와 주소 변환 - Part2. 페이징 기법과 데이터 참조 과정 페이징이란? 페이징(paging)은 운영체제가 가상 메모리와 물리 메모리를 효율적으로 관리하기 위해 사용하는 대표적인 메모리 관리 기법이다. 핵심 아이디어는 메모리를 고정된 크기의 블록(페이지)으로 나누고, 필요한 페이지만 메모리에 적재해서 사용하는 것이다. 지난 Part1 글에서 가상 메모리와 물리 메모리의 개념에 대해 알아보았다. 페이징 기법에 대해 알아보기 전에 간단히 가상메모리와 가상 주소의 개념을 복습해보자. 가상메모리와 메모리 가상메모리는 프로세스(프로그램)가 사용하는 논리적인 메모리 공간이다.실제로는 물리메모리(RAM)와 디스크(보조기억장치)에 걸쳐 존재한다.가상메모리는 고정된 크기의 블록인 페이지(page) 단위로 나뉜다.메모리도 같은 크기의 블록인 페이지 프레임(page frame)으로 .. 2025. 6. 10. [운영체제] 단일/다중 프로그래밍 환경에서의 메모리 관리 방식을 비교해 보자 운영체제에서 메모리 관리는 CPU와 함께 시스템 자원을 효율적으로 사용하는 핵심 요소 중 하나다. 메모리를 어떻게 관리하느냐에 따라 시스템의 응답 속도, 자원 활용률, 안정성 등이 크게 달라진다.대표적인 메모리 관리 기법들을 간단하게 살펴보자.연속 메모리 할당초기 운영체제 구조에서는 단일 프로그래밍 환경이 일반적이었고, 이때는 하나의 프로세스만 메모리에 적재되어 실행되었다. 이를 연속 메모리 할당 방식이라고 한다. 구조가 매우 단순하고 구현도 쉽지만, 하나의 프로세스만 실행되기 때문에 메모리의 많은 부분이 낭비되고, CPU도 유휴 상태로 남는 시간이 많다. 이런 비효율을 극복하기 위해 다중 프로그래밍 개념이 도입되었다.메모리 분할다중 프로그래밍 환경에서는 여러 프로세스를 동시에 메모리에 올려놓고 번갈아가.. 2025. 6. 9. [운영체제] 환형대기 조건(사이클)을 차단하여 교착상태를 예방하는 방법 운영체제에서 교착상태(Deadlock)는 여러 프로세스가 서로 자원을 점유한 채, 상대가 가진 자원을 기다리면서 무한 대기에 빠지는 현상이다. 교착상태가 발생하려면 다음 네 가지 조건이 모두 동시에 성립해야 한다.상호 배제 (Mutual Exclusion) – 자원은 한 번에 하나의 프로세스만 사용할 수 있다.점유 대기 (Hold and Wait) – 자원을 점유한 상태에서 다른 자원을 요청하며 대기한다.비선점 (No Preemption) – 점유한 자원을 강제로 빼앗을 수 없다.환형 대기 (Circular Wait) – 자원을 기다리는 관계가 원형 고리를 이룬다.교착상태를 막기 위해선 이 중 하나 이상의 조건을 제거하면 된다.그중 환형 대기 조건을 제거하는 방법에 대해 알아보자. 자원에 일련번호(순서.. 2025. 6. 9. [운영체제] 가상 메모리와 주소 변환 - Part 1. 기본 개념 이해하기 가상 메모리란? 가상 메모리는 운영체제가 프로그램에게 제공하는 추상화된 메모리 주소 공간이다. 이는 실제 물리적 메모리(RAM)의 크기와 상관없이 프로그램에게 더 크고 연속적인 메모리 공간을 제공한다.가상 메모리의 핵심은 주소 변환 메커니즘이다. 프로그램은 가상 주소를 사용하고, 이 주소는 메모리 관리 장치(MMU)에 의해 실제 물리 주소로 변환된다. 이때 모든 가상 주소가 항상 물리 메모리에 매핑되어 있는 것은 아니며, 필요한 경우에만 하드 디스크와 같은 보조 기억장치에서 물리 메모리로 데이터를 가져온다.따라서 하드디스크 자체가 메모리처럼 동작하는 것이 아니라, 가상 주소 공간을 효율적으로 관리함으로써 제한된 물리 메모리를 효율적으로 사용하고 필요시 보조 기억장치를 활용하는 것이다. 운영체제는 가상 메.. 2025. 4. 21. [운영체제] 병행 프로세스 - 세마포어 완벽 정리 Part 3 - 판독기-기록기 문제 지난 두 편의 글을 통해 세마포어의 정의와, '상호배제 문제'와 '동기화 문제', '생산자-소비자 문제'를 세마포어가 어떻게 해결하는지에 대해 알아보았다. 이번 포스팅은 세마포어 관련 마지막 포스팅으로, 세마포어로 해결할 수 있는 문제 중 판독기-기록기 문제를 집중적으로 살펴보도록 한다. 판독기-기록기 문제란? 판독기-기록기 문제는 다수의 협력 프로세스가 공유 자원을 사이에 두고 데이터를 읽는 판독기(reader)와 데이터를 쓰는 기록기(writer)로 나위어 동작할 때, 이들의 접근을 어떻게 제어할 것인지에 대한 문제다. 이 문제의 핵심은 두 가지 조건을 만족시키는 것이다. 기록기의 상호 배제: 한 기록기가 공유 자원에 데이터를 쓰는 동안 다른 기록기나 판독기는 접근할 수 없음. 데이터를 쓰고 있는 중.. 2025. 3. 19. [운영체제] 병행 프로세스 - 세마포어 완벽 정리 Part 2 - 생산자-소비자 문제 지난 글에서는 세마포어의 정의와, '상호배제 문제'와 '동기화 문제'를 세마포어가 어떻게 해결하는지에 대해 공부해보았다. 이번 글에서는 세마포어로 해결할 수 있는 문제 중 생산자-소비자 문제에 대해 다뤄보려고 한다. 생산자-소비자 문제란? 생산자-소비자 문제는 두 프로세스가 협력하여 데이터를 주고받는 상황을 다룬다. 생산자-소비자 문제에서는 세 가지 용어를 먼저 정의해야 한다. 생산자(Producer) : 데이터를 생성하여 버퍼에 넣는 프로세스소비자(Consumer) : 버퍼에서 데이터를 꺼내 사용하는 프로세스버퍼(Buffer) : 생산자와 소비자 사이에 데이터를 저장하는 공유 공간 생산자-소비자 문제에는 두 가지 조건이 있다. 상호배제 : 여러 프로세스가 동시에 버퍼에 접근할 수 없다. 즉, 생산자가 .. 2025. 3. 18. [운영체제] 병행 프로세스 - 세마포어 완벽 정리 Part 1 - 상호배제, 동기화 (feat. 비행기 화장실) 운영체제에서는 프로세스의 상호배제 문제를 해결하기 위해 세마포어(semaphore)라는 도구를 사용한다. 상호배제란 여러 프로세스가 동시에 같은 자원(임계영역)을 건드리지 않도록 막는 것이다. 세마포어란? 쉽게 비유하면 자원의 좌물쇠 같은 역할이다. 세마포어는 정수형 변수(s)로 만들어졌는데, 이 값은 사용 가능한 자원의 개수나 잠김/열림 상태를 나타낸다. 예를 들어 s = 3 이면 사용 가능한 자원이 3개 있다는 뜻이니, 프로세스가 3개까지 들어갈 수 있다는 신호다. s = 0 이면 빈 자원이 없으니 대기하라는 뜻이다. 처음에 세마포어 s를 생성할 때, 상황에 맞춰 값을 설정한다. 이 값은 0 이상의 정수여야 한다. 그리고 이 s는 P와 V라는 두 가지 연산으로만 변할 수 있다. 즉, P 연산과 V 연.. 2025. 3. 12. 이전 1 다음