목록Total (117)
솜은 코튼
생산자-소비자 문제 . 임계구역과 관련된 전통적인 문제로 생산자-소비자 문제가 있다. 생산자 프로세스와 소비자 프로세스가 독립적으로 작업을 한다. 원형 버퍼를 사용하여 생산자는 버퍼에 계속 넣고, 소비자는 버퍼에서 계속 가져온다. 위의 코드는 왼쪽은 생산자, 오른쪽은 소비자 코드이다. while문을 통해 생산자는 버퍼가 꽉 찼을 때, 소비자는 버퍼가 비어있을 때 대기한다. 생산자는 다음 수행을 buffer에 채운 후 in 변수를 1 증가시키고, 소비자는 다음 수행에 buffer값을 가져온 후 out 변수를 1 증가시킨다. 생산자는 count 값을 증가시키고, 소비자는 감소시키는데 왜 in, out 변수값은 증가시킬까? 앞의 원형큐 이미지를 보면 이해하기 쉽다. 원 방향으로 in 값과 out 값을 하나씩 ..
공유 자원과 임계구역 . 프로세스는 독립적으로 작업을 할 수도 있지만 공유된 자원을 가지고 공동 작업을 할 수도 있다. 한정된 자원으로 공동 작업을 할 때 발생할 수 있는 문제를 알아보자. 위의 예로 보면 P1과 P2는 동시에 예금에 10만원이 있는 것을 확인한 후 작업을 시작했다. 작업 후 10만원을 기준으로 넣은 금액이 더해져 총 25만원이 되어야 하는데 20만원이 되었다. 이 문제를 해결하기 위해 두 프로세스 중 한 프로세스가 작업을 마친 후 다른 프로세스가 작업을 시작해야 한다. 이처럼 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 '경쟁 조건(Race Condition)'이 발생했다고 한다. 앞의 예로 공유 자원 접근 순서에 따라 실행 결과가 달라지는 것을 봤다. 이 프로그램..
페이지 교체 알고리즘 . 메모리가 꽉 찼을 때 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘이다. 페이지 교체 알고리즘 종류로는 아래와 같다. FIFO 페이지 교체 알고리즘 . 선입선출 페이지 교체 알고리즘(FIFO, First In First Out)이라고도 한다. FIFO 페이지 교체 알고리즘은 큐로 구현한다. 맨 위에 있는 페이지는 가장 오래된 페이지이고 새로운 페이지는 맨 아래에 삽입된다. 하지만 맨 위에 있는 페이지에 자주 사용되는 페이지가 있을 수 있다. 무조건 오래된 페이지가 대상이 되어 성능이 떨어질 수 있다. 최적(OPT) 페이지 교체 알고리즘 . 최적 페이지 교체 알고리즘은 앞으로 사용하지 않을 페이지를 스왑 영역으로 옮긴다. 미래의 메모리 접근 패턴을 보고 대상 페이지를 결정..
요구 페이징 . 요구 페이징이란 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것을 말한다. 아래는 페이지 테이블 엔트리(PTE)의 구성을 나타낸 것이다. 이전 글에서는 PTE는 페이지 번호와 프레임 번호로 구성된다고 했는데, 정확히 말하면 페이지 번호, 플래그 비트, 프레임 번호로 구성된다. 접근 비트(a)는 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트이며, '참조 비트'라고도 한다. 변경 비트(m)는 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트이며, '더티 비트'라고도 한다. 유효 비트(v)는 페이지가 실제 메모리에 있는지를 나타내는 비트이며, '현재 비트'라고도 한다. 읽기(r), 쓰기(w), 실행(x) 비트는 페이지에 대한 읽기 권한, 쓰기 권한, 실..
2023.05.21 - [OS] - [OS] 페이지 테이블 매핑 방식 [OS] 페이지 테이블 매핑 방식 이전 내용에서 페이지 테이블을 이용해 메모리 접근하는 방법에 대해 알아봤다. 2023.05.21 - [OS] - [OS] 가상 메모리 (페이징 기법) [OS] 가상 메모리 (페이징 기법) 고정 분할 방식으로 메모리를 분할 sommda.tistory.com 2023.05.21 - [OS] - [OS] 세그멘테이션 기법 [OS] 세그멘테이션 기법 세그멘테이션 기법은 가변 분할 방식을 이용한 가상 메모리 관리 기법이다. 2023.05.21 - [OS] - [OS] 가변 분할 방식과 고정 분할 방식 [OS] 가변 분할 방식과 고정 분할 방식 앞에서는 가변 분할 방식 sommda.tistory.com 페이징 기..
세그멘테이션 기법은 가변 분할 방식을 이용한 가상 메모리 관리 기법이다. 2023.05.21 - [OS] - [OS] 가변 분할 방식과 고정 분할 방식 [OS] 가변 분할 방식과 고정 분할 방식 앞에서는 가변 분할 방식과 고정 분할 방식의 장단점을 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (다중 프로그래밍 환경) [OS] 메모리 할당 (다중 프로그래밍 환경) 앞에서는 한 번에 한 프로세 sommda.tistory.com 세그멘테이션 기법의 구현 . . . 페이징 기법과 마찬가지로 세그멘테이션 기법도 매핑 테이블을 사용한다. 이를 '세그멘테이션 테이블' 또는 '세그멘테이션 매핑 테이블'이라고 한다. 페이징 기법은 메모리를 같은 크기로 분할하기 때문에 매핑 테이블에 크기 정보를 ..
이전 내용에서 페이지 테이블을 이용해 메모리 접근하는 방법에 대해 알아봤다. 2023.05.21 - [OS] - [OS] 가상 메모리 (페이징 기법) [OS] 가상 메모리 (페이징 기법) 고정 분할 방식으로 메모리를 분할하여 관리하는 것을 페이징 기법이라고 했다. 페이징 기법의 구현 방법에 대해 알아보자. 페이징 기법의 구현 . . . 가상 주소는 프로세스 입장에서 바라본 메 sommda.tistory.com 페이지 테이블 매핑 방식 . . . 페이지 테이블 전체를 메모리에서 관리하느냐 메모리 영역 부족으로 일부를 스왑 영역에서 관리하느냐에 따라 가상 주소를 물리 주소로 변환하는 방법이 달라진다. 다양한 페이지 테이블 매핑 방식을 알아보자. 페이지 테이블 매핑 방식에는 직접 매핑, 연관 매핑, 집합-연관..
고정 분할 방식으로 메모리를 분할하여 관리하는 것을 페이징 기법이라고 했다. 페이징 기법의 구현 방법에 대해 알아보자. 페이징 기법의 구현 . . . 가상 주소는 프로세스 입장에서 바라본 메모리 공간으로 항상 0부터 시작한다. 가상 주소의 분할된 각 영역은 페이지라고 부르며 번호를 매겨 관리한다. 물리 메모리의 각 영역은 '프레임'이라고 부른다. 즉, 가상 메모리 영역은 '페이지', 물리 메모리 영역은 '프레임'으로 칭한다. 페이지와 프레임은 크기가 같아 어떤 프레임에도 배치될 수 있다. 모든 페이지의 위치 정보는 '페이지 테이블'에 담겨 있다. 모든 페이지의 정보를 순서대로 가지고 있으며, 물리 메모리에 없는 페이지는 페이지 테이블에 'invalid'라고 표시된다. 'invalid'는 해당 페이지가 스..
가상 메모리란? . . 컴퓨터마다 물리 메모리, 즉 실제 메모리의 크기가 다르다. 그렇다고 컴퓨터마다 프로그램을 구현하긴 어렵다. 하여 물리 메모리의 크기와 프로세스가 올라갈 메모리 위치를 신경 쓰지 않고 프로그래밍하도록 지원하고 이러한 메모리 시스템을 '가상 메모리'라고 부른다. 즉, 가상 메모리는 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술이다. 앞에서 논리 주소는 0번지부터 시작된다고 설명했다. 가상 메모리 또한 0번지부터 시작하는 연속된 메모리 공간을 가진다. 하지만 논리 주소는 물리 메모리의 주소 공간에 비례하지만 가상 주소는 가상의 주소 공간을 가진다. 가상 메모리는 물리 메모리의 크기와 상관없이 커다란 메모리 공간을 제공한다 했는데 이게 말이 되나? 이론적으론..
앞에서는 가변 분할 방식과 고정 분할 방식의 장단점을 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (다중 프로그래밍 환경) [OS] 메모리 할당 (다중 프로그래밍 환경) 앞에서는 한 번에 한 프로세스만 실행되는 단일 프로그래밍 환경에서 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (단일 프로그래밍 환경) [OS] 메모리 할당 (단일 프로그래밍 환경) 메모리를 어 sommda.tistory.com 가변 분할 방식의 메모리 관리 . . . 가변 분할 방식은 '세그멘테이션 기법'이라고도 한다. 우리가 앞에서 빈 공간들이 생기는 것을 알게 됐다. 그 공간들을 '단편화'라고 한다. 가변 분할 방식에서는 프로세스 외부에 공간이 생겨 '외부 단편화'라고 한다. 외부 ..