일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- VARCHAR (1)
- pytest
- terminal
- 코루틴 빌더
- Spring Batch
- python
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- table not found
- JanusWebRTCServer
- 티스토리챌린지
- 개성국밥
- preemption #
- kotlin
- taint
- 코루틴 컨텍스트
- JanusWebRTCGateway
- mp4fpsmod
- 오블완
- PersistenceContext
- JanusGateway
- 깡돼후
- 겨울 부산
- vfr video
- 달인막창
- PytestPluginManager
- JanusWebRTC
- tolerated
- k8s #kubernetes #쿠버네티스
- Value too long for column
- 자원부족
너와 나의 스토리
OS-week4 [CH13_Address Spaces] 본문
The Abstraction: Address Spaces
출처: http://pages.cs.wisc.edu/~remzi/OSTEP/
keyword
- interactivity
- address space
13.1
- 여러 프로세스가 같은 메모리를 공유할 수 있다.
13.2 Multiprogramming and Time Sharing
- 기계를 동시에 작동시키기 위해 interactivity의 개념이 중요해졌다.
- time sharing을 구현하려면
ㄴ 잠시 동안 한 프로세스를 작동시켜 메모리에 대한 전체 액세스 권한을 부여하고
ㄴ 중지하고 disk같은 곳에 이것의 모든 상태를 저장해야하고 다른 프로세스의 상태를 로드 한 후
잠시 실행하여 시스템의 일종의 원본 공유를 구현해야한다.
-> but! 이건 너무 느림 So, OS가 time sharing을 효과적으로 하도록 허용해야한다.
13.3 The Address Space
- 시스템에서 실행 중인 프로그램의 메모리 보기 : 주소 공간(address space) -> os가 사용하기 쉬운 물리적 메모리 개념
- "메모리의 기본 os 개념을 이해하려면 메모리가 가상화되는 방식을 이해하는게 중요하다"
- 프로세스의 메모리 공간은 작동 중인 프로그램 의 모든 메모리 상태를 포함한다.
ㄴ 프로그램 코드도 주소 공간에 있음
- 프로그램이 작동되는 동안 stack을 사용하여 함수 콜 체인의 위치를 추적하고
지역 변수를 할당하고 매개 변수를 전달하고 루틴값을 전달한다.
- heap은 동적 할당된 사용자 관리 메모리에 사용된다.
- code는 static(정적)이다.
ㄴ 메모리에 저장하기 쉬움
- 프로그램이 실행되는 동안 성장(or 축소) 할 수 있는 주소 공간의 두 영역을 가지고 있다.
ㄴ heap & stack
ㄴ 이 두개를 주소 공간의 반대쪽 끝에 둔다. -> 서로 반대 방향으로 성장함
ㄴ heap은 코드(at 1KB) 이후에서 시작해서 성장
stack은 16KB에서 시작해서 아래로 성장
- 다수의 thread들이 주소 공간에서 공존할 때, 이렇게 주소 공간을 나누는 것은 좋지 않다.
- 어떻게 각각의 프로세스를 다른 주소의 메모리에 load 할 수 있을까?
요점 : How to virtualize memory os가 단일 실제(physical) 메모리 위에 다중 실행 프로세스를 위핸 비공개의 큰 주소 강간을 어떻게 추상화 할 수 있는가? |
ㄴ os는 virtualizing memory이다.
ㄴ 프로세스들은 가상 메모리 주소에 load한다.
13.4 Goals
- vritual memory system(VM)의 주요 목표
1. transparency(투명도)
ㄴ 프로그램은 메모리가 가상화된 것을 인지하지 못한다.
2. efficiency
ㄴ 시간과 공간을 효율적으로 사용 -> 하드웨어에 의존
3. protection
ㄴ 한 프로세스가 작동될 때 다른 프로세스의 메모리에 접근하지 못하도록 함
- 유저 수준의 프로그램의 프로그래머가 보는 모든 주소는 가상 주소이다.
- 즉, VM 시스템은 명렁과 데이터를 가지고 있고,
OS는 가상 메모리 참조를 가지고 있어 이를 physical 주소로 바꾼다.
'Operating System' 카테고리의 다른 글
OS-week3 [Multi-level Feedback] (0) | 2019.03.26 |
---|---|
OS-week3 [Scheduling] (0) | 2019.03.26 |
CLI 및 Linux를 공부해보자 (0) | 2019.03.26 |
week2 OS -[ Process / Limited execution ] (0) | 2019.03.13 |
week1 OS - [ Virtualization / Concurrency / Persistence] (0) | 2019.03.08 |