TIL - 2021.02.25 (Thu)

Youngwoo Lee·2021년 2월 25일
0

TIL

목록 보기
5/29
post-thumbnail

Today I Learned

학습 내용

  • ios-baseball game Step2 진행

Step1에 대한 리뷰를 보충하는 commit을 하고 merge 확인 후 Step2에 대한 PR을 보내야되는데, 모르고 의욕이 앞서서 Step2에 반영시켜 PR을 보냈다... 다음부터는 꼭 지키도록 해야겠다.

그리고 오늘 Step2를 진행하면서 subscript, 연산프로퍼티에 대해서 Neph와 공부하였다.

  • CS (기억장치 관리에 대한 정리)

CS 관련 서적에서 기억장치에 대한 부분을 정리하였다. 특히 오늘 아침에 같이 이야기 나누었던 가상기억장치(일부분의 보조기억장치를 주기억장치처럼 사용하는 것)에 대해 간략하게 정리하였다.



📕 오늘의 CS

가상기억장치는 보조기억장치(HDD, SSD 등)의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다.

  • 이는 주기억장치의 용량보다 큰 프로그램을 실행하기 위한 방법이다.

  • 그리고 이를 통해서 주기억장치의 이용률과 다중프로그래밍의 효율을 높일 수 있다.

  • 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요하다.

  • 이때 프로그램을 여러 작은 블록 단위로 나누어서 가상기억장치에 보관해놓고 프로그램 실행시 요구되는 블록만 주기억장치로 할당해서 처리하는데, 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌 수 있다.


1. 페이징(Paging) 기법

페이징 기법은 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 프로그램(페이지)을 주기억장치 영역에 적재시켜 실행하는 기법이다.

  • 페이지의 위치를 나타내는 페이지 맵 테이블이 필요하다

2. 세그먼테이션(Segmentation) 기법

세그먼테이션 기법은 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시켜 실행하는 기법이다.

  • 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트라고 하며, 각 세그먼트는 고유한 이름과 크기를 가진다.

3. 페이징 vs 세그먼테이션 차이점

위에서 읽었듯이 둘의 차이는 프로그램을 동일한 크기로 자른다는 것과 그렇지 않다는 것이다.

그래서 페이징 기법은 외부 단편화는 발생하지 않지만 내부 단편화가 발생하고
세그먼테이션 기법은 내부 단편화는 발생하지 않지만 외부 단편화가 발생한다.

외부 단편화 : https://jhnyang.tistory.com/264

메모리가 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간에 존재 중간중간에 생긴 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황

내부 단편화 : https://jhnyang.tistory.com/290

메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상


다짐

배운걸 한번 읽고 끝내지 말고 여러 번 실습해보며 몸으로 익히자!!!!!! ( 최소 세번 복습 )

캠퍼들 TIL 전부 다 읽으며 몰랐던 거 정리하기

profile
iOS Developer Student

0개의 댓글