일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 토스 합격
- 토스코테
- 해시테이블
- spring
- 토스공채
- 카카오 코딩테스트
- 카카오 면접 후기
- Java
- HandlerMapping
- 인덱스 자료구조
- 프로세스
- Python
- HashTable
- 토스면접
- 스케쥴링 알고리즘
- Garbage Collecting
- 카카오 블라인드 공채
- Demand Paging
- 경주로 건설
- 자료구조
- 2022 블라인드 공채
- spring boot
- MappingRegistry
- binary semaphore
- 운영체제
- 카카오
- cpython
- 컴공 3학년
- 토스NEXT
- 카카오 기술면접
- Today
- Total
목록전체 글 (27)
weasel의 우당탕탕 개발기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfSTBS/btrMrxQOqnA/YNqJ1fB4Ugcz2Ap7bcYWV0/img.png)
이전편 : 페이징 가상 메모리 (Virtual Memory) 가상 메모리는 논리적 메모리와 물리 메모리를 분리시켜, 프로세스 전체가 메모리내에 올라오지 않아도 실행가능하도록 하는 기법이다. 물론 프로그램이 실행되기 위해서는 메모리에 프로세스가 올라와야 하는것은 맞다. 하지만 특정 부분을 실행할때는 그 부분만 메모리 위에 올라와있어도 구동이 된다. 그렇기 때문에 논리적 주소공간은 실제 물리적 주소공간보다 훨씬 커도 된다. 왜냐면, 어차피 일부만 실행할때 필요하니까.. 그럼 가장 핵심적인 기술은 프로세스를 실행할때, 필요한 메모리를 불러오고(swapped in) 필요하지 않은 부분은 내리는(swapped out) 과정이 필요하다. 가상메모리는 요구 페이징(Demand Paging) 이라는 기술로 구현된다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eiz8t8/btrMozau6vu/K5knjtiWG6jFegJTkeYU7K/img.png)
Array 논리적 저장순서와 물리적 저장순서가 일치한다. 다시 말해서 a[2] 와 다음에 오는 a[3] 는 물리적으로 연결되어 있다. 하지만, 하나의 Array의 크기가 너무 커 하나의 page(혹은 frame) 안에 다 못들어오는 경우에는 virtual adress는 연속적으로 이어져있지만, physical adress에서도 그렇다는 보장은 없다. 💡 하지만 physical adress와 virtual address에 관한 문제는 OS가 처리할 일이고 프로그래머에게 보이지 않는 추상계층이기에 우리가 깊게 생각할 필요는 없다고 생각한다. 또, 한번 사이즈가 정해지면 변할 수 없다. 이를 해결하는 방법이 Dynamic Array다. 조회 : 인덱스를 기반으로 한 접근이 가능하다. 인덱스를 알고 있다면 O(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dEMfpz/btrMqsPIgYN/Ofp4fuivoe4A566fn4I79k/img.png)
운영체제의 핵심 부분인 하나인 메모리 관리에 대해서 적겠다. 대략 3편으로 구성되며 페이징,가상메모리,페이지 교체 알고리즘 순이다. MMU CPU는 프로세스를 구동할 때 PC를 참조해서 다음 명령어를 메모리에서 가져온다. 명령어를 참고해 필요한 데이터가 있으면 메모리에서 가져오는데 이때 주소체계가 서로 다르다. 아래의 그림처럼 base와 limit 레지스터 안에 있는 값들을 조합해서 CPU가 사용하는 주소(논리 주소)와 실제 메모리 주소(물리 주소)를 구할 수 있다. 그러면 왜 두 주소를 구분하였을까? 가장 큰 이유는 보안이다. Limit 레지스터를 둠으로써, P1이 P2의 메모리 영역을 참조하는 Memory Illegal Access를 방지하는 Protection의 기능을 수행한다. MMU는 Memor..