일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 열혈 TCP/IP 소켓 프로그래밍
- FIFO paging
- OS
- Spring
- C++
- 제프리리처
- Window-Via-c/c++
- n타일링2
- 토마토
- BOJ
- 에러핸들링
- 우아한 테크 세미나
- 우아한레디스
- redis
- 운영체제
- 이펙티브코틀린
- Operating System.
- 스프링 입문
- Four Squares
- inflearn
- 스프링 핵심 원리
- 열혈 tcp/ip 프로그래밍
- Operating System
- TCP/IP
- C#
- HTTP
- 10026번
- 2475번
- 김영한
- 윤성우 저자
- Today
- Total
나의 브을로오그으
#17. 주기억장치관리 개요(Main Memory) 본문
주기억장치 관리(Main Memory Management)
- 메모리 역사
* Core memory
* 진공판 메모리
* 트랜지스터 메모리
* 집적회로 메모리: SRAM, DRAM
- 메모리 용량
* 1970년대: 8-bit PC 64KB
* 1980년대: 16-bit IBM-PC 640KB > 1MB > 4MB
* 1990년대: 수MB > 수십 MB
* 2000년대~: 수백 MB > 수 GB
언제나 부족한 메모리
- 프로그램 변천
* 기계어/어셈블리어 작성
* C언어 작성
* 자바, 객체지향형 언어 작성
* 숫자 처리 > 문자 처리 > 멀티미디어 처리 > Big Data
- 메모리 용량 증가 vs 프로그램 크기 증가
* 언제나 부족한 메모리
- 어떻게 메모리를 효과적으로 사용할 수 있을까?
* 메모리 낭비 없애기
* 가상 메모리 (virtual memory)
프로그램을 메모리에 올리기
- 메모리 구조
* 주소(Address) + 데이터(Data)
- 프로그램 개발
* 원천파일 (Source file): 고수준언어 또는 어셈블리언어
* 목적파일 (Object file): 컴파일 또는 어셈블 결과
* 실행파일 (Executable file): 링크 결과
- 컴파일러, 어셈블러, 링커, 로더
* Compiler, assembler, linker, loader
- 프로그램 실행: code + data + stack
프로그램을 메모리에 올리기
- 실행파일을 메모리에 올리기
* 메모리 몇 번지에?
* 다중 프로그래밍 환경에서는?
- MMU 사용
* 재배치 레지스터 (Relocation register)
(CPU에서는 무조건 프로세스를 0번지부터 읽게됨 그러나 중간에 MMU를 사용하여 재배치 레지스터에 해당 프로그램의 시작 주소가 들어있음. 이 값을 이용해서 주소를 조작하여 처리함. 그래서 로더에 의해 프로그램이 메모리에 올라와도 정상적으로 연산되는 원리
- 주소 구분
* 논리주소 (logical address) vs 물리주소 (physical address)
'Computer Science > 운영체제' 카테고리의 다른 글
#19. 연속 메모리 할당(Contiguous Memory Allocation) (0) | 2022.09.05 |
---|---|
#18. 메모리 절약(Main Memory Management) (0) | 2022.09.02 |
#16. 모니터(Monitors) (0) | 2022.08.30 |
#15. 교착상태(Deadlocks) (0) | 2022.08.29 |
#14. 기타 전통적 동기화 문제 (0) | 2022.08.24 |