본문 바로가기

공부기록/CS

11주차 블로그 챌린지 - 메모리

1. 메모리관리의 개념

 

메모리 : 프로그램들이 잘 실행될 수 있도록 메모리를 할당하고, 해제하는 작업

cpu는 메모리의 데이터만 읽을 수 있음 

 

메모리 주소 : 방마다 붙어있는 주소 

할당 : 손님에게 방을 빌려줌

해제 : 손님이 체크아웃 함 

 

 

 

할당 종류 

연속할당 방을 손님에게 연속적으로 줌

  고정 분할방식 미리 고정된 길이로 나눠놓고 손님에게 줌

                         (외부 단편화의 문제 : 나눠진 덩어리보다 더 큰 프로세스는 담을 수 없음)

                         (내부 단편화의 문제 : 나눠준 덩어리보다 작은 프로세스이므로 메모리가 놀고있는 상태)

 가변 분할 방식 손님마다 다른 방 길이를 받도록 함

                         (내부 단편화 발생하지 않음 그러나 체크아웃 한 손님들의 남은방을 연속해서 줄수 없어 외부 단편화가 생길 수 있다. )

불연속 할당 방을 손님에게 불연속적으로 줌 

 

가상메모리 배우는 이유 

이전에는 각각 지정된 주소에 데이터를 삽입했어야 했지만,

잘못 된 주소에 데이터 삽입할 경우 다른 프로세스들도 고장이 날 수 있었다.

 

프로세스 C의 크기가 너무 큰 경우 사용할 수 없었음.

 

가상메모리 : 실제 물리적 주소가 아닌 가상의 주소인 논리적 주소를 프로세스가 사용

모든 프로세스는 고정된 주소 

운영체제만 접근할 수 있어 리소스 보호 (프로세스 별로 다른 곳에 위치)

보조기억 장치 일부 메모리 처럼 사용

 

 

논리적 주소와 물리적 주소

바인딩 : 실제 주소를 가상의 주소로 맵핑하는 것

 

 

2. 페이지

 

페이지  물리적 메모리와 가상 주소를 연결하는 단위

일반적으로 4KB, 8KB크기 

메모리는 이 페이지 단위로 나누고 사용

 

스와핑 안쓰는 프로세스는 하드디스크에 넣어두기

요구 페이징 페이지 단위로 스와핑 하여 당장 필요한 페이지만 메모리에 남겨둠

실제 물리 메모리를 하드디스크 캐시로 사용하는 기법

일정한 크기로 자르기 때문에 내부 단편화 발생

 

캐시 : 쓸것같은 데이터를 빠른곳, 안쓸것 같은 데이터를 느린 곳에 넣어두는 것

 

가상메모리의 페이지와 물리 메모리를 매핑하는 표를 유지

3. 세그멘테이션

논리적으로 같은 역할을 하는 부분끼리 자르는 방법

 

장점 

중요와 덜중요한 부분을 분리할수 있어서 효율적 

같은 코드영역은 하나만 저장하고 같은 곳을 가리키도록 함 

내부 단편화 문제가 해결됨 

 

단점 

 

다른 길이로 자르기 때문에 외부 단편화가 발생할 수 있음 

외부 단편화가 내부 단편화에 비해 훨씬 큰 공간이 낭비됨

 

 

해결방법

페이징 + 세그멘테이션

부위별로 먼저 나누고 각 부위를 일정 크기대로 자름 

세그먼트의 장점을 살리면서 외부 단편화를 방지할 수 있음

테이블 두번 거쳐야 하기 때문에 조금 느려질 수 있음 

 

 

4. 파일과 파일 시스템

4-1 파일과 파일시스템

 

파일 : 컴퓨터에서 정보를 담는 논리적인 저장 단위

파일 메타 데이터를 담고 있음 

디렉토리 : 파일에대한 정보를 가지고 있는 특수한 파일

파일시스템 : 파일들을 쉽게 접근할 수 있도록 관리하는 체제 

     - 디스크, 네트워크, 특수용도의 파일시스템으로 나뉨 

 

4-2 디스크 할당 

 

