본문 바로가기

Dev.

(341)
[개발] 누워서 읽는 알고리즘 / 임백준 / 한빛출판네트워크 누워서 읽는 알고리즘두번째 읽는 도중에 서평을 작성하게 되었다.두 번 읽는 이유는, 첫번째 읽었을 때의 느낌과 두번째 읽었을 때의 느낌이 확연히 다를 것이라고,첫번째 읽을 때 예상했기 때문이다.물론 모든 책이, 두 번째 읽을 때 느낌이 다르겠지만,개발이라는 분야를 공부하는 측면에서 봤을 때, 이 책은 두 번째 읽을 때, 느낌이 확실히 다를 것이다.단, 개발 공부를 시작하는 사람의 입장에서의 이야기이고,이 책을 처음 읽고나서, 두 번째로 읽기 전에 어느 정도의 개발 공부를 했다는 가정하의 이야기이다.이미 많은 것을 알고 있는 사람에겐 나의 이야기가 공감이 안될 것이다.사실,이 책을 처음 읽고 많은 실망을 했기 때문에, 적어도 서평을 쓰려면 한 번 더 읽고 나서 쓰겠다는 생각으로서평을 작성하지 않았다. 저자..
[OS] 9-1. Virtual Memory I Chapter 9-1. Virtual Memory IVirtual Memory물리적인 메모리에 프로세스를 적재하는데에는 운영체제가 관여하는 부분이 없었다.하지만 Virtual Memory 즉 가상 메모리에 대한 문제는 운영체제가 전적으로 관여한다.Virtual Memory는 Memory Management에서 다뤄진대로,메모리에 프로세스가 더이상 적재될 수 없을 때, Swapped out되는 메모리이다. Demand Paging 기법요청이 왔을 때, Page 단위로 메모리에 올리는 기법을 말한다.I/O 양이 감소되고, Memory 사용량이 감소되고, 빠른 응답시간을 보이고, 더 많은 사용자를 수용할 수 있게 된다.즉. 페이지 단위로 프로세스가 적재하는 상태이며,프로세스의 모든 페이지가 올라가 있지 않고 ..
[OS] 8-5. Memory Management V Chapter 8-5. Memory Management VSegmentation프로그램의 주소 공간을 의미있는 단위로 자르는 것을 말한다.process가 code, data, stack으로 나뉘는 부분을code segment, data segment, stack segment로 나눈다.물론 이것보다 더 작은 단위로 분할할 수도 있다.작게는 프로그램을 구성하는 함수 하나, 하나를 세그먼트로 지정할 수도 있고,크게는 프로그램 전체를 하나의 세그먼트로 정의할 수도 있다.Segmentation기법은 분할된 조각들의 크기가 균일하지 않기 때문에 연속할당 시 발생했던 문제들이 그대로 발생할 가능성이 있다. Segment에는 local address가 지정되는데,logical address는 으로 구성된다.이를 Se..
[OS] 8-4. Memory Management IV Chapter 8-4. Memory Management IV 현대의 컴퓨터에서 지원하는 프로그램들의 크기가 커졌다.address space가 커져서 그와 비례하여 page table들의 크기가 비약적으로 커지게 된다.프로그램마다, (프로세스 마다)이 따로 존재하는 page table들을 모두 메모리에 올리기에는 한계가 존재했다.올린다고 하더라도, 극히 일부분만 필요로 하기 때문에, 공간낭비를 초래하게 된다. 그래서 page table을 또 하나의 page로 인식하는 방식을 사용했다.마치, 서울시 안에 서대문구, 관악구, 강남구로 행정 구역을 나눠놓은 것 처럼페이지 안에 주소 체계를 한 단계 더 두는 것이다. Two Level Page Table (paging 기법)안쪽 페이지 테이블(inner page ..
[OS] 8-3. Memory Management III Chapter 8-3. Memory Management III Paging 기법 (불연속할당)(OS가 아닌 하드웨어에 의해 수행되는 내용이다.)물리적인 공간에 올려놓거나 backing store에 올려두거나 할 때 페이지 단위로 시행한다.프로그램을 구성하는 주소 공간을 같은 크기의 페이지라는 단위로 분할한다.그리고 Phygical memory를 page와 동일한 크기의 frame으로 나눈다.Paging 기법을 사용하면 hole들이 생기지 않는다.대신에, 불연속으로 할당하게 되면 주소 변환이 복잡해진다.각각의 페이지들이 물리적인 메모리 중 어느 부분에 올라갔는지 확인해야 하기 때문이다.그래서 Page 별로 주소 변환을 해줄 방법이 필요해졌고, page table을 생성했다.logical address가 t..
[OS] 8-2. Memory Management II Chapter 8-2. Memory Management II Allocation of Physical Memory메모리에는 OS가 상주하는 영역이 있고 그 나머지 메모리공간에 사용자 프로그램이 올라가게 된다.OS는 Interrupt vector와 함께 낮은 주소를 사용한다. 사용자 프로세스 영역 할당방법에는 두 가지로 나눌 수 있다.Contiguous allocation (연속 할당)각각의 프로세스가 메모리의 연속적인 공간에 적재되는 방법이다.고정 분할 방식가변 분할 방식두 가지 방식으로 나뉜다. Noncontiguous allocation (불연속 할당)하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있는 방법이다.PaingSegmentationPaged Segmentation세 가지 방식이..
[OS] 8-1. Memory Management I Chapter 8-1. Memory Management I 메모리란 주소를 통해 접근하는 객체로 Main Memory는 주기억장치를 의미한다.(따로 언급이 없으면 메모리가 Main memory를 의미한다.) 주소의 종류Logical Address(=virtual address)프로세스마다 독립적으로 갖는 공간으로 0번지부터 시작한다.이 주소는 CPU가 인식하는 주소 체계이다. Physical Address말 그대로, 물리적인 메모리 주소로 실제 하드웨어에 올라가는 위치를 뜻한다. Symbolic Address프로그래머들이 특정 이름을 통해 변수를 지정하고 값을 저장할 때,그 변수를 하드웨어의 몇 번지에 저장할 지 정하지 않는다.또한 그 변수를 CPU가 어떻게 인식할지도 정하지 않는다.그저 변수의 이름을 ..
[OS] 7. Deadlock Chapter 7. Deadlock 교착상태.일련의 프로세스들이 서로가 가진 자원을 요청하고 기다리며 blocked 된 상태를 말한다.자원(리소스)에 대한 개념을 다시 한 번 짚고 가자면,하드웨어와 소프트웨어 등을 포괄하는 개념이다.예를 들면, I/O space, CPU cycle, memory space, semaphore 등이 있다.그리고 프로세스가 자원을 사용하는 절차에는 Request, Allocate, Use, Release 단계가 존재한다. 즉, Deadlock 이란,프로세스 P1과 P2가P1(a); P2(b); // 각각 a,b라는 자원을 할당받은 상태에서P1(b) request, P2(a) request // b를 요청하고 a를 요청한 상태를 말한다. Deadlock이 형성되기 위한 4가지..