인프런 워밍업 클럽2 cs <day8>

인프런 워밍업 클럽2 cs <day8>

알고리즘

정렬 : 배열을 가지고 하는 알고리즘
버블 정렬, 선택정렬 -> O(n*n)

버블정렬

  • 첫번째 배열의 수(a)와 다음 수(b)와 비교하여 a>b일 시 b와 교체되고 작은 수는 정렬된 배열이기 때문에 나중에 비교대상이 아니게 된다.

선택정렬

  • 정렬되지 않은 첫번째 배열안의 원소 값과 그다음 배열안 원소~끝까지 다 비교하고 첫번째보다 작을 경우 자리를 바꿔 정렬

     

     

운영체제

  • 메모리

    • 레지스터 : 메모리중 속도가 가장 빠르고 값도 비싸다.

    • 캐시메모리 : 느린 RAM과 빠른 레지스터 중간에서 레지스터가 필요할 데이터를 미리 보기 좋게 저장한다.

    • RAM : 실제로 프로세스들이 올라가서 작업하는 공간

    • 보조저장장치 : 메모리 중에서 효율이 제일 좋은 유일한 비휘발성 메모리

    메모리와 주소

  • 물리 주소 : 메모리의 실제 주소

  • 논리 주소 : 사용자 입장에서의 주소 사용자는 실제 물리주소를 알 수 없기 때문에
    실행될 주소를 0번지라고 가정하고 프로세스를 작업한다.
    물리주소를 일일히 신경쓰지 않고 프로그램 개발

    • 물리주소로는 0x2000번지이지만 논리 주소로는 0x0번지라고 인지된다.

  • RAM은 항상 운영체제 영역과 사용자공간을 따로 빼놓는다.

    • 이때 사용자 공간에서 운영체제 영역을 침범하면 안되기 때문에 ->? 왜여?


      경계레지스터를 사용해서 선을 긋는다.

    • 경계레지스터 : 메모리 관리자가 사용자 프로세스가 경계 레지스터 값을 넘어갔는지 확인
      넘어갔다면 해당 프로세스를 정지 시켜버린다.


      CPU에 있다.

  • 메모리를 가져오는 방식

    • 사용자 : ㅌㅌㅌ번지 데이터가져와.
      -->

      CPU : 응 알겠어~ ㅌㅌㅌ번지 데이터~. 메모리관리자야~ ㅌㅌㅌ번지 데이터좀~
      --> 메모리관리자 : ㅌㅌㅌ번지 데이터? 음~ 재배치 레지스터엔 물리주소를 xxxx를 가리키는 번지네 알겠어~ xxxx번지데이터 보내줄게~

    메모리 할당 방식

  • 가변 분할 방식 : 메모리에 프로세스가 들어올 때 프로세스 크기에 맞게 메모리에 할당 시킨다.

    • 연속된 메모리에 프로세스 할당

    • 외부단편화 발생

  • 고정 분할 방식 : 메모리에 프로세스에 들어올 때 정해진 크기에 맞게 프로세스를 잘라 메모리에 할당 시킨다.

    • 단순하고 오버헤드가 없다.

    • 내부단편화 발생

  • 외부단편화 : 순서대로 프로세스가 할당되고 프로세스a와 프로세스b가 작업을 마친상태.


    60mb짜리 프로세스가 들어올 때빈공간이 총 60mb이지만 고정분할 방식이 아니기때문에 많은 양의 손실이 생긴다.

image

  • 해결 방법 : 조각모음
    조각모음으로 메모리에 들어있는 프로세스를 멈추고 하나하나씩 땡겨서 이동시킨다. ->오버헤드 발생

  • 내부단편화: 낭비공간이 쪼그만한하게 생기는 현상

    image

  • 해결방법 : 버디시스템
    메모리를 2승수단위로 쪼갠 후 할당하는 방식


    (2048바이트를 1024바이트 두개로, 1024바이트를 512바이트두개로, 512바이트를 256바이트 두개로 ....)
    들어가야할 프로세스 크기에 알맞는(프로세스크기보다 크지만 낭비가 제일 적은) 메모리에 할당시켜서 최소한의 낭비를 줄인다.
    -> 내부단편화가 생겨도 전보다는 덜하다!


    image


    어제 복습 블로그 글올렸어야했는데 ㅜㅜ 오늘 하니까 드문 기억만 나네

댓글을 작성해보세요.

채널톡 아이콘