운영체제
-
페이징 기법운영체제 2022. 7. 15. 23:34
페이징 기법 가상 주소의 분할된 각 영역을 페이지(page)라 부르며, 물리 메모리의 각 영역은 프레임(frame)이라 한다. 프레임과 페이지는 크기가 같으며, 둘 다 번호를 매겨서 관리한다. 페이징을 구현하기 위해서는 결국 페이지 번호와 프레임 번호를 매칭하는 테이블을 페이지 테이블을 관리해야 한다. 페이징 기법의 주소 변환 주소 변환 과정 CPU에서 접근하는 모든 논리 주소는 페이지 번호(p)와 페이지 시작 주소로부터의 거리인 offset(d)로 구성된다. 예를 들어 CPU의 비트 수가 m이고, 각 페이지 크기가 2^n이라 하면, 앞의 m - n 비트는 페이지 번호로 사용하고, 뒤의 n개 비트는 페이지 시작 주소로부터의 offset으로 사용한다. 페이지 테이블을 통해 페이지 번호로부터 프페임 번호를 ..
-
가상 메모리 개요운영체제 2022. 7. 14. 20:29
가상 메모리 가상 메모리는 크기가 다른 여러 물리 메모리에서 일관적으로 프로세스를 실행하는 기술이다. 가상 메모리 시스템의 모든 프로세스는 자신이 물리 메모리에 어느 위치에 있는지에 상관없이 0에서부터 시작하는 연속된 메모리 공간을 가진다. 이러한 주소는 가상 주소 또는 논리 주소라 한다. 가상 메모리는 이론상 무한대지만, 실제로는 물리 메모리의 크기와 스왑 영역의 크기의 합로 한정되며, CPU에 비트(32bit/64bit)에 따라 결정된다. 스왑 영역은 하드디스크에 존재하지만 메모리 관리자가 관리하는 영역으로 메모리의 일부로 취급된다. 물리 메모리가 꽉 찬 상태에서 새로운 프로세스를 실행할 때는 일부 기존 프로세스를 스왑 영역으로 보내는데, 이를 스왑 아웃(swap out)이라 한다. 몇 개 프로세스가..
-
메모리 분할 방식운영체제 2022. 7. 8. 00:20
가변 분할 방식 프로세스의 크기에 맞춰서 연속적인 메모리를 할당하는 방식이다. 장점 각 프로세스를 연속된 메모리 공간에 배치할 수 있다는 장점이 있다. 단점 - 외부 단편화(external fragmentation) 위 그림에서 프로세스 C를 종료한 다음 용량이 30KB인 새로운 프로세스를 실행한다고 가정하자. 전체 빈 공간의 크기는 40KB이지만, 20KB 크기의 두 조각으로 나뉘어졌기 때문에 새로운 프로세스를 위한 공간을 할당할 수가 없다. 이와 같이 작은 조각이 발생하는 것을 단편화라 한다. 그리고 이러한 상황은 프로세스 외부에서 발생하는 단편화이기 때문에 외부 단편화라고 부른다. 이러한 외부 단편화를 없애기 위해서는 실행중인 프로세스의 자리를 옮겨 메모리를 통합해야 할 것이다. 그러나 이러한 방법..
-
단일 프로그래밍의 메모리 할당운영체제 2022. 7. 6. 13:01
메모리 오버레이(memory overlay) 과거의 컴퓨터의 경우 메모리의 용량이 한정적이었기 때문에 전체 메모리 용량보다 큰 사용자 프로그램을 어떻게 실행하느냐가 문제였다. 따라서 프로그램을 적당한 크기로 잘라서 일부만 가져오는 기법을 사용하였는데, 이를 메모리 오버레이라 한다. 이 기법의 경우 프로그램을 여러 개의 모듈로 나눈 다음, 각 모듈을 필요할 때마다 메모리에 가져와 사용한다. 어떤 모듈을 가져오고 내보낼지는 프로그램 카운터가 결정한다. 앞으로 실행할 명령어의 위치를 가지고 있기 때문에, 해당 명령어를 가지는 모듈이 메모리에 없으면 메모리 관리자에 요청하여 메모리로 가져오게 한다. 스왑(swap) 다른 모듈을 사용하게 된다면, 결국 이전에 사용했던 모듈은 메모리에서 내보내야 할 것이다. 내보내..
-
메모리 관리 및 메모리 주소운영체제 2022. 7. 3. 22:14
메모리 관리 CPU는 메모리에서 데이터를 읽거나 쓰기 위해 메모리 주소 레지스터(MAR)를 사용한다. 폰노이만 구조에서는 모든 프로그램은 메모리에 올려야 실행할 수 있다. 오늘날 컴퓨터의 경우 운영체제를 포함한 여러 프로그램을 동시에 실행하기 때문에 이 모든 프로그램들이 메모리에 같이 올라가 있다. 또한 메모리의 크기는 제한적이기 때문에, 메모리 관리가 복잡하다. 이렇게 메모리에 올려서 프로그램을 실행하는 이유는 컴퓨터가 계층적 메모리 구조를 가지기 때문이다. 저장장치에는 모든 프로그램이 저장되어 있지만, 속도가 느려서 CPU와의 속도 차이로 인한 문제가 발생한다. 이러한 속도 차이를 완화하기 위해 메모리에 올리는 것이다. 메모리 관리자의 역할 메모리 관리를 담당하는 메모리 관리자의 역할은 다음과 같다...
-
교착 상태 - (2) 해결 방법운영체제 2022. 6. 19. 19:26
교착 상태 해결 방법 크게 4가지가 있다. 해결 방법 설명 교착 상태 예방 교착 상태를 유발하는 네 가지 조건을 무력화하는 방식이다. 교착 상태 회피 교착 상태를 유발할 가능성이 있다고 판단되면 자원 할당을 중단하고 지켜보는 방식이다. 교착 상태 검출과 회복 제약을 가하지 않고 자원 할당 그래프를 모니터링하는 방식이다. 교착 상태가 발생하면 회복 단계가 진행된다. 교착 상태 예방 상호 배제 예방 시스템 내의 모든 자원을 공유할 수 있게 만들어 상호 배타적인 자원을 없애는 방식이다. 그러나 상호 배제를 적용하여 보호해야 하는 자원이 있어서 불가능하다. 비선점 예방 모든 자원을 빼앗을 수 있도록 만드는 방법이다. 그러나 임계구역 보호를 위해 잠금을 사용하는 경우 자원을 빼앗는 것이 불가능하며, 임계구역의 상..
-
교착 상태 - (1) 정의 및 필요조건운영체제 2022. 6. 18. 12:40
교착 상태란? 2개 이상의 프로세스가 서로의 작업이 끝나기만 기다리며 작업을 진행하지 못하는 상태를 말한다. 발생 원인 시스템 자원 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생한다. 아래 그림은 2개의 프로세스가 프린터와 레코더로 인하여 교착 상태가 된 상황을 그림으로 나타낸 것이다. 서로 자원을 하나씩 할당받은 상태이지만, 다른 하나를 할당받지 못하여 진행되지 못하는 상황이다. 공유 변수 공유 변수가 서로의 실행을 막는 경우도 존재한다. 아래 그림은 교착 상태를 발생시키는 임계구역 코드를 나타낸 것이다. 2개의 lock이 동시에 true가 된 이후 while 문이 실행되면 서로의 lock에 의하여 두 프로세스가 실행되지 못하는 것이다. 응용 프로그램 여러 프로세스가 데이터에 접근할 때에도 데..
-
프로세스 간 통신운영체제 2022. 6. 14. 23:14
프로세스 간 통신 분류 범위에 따른 분류 종류 설명 프로세스 내 통신 한 프로세스 내 여러 스레드 간의 통신으로, 전역 변수나 파일을 이용한다. 프로세스 간 통신 한 컴퓨터 내의 여러 프로세스 간의 통신으로, 전역 변수, 공용 파일, 파이프를 이용한다. 네트워크 통신 네트워크로 연결된 여러 컴퓨터 간의 통신으로, 소켓을 사용하여 데이터를 주고받는다. 통신 방향에 따른 분류 종류 설명 예시 양방향 통신 데이터를 동시에 양방향으로 전송할 수 있는 구조이다. 소켓 통신 반양방향 통신 데이터를 양방향으로 전송할 수 있지만, 특정 시점에 한 방향으로만 전송할 수 있는 구조이다. 무전기 단뱡향 통신 한쪽 방향으로만 데이터를 전송할 수 있는 구조이다. 전역 변수, 파이프 등 동기화(synchronization) 여부..