컴퓨터 구조
CPU (Central/Core Processing Unit)
- CPU 연산 > 레지스터 값 참조
레지스터
: 자료 보관하는 매우 빠른 기억 장소 / 용량 적음(메인메모리 필요이유), 휘발성
- CPU는 main memory(=physical memory)를 두어 레지스터리와 같이 사용(참조)함.
- main memory와 registry만으로는 부족, Disk(외부저장장치 / 비휘발성 / 느림)를 이용하게 됨.
- cpu는 main-memory 값 까지만 사용(참조)가능함
- OS를 통해 I/O(input/output)작업으로 Disk를 이용가능하게 만듬.
프로그램 실행
프로그램 실행
> cpu가 일을 한다
> 프로그램의 정보가 메인 메모리에 올려져야함
source
> 컴파일러
/ 링커
> 실행 파일
생성
컴파일러
: 프로그래밍 코드를 cpu언어(기계어)로 변환
링커
: 목적?파일들을 합쳐 하나의 실행 파일로 만듬
- 프로그램 실행 > fork(newprocess생성) > exec요청 > 로더 호출 > 로더 : 새로 생성된 프로세스의 주소공간을 사용하여 지정된 실행파일(2진)을 메모리에 올림
disk의 실행파일 > 메모리에 올려져 > cpu가 참조 및 실행됨
가상메모리 사용하기 위해서
실행시간 바인딩
요구됨 > 논리주소 물리주소 값이 달라지게 된다.
논리주소
주소바인딩
-
cpu가 작동하기위해 논리주소가 메인 메모리상에 올라와야한다.
-
논리주소 물리적 메모리의 주소, 특정위치로 맵핑 되는것, 주소바인딩
주소 바인딩 방식
물리적 메모리 주소 결정되는 시기에 따라 나누어짐
-
컴파일 타임 바인딩
-
로드 타임 바인딩
-
실행시간 바인딩
- 기준 레지스터 (물리주소의 시작점)
- 한계 레지스터 (논리주소의 끝점)
- MMU 하드웨어 지원 필요
cpu가 주소 참조시 주소 매핑 테이블을 이용해 바인딩 점검
- MMU
CPU가 메모리에 접근을 관리하는 하드웨어 부품 (논리주소를 물리주소로 맵핑해주는 하드웨어 장치)
[논리적 주소] + [기준 레지스터] = [물리적 주소]를 찾는다.
CPU 동작 : 시분할 방식
- 한정된 1개의 process(cpu)로 여러 프로그램을 동시에 실행하는 것처럼 사용하는 경우.
- cpu가 짧은 시간 단위로 process를 바꿔가면서 사용하는 것 : 시분할 방식
스왑(Swap)영역
- 여러 개의 프로그램이 메모리에 올라와 물리메모리 영역이 부족한 경우 > 메모리 공간의 확장영역 > swap영역 사용됨
- 외부저장장치(Disk)에 존재
- 물리 메모리의 확장개념
- 메인메모리 공간부족 > 실행중인 프로세스의 주소공간을 Main_memory에서 일시적으로 Disk로 옮겨 둔 것
- OS에 의해 I/O 작업 발생
가상메모리
◆ why? 필요
- 물리메모리의 크기보다 큰 프로세스 실행.
- 빈번한 swap과의 i/o 발생.
◆ 필요한 것만 물리메모리 적재
- Demand paging (요구 페이징) 기법
◆ 구분 어떻게?
- 유/무효 비트 사용
- valid : 있음
- invalid : 없음 > page fault 발생시킴
논리적 메모리는 MMU의 도움으로 실행타임 바인딩 기법 적용.
invalid 경우
- 논리메모리에서 cpu 1번 참조 시도.
- 페이지테이블 i(nvalid) 확인 > 물리메모리 없음.
- page fault 발생.
- cpu 제어권 os에 넘어감
- swap영역에서 해당 page 참조 > 물리메모리에 올림
프로세스마다 가상의 주소공간 확보
필요한 페이지만 물리메모리에 올려 사용
효과적 물리메로리 사용
OS는 프로그램이 물리메모리 크기 제약없이 실행 가능(지원)