운영체제가 하는 일 : 자원 배분 + 자원 효율적 사용
1. 동적 적재 Dynamic Loading
Looad 란?
실행 파일을 메모리에 올리는 작업
cf. Boot는 OS를 메모리에 올리는 작업
1) 동적 적재란?
동적 적재란 프로그램 실행에 반드시 필요한 루틴/데이터만 적재하고, 필요해지면 그때 해당 부분을 올리는 것을 말한다.
2) 동적 적재를 사용하는 이유?
모든 루틴(오류 처리 등), 데이터(배열, 버퍼, ..) 가 다 사용되지는 않는다.
+ 자바에서 클래스들 마찬가지)
- cf. <-> 정적 적재 (Static loading). 현대 운영체제는 동적 적제를 하지만 과거에는 정적 적재를 많이 했음.
2. 동적 연결 Dynamic Linking
1) 동적 적재란?
: 공통 라이브러리 루틴을 하나만 올리는 것을 말한다.
예) 노래 재생 + 동영상 재생 -> 소리 출력 라이브러리, 메일 전송 + FTP 파일 전송 -> 통신 연결 라이브러리
2) 동적 연결을 사용하는 이유?
여러 프로그램에 공통 사용되는 라이브러리(Common Library) 루틴(routine)를 메모리에 중복으로 올리는 것은 낭비이다.
그러므로 라이브러리 루틴 연결을 실행 시까지 미룬다.
링크는 컴파일 후 실행파일 만들기 전에 수행되는데, 이 때 링크하는 것이 아니라, 메모리에 로드된 후 링크한다.
- 공통되는 부분 제외하고 메모리에 올리고, 실행 후 필요할 때 라이브러리 메모리에 올린다.
- 그 다음 공통 라이브러리와 프로세스를 연결한다.
- 다른 프로세스가 공통 라이브러리 필요할 시점에 공통 라이브러리와 프로세스를 연결한다.
이렇게하면 단 하나의 라이브러리 루틴만 메모리에 적재되고, 다른 애플리케이션 실행 시 이 루틴과 연결(link)된다.
3. 스와핑 Swapping
1) 스와핑이란?
메모리에 적재되어 있으나 현재 사용되지 않는 프로세스를 디스크에 이미지로 몰아내 메모리 활용도를 높인다. (= Backing Store = Swap Device)
서버에는 파일 시스템 디스크와 별개로 Backing Store 용 디스크를 따로 두기도한다. Backing Store의 용량은 메인 메모리 사이즈와 같거나 작아도된다.(OS 만큼)
2) swap-out vs. swap-in
Swap-out : 메모리에 적재된 프로세스를 디스크로 몰아내는 것을 말한다.
다시 해당 프로세스를 사용하려는 경우 다시 메모리에 적재할 때 아까와 다른 위치로 올라갈 것(다른 프로세스가 사용한다면). 그러면 OS가 relocation registry에 값을 바꿔주면된다.
Swap-in : 디스크에 스왑된 프로세스를 다시 메모리에 올리는 것을 말한다.
프로세스 크기가 크면 backing store 입출력에 따른 부담이 크고 속도가 느려진다. (슈퍼컴퓨터는 디스크 대신 조금 느린 메모리를 사용하기도 한다)
'CS > OS' 카테고리의 다른 글
[운영체제] 가상 기억장치 (0) | 2024.12.13 |
---|---|
[운영체제] 8. 연속 메모리 할당 (0) | 2024.12.13 |
[운영체제] 8. 프로그램을 메인 메모리에 올리기 (MMU) (0) | 2024.12.13 |
[운영체제] 8. 주기억장치 관리 개요 (0) | 2024.12.11 |
[운영체제] 7. 프로세스 동기화 도구 : 모니터 Monitor (0) | 2024.12.11 |