분류 전체보기78 9-3. Virtual Memory (Hybrid paging/segmentation system) Hybrid paging/segmentation system 페이징과 세그멘테이션의 장점만 결합한 시스템으로 프로그램 분할 시 논리 단위의 segment로 분할 후 각 segment를 고정된 크기의 page로 분할하여 메모리 적재 시 page단위로 적재하는 방법을 취한다. Address mapping virtual address: v = (s, p, d)로 구성 s = segment number p = page number d = offset in a page SMT와 PMT를 모두 사용하며 각 프로세스마다 하나의 SMT 각 세그멘트 별 하나의 PMT를 가진다. 최종적으로 page를 메모리에 적재함으로 메모리 관리방식은 FIxed partition multiprogaming과 유사하다. SMT에는 res.. 2022. 1. 6. 9-2. Virtual Memory (Segmentation System) Segmentation System 프로그램을 논리적 block(segment)로 분할하므로 block의 크기가 서로 다를 수 있다. ex) tack, heap, main, procedure, shared lib... 논리적 단위로 나누기 때문에 메모리를 미리 분할하지 않는다. Segment의 공유와 보안이 용이하지만 Address mapping과 메모리 관리의 overhead가 크다. 또한 내부 단편화는 발생하지 않으나 외부 단편화는 발생이 가능하다. Segmentation Address Mapping 가상 주소 v =(s, d) s = segment number d = offset SMT(Segment Map Table) PMT와 다르게 segment length와 protection bits테이블이.. 2022. 1. 6. 9-1. Virtual Memory (Non-continous allocation)_Paging system Non-continuous allocation 사용자 프로그램을 여러 개의 block으로 분할하여 할당하는 것을 말하며 실행시마다 필요한 block들만 메모리제 적재하고 나머지는 Swap device에 존재하게 하는 가상 메모리가 이를 따른다. 메모리 할당 기법으로는 Paiging, Segmentation, Hybrid Paging/segmentation 이 있다 Virtual address(가상주소)/relative address는 논리 수조로 연속된 메모리 할당을 가정한 주소이다. Real address(실제주소)/physical(absolute address 는 실제 메모리에 적재된 주소로 연속되지 않을 수 있다. * Address mapping은 가상 주소를 실제 주소로 바꾸어 주는것이다. Blo.. 2022. 1. 6. [Project 2_User Programs]_Argument Passing(인수전달) 현재 핀토스 process_exec()파일을 보면 새로운 프로세스에게 인수전달을 하지 않는다고 한다. 따라서 process_exec()를 수정하여 위 기능을 구현해야 한다. 단순히 파일이름을 인수로 사용하는 대신 공백을 기준으로 단어를 나누어 전달해야 한다. 첫번째는 프로그램의 이름, 두번째 단어부터는 첫번째 인수 이다. 예를들어 process_exec("grep foo bar") 라고 한다면 파일명은 grep, foo와 bar는 각각 첫번째 두번째 인자가 되도록 파싱해 주어야 한다. strtok_r()을 이용 원하는 방식으로 인수 문자열을 구문 분석할 수 있다. 한양대 핀토스 pdf자료를 토대로 본 part2의 흐름과 구현해야하는 부분 우리 과제 부분에서 start_process()는 process_e.. 2022. 1. 4. [Project 2_User Programs]_Intro project 2 Intro 프로 젝트 2에서는 프로그램과 OS 사이 시스템 콜을 통해 상호작용을 하는 것에 관하여 다루어 본다고 한다. 프로젝트 1을 통과 못했다면 2에 영향이 있으니 프로젝트 1의 Advanced Scheduler 전까지 완료를 하고 이어 가자. 하나이상의 프로세스가 동시에 진행하도록 해야 한다. 멀티스레드는 지원하지 않고 각 프로세스는 하나의 스레드를 가진다 사용자 프로그램은 가상의 Machine에서 쓰였다고 생각하고 메모리 스케쥴링, 기타 다른 상태들도 관리하여 이 Machine을 올바르게 유지시켜야 한다. project 2를 진행하기에 추천하는 사전 지식 synchronization, virtual addrees 이전 thread프로젝트에서는 테스트를 진행할 때 코드를 커널에 직.. 2022. 1. 1. 8.Main memory management(2)_Memorry Allocation Countinous Memoty Allocation > 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책이다. ex) 프로그램, 데이터, 스택 등 이렇게 메모리를 할당하기 위해서는 다음 사항을 고려해야 한다. 1. 메모리에 동시에 올라갈 수 있는 프로세스의 수(Multiprogramming degree) 2. 각 프로세스에게 할당되는 메모리의 공간 크기 3. 메모리 분할 방법 Uni-programming 멀티프로그래밍 디그리 = 1 인 프로그래밍 프로세스가 한 번에 하나만 시스템에 올라가는 프로그래밍으로 간단하다 유니프로 그램의 문제점 1. 만약 프로그램의 크기가 메모리의 크기보다 크다면? 어떻게 될까? Countinous Memoty Allocation에서는 프로그래밍 전체가 한 번.. 2022. 1. 1. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음