운영체제/운영체제 정리
-
23. 페이지 크기운영체제/운영체제 정리 2020. 2. 18. 17:38
Demang paging 등 프로세스를 일정 크기로 자르고 이 하나하나를 페이지라고 한다고 하였다. 이 페이지들의 크기는 어떻게 나눌까? 페이지 크기는 일반적으로 4KB ~ 4MB이다. 하나의 프로세스의 용량이 커지면서 점점 커지고 있다. 페이지 크기는 큰 게 좋을까 작은 게 좋을까? 그 기준을 여러 측면에서 알아보자. 1. 내부단편화 - 페이징을 통해 프로세스를 하나하나 나누어서 외부 단편화는 막을 수 있지만 마지막 페이지는 최대 페이지 크기 -1 만큼 메모리가 버려지게 된다. - 이 내부 단편화를 최소화하기 위해서는 페이지의 크기는 작은 게 좋겠다. 2. page in/out 시간 - 긴 page fault 시간을 최소화하려면 페이지 크기는 큰 게 좋다. page in/out을 하며 디스크에 헤더를 ..
-
22. 프레임 할당운영체제/운영체제 정리 2020. 2. 17. 18:28
Main Memort Management 1. Paging 2. Virtual Memory - Demand paging - Page Replacement -Algorithms -FIFO, OPT, LRU - Allcation of frames : 각 프로세스에 얼마만큼의 프레임을 할당할 것인가 메모리에 프로세스의 수는 CPU의 이용률과 비례할 거라 예상하지만 demand paging을 적용해보니 그렇지 않다. 어느 순간까지는 비례하여 오르지만 일정 범위를 넘어선다면 메모리는 가득 차게 되고 page in과 out으로 인한 빈번한 페이지 교체가 일어나게 된다. 그 결과 I/O 시간이 증가하기 때문 I/O 시간이 증가한다는 것은 디스크에 write read 등을 한다는 것인데 이때 CPU는 아무런 일을 할 ..
-
21. 페이지 교체 알고리즘운영체제/운영체제 정리 2020. 2. 4. 17:48
CPU가 주소를 내고 우리는 demand paging을 이용해서 가상 메모리를 만들고 있다. 앞 선 예로 우리는 프로세스 3개를 페이지 단위로 올리고 이는 원래는 용량이 부족하여 올리지 못하지만 필요한 페이지만 올리기 때문에 올릴 수 있고 아무 문제없이 실행할 수 있다. 이제 페이징 단위로 메모리들이 모두 꽉 차 있는 상황을 가정해보자. 그리고 하드디스크에 있는 p3에 일부 페이지들이 올라가야 하는 상황이다. 이때 page replacement를 통해 메모리에 있는 한 페이지를 선택해서 쫓아내고 빈자리에 넣어야 한다.( victim page) 이왕이면 modify 되지 않은 페이지 그리고 이 중에서는 여러 page replacement algorithms을 쓴다고 말하였다. page replacement..
-
20. 페이지 교체운영체제/운영체제 정리 2020. 2. 2. 16:46
가상 메모리를 사용하면 최대크기는 하드디스크의 크기 만큼 으로 CPU를 속이는 것이 가능하다. 유효 접근 시간 : CPU가 어떤 주소를 낼 때 운이 좋다면 해당 페이지가 메모리에 있기에 페이지 테이블을 거쳐서 빠르게 읽을 수 있지만 어떤 내용은 메인 메모리에 없을 것이고 Interrupt후 OS 인터럽트 루틴으로 점프 후 디스크에 있는 내용을 메모리 에 다시 올리고 valid bit 와 프레임 번호 설정등 많을 일을 거쳐야 한다. 따라서 CPU가 어떤 주소를 내면 어떤 주소는 빨 리 읽혀질 것이고 어떤 주소는 느리게 읽혀질 것이다. 그렇다면 평균 적으로는 얼마일까? ( = 유효 접근 시간 ) P : page fault rate = 페이지 부재가 일어날 확률 유효 접근 시간 : (1 - P)*Tm + P ..
-
19. 가상 메모리운영체제/운영체제 정리 2020. 1. 30. 18:07
가상 메모리는 물리 메모리의 크기 한계를 극복하기 위해 나오게 됐다. 자신의 메인 메모리가 100mb 라고 가정해보자. 200mb 크기의 프로세스를 실행 할 수 있을까? 못올릴것 같겠지만 올릴 수 있다! 어떻게? Cpu와 메모리 보조기억장치가 있고 다시 100mb 에 200mb 프로그램을 올리는 상황을 가정해보자. 생각해보면 200mb 이지만 모두 메모리에 올릴 필요가 없다. 프로그램 안에 지금 당장 안쓰는 루틴도 많을 것. ( ex 파일이 안열릴 시에 필요한 오류 처리 등 ) 따라서 안그래도 적은 메모리에 처음부터 넣을 필요가 없는 것이다. 안 넣고 있다가 실제 그런 상황이 벌어지면 올리면 되는 것이다. 100mb 메모리에 50mb 프로그램 3개를 올리는 상황을 가정해보자. 각각의 프로그램은 필요한 부..
-
18. 세그먼테이션 (Segmentation)운영체제/운영체제 정리 2020. 1. 27. 01:41
프로세스를 자르는데 페이징 같은 경우는 일정 크기로 잘랐다. 이번에는 논리적인 구분(= 세그먼트 )으로 잘라서 가변크기로 메모리에 배치한다. 따라서 한 부분의 사이즈는 모두 다를 수 있다. 프로세스라는 것은 세그먼트의 집합으로 볼 수 있다. 프로세스는 기본적으로 코드 데이터 스택 등으로 되어있다고 했다. 따라서 프로세스는 세그먼트의 집합이다. 코드 데이터 스택 영역 등의 길이는 모두 다르므로 사이즈는 모두 다르다. 페이징을 배울 때는 모두 일정한 크기로 잘라 넣었지만 꼭 그럴 필요가 있는가? 의미있는 사이즈로 자른 후에 메모리에 넣는 것이다. 이번에는 디스크에 있는 프로그램을 세그먼트 단위로 다르자. s0 s1 s2 s3로 나눈 후 메인 메모리로 올리고 다음과 같은 상태라고 두자. 이제 CPU를 속여야 ..
-
17. 내부 단편화와 페이지 테이블운영체제/운영체제 정리 2020. 1. 20. 18:14
내부 단편화란? 예를 들어 한 페이지 사이즈가 4 byte이고 우리가 올릴 프로세스 사이즈가 15 byte라고 해보자. 그러면 4개의 페이지가 필요할 것. 4 // 4 // 4 // 3으로 3번째 페이징은 한 페이지를 다 못 채우고 1바이트가 남게 될 것 즉 마지막 프레임은 다 채울 수 없게 될 것이고 이는 자신도 쓸 수 없고 다른 프로세스도 쓸 수 없는 작은 공간이 생겨질 것이다. 이를 내부 단편화라고 한다. 페이징을 써서 외부 단편화를 해결했지만 결과적으로 내부 단편화가 생긴 것 그러나 내부 단편화로 인한 메모리 낭비는 미비하다. 아무리 커봐야 한 페이지 사이즈 - 1바이트 정도 이기 때문이다. 따라서 크게 문제는 될 수 없다. 페이지 테이블 만들기 CPU와 메모리 사이에는 페이지 테이블이 있다고 했..
-
16. 외부 단편화와 페이징운영체제/운영체제 정리 2020. 1. 10. 02:15
연속 메모리 할당 부팅 후에 OS가 먼저 메인 메모리로 올라온 상황을 생각해보자. 이때 메인 메모리 올라온 프로그램은 없는 상태임으로 하나의 큰 Hole이라고 생각하자. 이후 프로그램을 실행할 텐데 p1 p2 p3 p4 등 프로세스들이 메인 메모리에 올라올 것 이고 이 후 p2가 끝났다고 가정하면 다음과 같은 상태가 된다. 이처럼 프로세스가 생성되고 종료되면서 많은 Hole들이 흩어지게 될 것이다. 이런 식으로 쪼개져있는 것을 메모리 단편화(fragment)라고 한다. 이렇게 Hole 들이 많아지면 문제가 뭘까? 예를 들어 130 Kbyte에 프로그램을 메모리에 올리려고 한다. 홀에 있는 공간은 합치면 170 Kbyte ( 110 + 40 + 20 )으로 충분히 들어갈 수 있지만 흩어져 있기 때문에 13..