목록OS (28)
솜은 코튼
계층적 페이징 . 요즘 컴퓨터는 큰 주소 공간을 가진다. (32bit, 64bit) 여기서 문제는 페이지 테이블이 용량이 너무 커진다는 것이다.. 예로 32bit 컴퓨터는 2³² 주소 공간을 가진다. 만약 페이지 크기가 4KB이면 2¹²이고 총 주소 공간을 페이지 크기로 나누면 2³² / 2¹² = 2²⁰ 개 이상의 항목으로 구성된다. 행 하나 당 1 word 이고 32 bit이니깐 각 항목은 4B로 구성된다. ( 1 entry = 1 word = 32 bit = 8bit * 4 = > 4B) 한 행당 4 B.. 그럼 총 2²⁰ 개 이상의 항목으로 구성되니.. 2²⁰ X 4B = 2²² 즉, 각 프로세스는 4MB 용량의 페이지 테이블이 필요한 것이다! 32bit 컴퓨터를 예로 들어 보았지만 만약 64bi..
프로세스의 개념 . 먼저 '프로그램'과 '프로세스'의 차이를 알아야 한다. 프로그램은 어떤 데이터를 사용하여 어떤 작업을 할지 절차를 적어놓은 것이고, 프로세스는 프로그램으로 작성된 작업 절차를 실행하는 것이다. 프로그램은 저장장치에 저장되어 있고, 프로세스는 실행을 위해 메모리로 올라온 상태이다. 일괄 작업 시스템의 경우 한 번에 하나의 작업만 처리하므로 프로세스를 생성하고 실행한 후 완료시키면 되지만 우리는 많은 작업을 한 번에 처리해야 한다. 여러 작업을 효율적으로 하기 위해 프로세스 상태 변화에 대해 알아보자. 프로그램을 실행하기 위해 메모리에 올릴 때 작업 관련 정보가 필요하다. 이 정보들은 프로세스 제어 블록(PCB)에 저장된다. PCB는 생성 상태(new)에서 생성된다. 프로세스가 생성되면 ..
Mutex Locks . 임계구역을 보호하기 위해 mutex 락을 사용한다. 즉, 프로세스는 임계구역에 들어가기 전에 반드시 락을 획득해야 하고, 빠져나올 때 락을 반환해야 한다. acquire() 함수가 락을 획득하고, relase() 함수가 락을 반환하며 available 변수가 락의 가용 여부를 표시한다. Mutex 락은 실행 가능 여부를 확인하기 위해 acquire() 함수를 반복적으로 실행해야 하는 바쁜 대기를 해야한다. 이러한 Mutex 락을 '스핀락'이라고도 한다. 스핀락은 사용 여부를 계속 확인하면서 대기하기 때문에 문맥 교환이 필요하지 않다는 장점이 있다. 단, 오래 기다리게 된다면 CPU 주기를 낭비하게 된다. 세마포 (Semaphores) . 앞에 다룬 임계구역 해결 알고리즘은 바쁜 ..
2023.05.22 - [OS] - [OS] 생산자-소비자 문제 [OS] 생산자-소비자 문제 생산자-소비자 문제 . 임계구역과 관련된 전통적인 문제로 생산자-소비자 문제가 있다. 생산자 프로세스와 소비자 프로세스가 독립적으로 작업을 한다. 원형 버퍼를 사용하여 생산자는 버퍼에 sommda.tistory.com 임계구역 해결 방법 . 임계구역 문제를 해결하는 단순한 방법은 Lock을 이용하는 것이다. 앞 내용에서 말한 임계영역 해결하는 3가지 조건에 대해 차례로 알아보자. 1. 상호 배제 문제 . 먼저 잠금이 걸려있나 while문을 통해 확인 후 잠겨있을 경우(true) 무한 루프를 돌며 기다린다. 다른 프로세스가 작업을 완료하여 lock 값을 false로 바꾸면 무한 루프를 빠져나와 임계구역으로 진입한다..
생산자-소비자 문제 . 임계구역과 관련된 전통적인 문제로 생산자-소비자 문제가 있다. 생산자 프로세스와 소비자 프로세스가 독립적으로 작업을 한다. 원형 버퍼를 사용하여 생산자는 버퍼에 계속 넣고, 소비자는 버퍼에서 계속 가져온다. 위의 코드는 왼쪽은 생산자, 오른쪽은 소비자 코드이다. 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 세그멘테이션 기법의 구현 . . . 페이징 기법과 마찬가지로 세그멘테이션 기법도 매핑 테이블을 사용한다. 이를 '세그멘테이션 테이블' 또는 '세그멘테이션 매핑 테이블'이라고 한다. 페이징 기법은 메모리를 같은 크기로 분할하기 때문에 매핑 테이블에 크기 정보를 ..