순차 접근장치 : 순차적으로 접근함 

직접 접근장치 : 헤드를 옮겨 원하는 부분부터 접근가능

 

 

파일할당

 

하드디스크는 블록이라는 단위로 나누어 번호를 붙임

모터가 돌아서 그 지점까지 가야함

 

1. 연속할당 

  헤드의 이동을 최소화하여 입출력 속도 빠름 

  외부단편화 발생(할당과 삭제반복)

 

2. 연결할당 

  * 연결리스트 (데이터, 다음가리키는 포인터 구성 한줄 자료구조)

  서로 다음 포인터를 가지고 있으면서 연결은 되어있지만 

  연속적이지는 않아도 되는 할당구조

  단편화 발생하지 않음 

단점 : 헤드가 여러번 움직여야 해서 입출력이 느림

직접접근 불가능 (3번째 칸은? 처음부터 접근해야함)

한 칸이 손상되면 다음부터 모두 읽을 수 없음 

 

3. FAT방식 

화살표들을 모아서 하나의 표로 저장하는 방식

장점 : 직접접근 가능

단점 : FAT에 기록할 수 있는 칸의 수 * 한 칸의 크기 보다 큰 저장장치에서는 사용 불가 

          (칸 번호 자릿수를 늘리면 검색 시간 증가, 칸의 크기를 늘리면 단편화 발생)

 

4. 색인 할당

번호들을 순서대로 한 칸(인덱스 블록)에 기록 

장점 : 외부 단편화 발생하지 않음 , 직접 접근 가능 

단점 : 파일마다 한칸 사용 필수, 한칸 들어갈 수 없는 큰 파일 저장 불가 

 

4-3 링크

 리눅스의 inode(index-node)

 파일에 대한 모든 정보 기록

 각 노드에 번호부여 

 모든 파일 디렉토리 고유한 inode

읽을때 inode로 읽고 쓰고 수정 함 

 

심볼릭 링크와 하드링크 

리눅스의 바로가기 기능 

 

심볼릭 링크

 

원본파일 삭제되거나 경로가 변하면 링크 끊어짐

링크파일 수정하면 원본파일 내용이 동일하게 수정

링크 파일도 별도의 inode가짐 

 

하드링크

 

하드링크 파일은 원본과 동일한 inode를 가리킴

원본 삭제해도 하드링크파일은 존재 

링크 파일 수정하면 원본 파일도 수정

 

 

링크생성하기 

심볼릭 링크생성

ln -s [원본파일] [심볼릭 링크 파일]

 

하드 링크 생성

ln [원본파일] [하드 링크 파일]

 

 

링크 활용 방법 

대량의 데이터를 복사하는 대신 링크를 활용

하드디스크 용량은 한번만 차지하고 같은 데이터가 저장된 것처럼 사용 가능 

 

 

마운트 

마운트 해야 운영체제가 저장 장치를 인식하여 접근 가능

저장 장치의 파일 시스템에 접근하려면 먼저 인식시키는 작업필요

운영체제가 저장 장치를 인식하도록 하는 작업이 마운트

(장치와 디렉토리를 연결하는 작업)

 

파일시스템의 목록 확인 명령어

lsblk -p

 

마운트 하기 

sudo mount [옵션] [장치] [디렉토리]

옵션 : -t 추가하면 파일 시스템의 유형을 입력 (예 : ext4)

 

 

 

 

#엘리스트랙 #엘리스트랙후기 #온라인코딩부트캠프 #온라인코딩학원 #개발자국비지원 #온라인코딩 #개발자부트캠프 #내일배움카드코딩 #국비지원부트캠프 #풀스택 #자바스크립트 #React #Express #Nodejs #데이터분석 #파이썬 #SQL #인공지능 #Tensorflow #딥러닝

'공부기록 > CS' 카테고리의 다른 글

11주차 블로그 챌린지 - 네트워크  (0) 2023.11.01
혼공 chapter 10 - 1 프로세스 개요  (0) 2023.10.30
운영체제란  (0) 2023.10.30
프로세스  (0) 2023.10.30