[운영체제] 단일/다중 프로그래밍 환경에서의 메모리 관리 방식을 비교해 보자 운영체제에서 메모리 관리는 CPU와 함께 시스템 자원을 효율적으로 사용하는 핵심 요소 중 하나다. 메모리를 어떻게 관리하느냐에 따라 시스템의 응답 속도, 자원 활용률, 안정성 등이 크게 달라진다.대표적인 메모리 관리 기법들을 간단하게 살펴보자.연속 메모리 할당초기 운영체제 구조에서는 단일 프로그래밍 환경이 일반적이었고, 이때는 하나의 프로세스만 메모리에 적재되어 실행되었다. 이를 연속 메모리 할당 방식이라고 한다. 구조가 매우 단순하고 구현도 쉽지만, 하나의 프로세스만 실행되기 때문에 메모리의 많은 부분이 낭비되고, CPU도 유휴 상태로 남는 시간이 많다. 이런 비효율을 극복하기 위해 다중 프로그래밍 개념이 도입되었다.메모리 분할다중 프로그래밍 환경에서는 여러 프로세스를 동시에 메모리에 올려놓고 번갈아가.. 2025. 6. 9. [운영체제] 병행 프로세스 - 세마포어 완벽 정리 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 다음