본문 바로가기

CS/운영체제(OS)

OS - 주기억장치 개요

728x90

운영체제의 역할

  • 운영체제의 가장 중요한 역할은 프로세스 관리와 메모리 관리이다.
  • 이제부터 알아볼 것은 메모리 관리이다.

메모리는 언제나 부족하다.

  • IT 기술이 발전하면서 계속해서 메모리는 늘어나고 있지만 그와 동시에 다뤄야할 데이터와 프로그램들도 함께 거대해진다. 그래서 메모리는 언제나 부족하고 효율적으로 관리해야한다.

메모리 관리의 개념과 정책

  • 메모리 관리는 메모리 관리자가 담당하며 운영체제의 관리 모듈과 메모리 관리 장치가 협업하여 관리한다. 메모리 관리자는 여러 정책을 수립하고 관리한다.
    • 적재 정책
    • 배치 정책
    • 대치 정책

메모리의 구조: 주소, 데이터

  • 주소는 논리적 주소와 물리적 주소로 나뉜다.
    • 논리적 주소 - 프로그래머가 사용하는 공간으로 보는 논리적 관점의 주소. 목적 코드가 저장된 공간과 프로그램에서 사용하는 자료구조 등이 이에 해당한다.
    • 물리적 주소 - 실제 메모리 칩이나 디스크에 할당되는 실질적인 주소를 뜻한다.
    • 이렇게 논리적 주소에서 실질적인 주소로 변환할 때 MMU가 관여한다.

  • 해당 프로세스의 논리적 주소에 대응하는 물리적 주소를 알아야 프로세서가 프로세스를 실행할 수 있다. 이 두 주소를 연결, 즉 매핑시켜주는 작업을 바인딩이라하며 C언어나 Java같은 고급 언어에서 변수를 사용하여 논리적 주소를 표시하고 , 이를 실행하면 물리적인 주소로 변환한다.
  • 논리적 주소를 물리적 주소로 변환한는 시점에 따라 바인딩을 컴파일 시간, 적재시간, 실행 시간으로 구분할 수 있다.

  • 컴파일 시간
    • 프로세스가 메모리에 적재될 위치를 컴파일 시간에 알 수 있다면 컴파일러는 물리적 주소를 생성할 수 있다. 만약 R지점에서 시작한다고 알려준다면 R 지점에서 시작해 확장해 나간다. 이후 위치가 변하지 않으면 코드를 다시 컴파일 할 필요가 없다.
  • 적재 시간
    • 어디에 적재할지 컴파일시간에 알 수 없으면 대체 가능한 상대 주소를 생성한다. 상대 주소는 시작 주소가 0으로 생성되므로 최종 바인딩을 적재 시간까지 연기한다. 시작 주소가 변하면 단지 변화값을 반영하려고 사용자 코드를 재적재한다. 이런 과정을 정적 대치라 한다.
  • 실행 시간
    • 한 프로그램이 동일한 장소에서 작동한다면 적재 시간 과정에서 바인딩할 수 있다. 그러나 프로세스를 실행하는 도중에 메모리의 한 세그먼트에서 다른 세그먼트로 이동한다면 바인딩은 수행시간까지 연기된다.
    • 이런 주소 체계는 기본 및 경계 레지스터 등 특수 하드웨어의 지원이 필요하다.

링커와 로더

  • 링커는 컴파일된 목적 파일을 생성하면 링커가 라이브러리 파일이나 다른 목적 파일을 결합한다. 그런 다음 로더가 지정 위치에서 시작하여 메모리에 프로그램을 배치하는데, 하드웨어 구조에 따라 다음 방법으로 수행한다.
    • 절대 적재: 메모리의 지정된 위치에 적재
    • 교체 적재: 메모리의 여러 위치에 적재
      •