CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 스와핑(swapping), 가상메모리(virtual memory) 란?

저번 시간에는 페이징과 세그멘테이션 방법에 대해서 살펴봤습니다. 모두 메모리를 어떻게 효율적으로 쓸 것이냐에 대한 고민을 바탕으로 나온 방법들이었는데요. 그렇다면 페이징 + 세그멘테이션 방법을 사용하면 모든 프로세스를 효율적으로 실행시킬 수 있을까요? 정답은 아닙니다. 바로 메인 메모리 크기가 한정되어있기 때문인데요. 이번 시간에는 메모리 크기가 다 찼을 때, 프로세스를 실행시킬 수 있도록 도와주는 스와핑(swapping) 방법과, 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 있게 해주는 가상 메모리(virtual memory)에 대해서 알아보려고 합니다. 0. 스와핑(swapping) 이란? swap이란 단어는 두 개의 값을 맞바꾼다, 교환한다 의 의미를 가지고 있습니다. 운영체제에서도 의미가 비..

2022.03.03 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 페이징(Paging), 세그멘테이션(Segmentation) 이란?

저번 시간까지는 메모리 관리 방법 중 페이징에 대해서 알아보았습니다. 간단하게 정리해볼까요? 프로세스를 일정 크기인 페이지 단위로 잘라서 메모리에 적재하는 방법을 페이징이라고 하는데요. 페이지는 일정한 간격으로 자르는 단위였습니다. 하지만 기준 없이 일정한 간격으로 자르는 페이징 말고도 기준을 세워서 논리적인 내용 단위인 세그먼트로 자를 수 있는 세그멘테이션 방법이 있습니다. 이번 시간에는 세그멘테이션에 대해서 알아보려고 합니다. 0. 세그멘테이션이란? 세그멘테이션은 하나의 프로세스를 세그먼트의 집합이라고 생각합니다. 세그먼트란? 네트워크TCP/IP 4 계층을 공부할 때도 세그먼트라는 단어가 사용되었었는데요. 전송 계층에서 신뢰할 수 있는 통신을 구현하기 위해 header를 위에서 받은 데이터에 붙입니..

2022.02.28 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 페이징(Paging), Fragmentation(단편화), TLB 란?

저번 시간까지는 메모리 관리를 어떻게 하는지, contiguous allocation이 무엇인지, MMU가 무엇인지에 대해서 살펴봤습니다. 혹시 이 세가지 개념에 대해 모르시거나 헷갈리시는 분들은 저번 게시물을 참고해 주세요! [운영체제(OS)] 메모리관리 - 주소바인딩, Contiguous allocation 그리고 MMU 란? 지난 시간까지 살펴봤던 멀티프로그래밍에서는 다른 프로세스/쓰레드 끼리 통신을 하게 되고 공유자원을 사용하다 보니 문제점도 많았고 그에 대한 해결책을 살펴봤었습니다. 이번 시간부터는 resilient-923.tistory.com 0. Fragmentation이란? 먼저 저번시간에 배운걸 간단히 복습해보겠습니다. contiguous allocation을 하면 일단 MMU가 굉장히 ..

2022.02.17 게시됨

CS & Network/운영체제(OS) & 컴퓨터구조

[운영체제(OS)] 메모리관리 - 주소바인딩, Contiguous allocation 그리고 MMU 란?

지난 시간까지 살펴봤던 멀티프로그래밍에서는 다른 프로세스/쓰레드 끼리 통신을 하게 되고 공유자원을 사용하다 보니 문제점도 많았고 그에 대한 해결책을 살펴봤었습니다. 이번 시간부터는 메모리에 대해서 하나하나씩 정리를 해보려고 합니다. 0. 메모리란? 먼저 메모리 관리란 물리적 주소(Physical Address)를 갖는 메모리 공간에서 여러 개의 프로세스를 어떻게 같이 돌릴 것인가에 대한 관리입니다. 그렇다면 물리적 주소란 무엇일까요? 한마디로 메모리 공간에서의 위치이죠. 우리는 '메모리를 엄청 잡아먹네, 메모리 몇이야?'라는 말을 많이 들어봤을 겁니다. 익히 들어 알고 있는 RAM이란 용어도 메모리에 관한 것이죠. 추상적으로 '프로그램을 실행시키면 실행에 필요한 데이터들이 메모리에 올라가면서 실행되는 것..

2022.01.22 게시됨