*이 글은 Coursera에 공개되어 있는 HW/SW Interface 강의를 요약한 내용입니다. 이전에 다뤘던 내용을 토대로 간단한 메모리 구조를 살펴보려고 한다. 위와 같은 Virtual Memory와 Physical Memory 형태가 있다.Virtual Memory는 14 bit으로 되어 있고, Physical Memory는 12bit으로 되어 있다. 이전 포스트에서 언급한 내용이기도 하지만 Page Table에서 찾은 base address에 offset만 더한 형태로 Page Table Entry를 찾게 되므로 실제로 Virtual Page나 Physical Page가 가지는 Offset은 같다. 지금의 예시에선 Offset이 6bit으로 되어있는 것으로 보아서 Page size는 2^6 = ..
*이 글은 Coursera에서 제공되는 HW/SW Interface 강의를 요약한 내용입니다. 지금까지 다룬 virtual memory 관련 내용에 따르면 모든 process는 자신만의 virtual address space를 가지고, 필요할 때만 DRAM에 load 시켜서 일종의 cache처럼 사용한다고 했었고, 이를 위해서 mmu에 있는 page table을 사용한다고 했다.결국 그때도 한 이야기지만 virtual page 각각의 Physical DRAM 어디에든 allocate 될 수 있고, 여기서 process간에 page를 share하거나 protect 할 수 있다. 간혹 위의 그림처럼 Process 1과 Process 2상의 virtual page 2는 Physical page 6에 맵핑되어 ..
어쩌다가 방학때 확률 수업을 들었다. 사실 듣게 된 이유는 커리큘럼 속에서 regression에 대한 내용이 들어있어서였다. 지금 하고 있는 일중에 지난 시간의 workload를 바탕으로 앞으로의 workload를 예측하는 방법을 공부하고 있다. 따지고 보면 이런 것도 prediction이고, prediction을 하기 위해서는 여러가지 방법이 있긴 하지만 한번 통계를 이용한 prediction은 어떻게 이뤄지는지 궁금하기도 해서 수업을 듣게 되었다. 사실 여기서 기반이 되고 있는 내용은 내가 하고 있는 컴퓨터 과학과 거리가 멀다. 보통 이런 쪽을 의학통계라고 하는 것 같은데, 강의를 듣다보면 왜 의료쪽에서 통계가 중요한 역할을 하는지 알 수 있을 것 같았다. 뉴스를 보다보면 가령 "군것질 하는 청소년은..
*잘못된 내용을 전달할 수도 있으므로 참고하시기 바랍니다. 가령 대출을 심사하는 은행원이라고 가정을 해보자. 이때 최종 목적은 돈을 잘 갚을 거 같은 사람한테 돈을 빌려주고, 그에 대한 이자를 받을 수 있게 하는 것이다. 반대로 대출 능력이 없는 사람을 걸러내서 최대한 돈을 안 빌려주는 것도 그 목적 중에 하나다. 결국 은행원이 낼 수 있는 output 자체는 돈을 빌려주냐 마냐가 될 것이다. 물론 이윤을 극대화할 수 있도록 얼마만큼 대출을 하겠느냐도 문제가 될 수 있겠지만, 지금은 일단 돈을 빌려주냐 안 빌려주냐에만 초점을 맞춰보자. 그러면 은행원은 대출을 원하는 사람의 어떤 모습을 근거로 대출 여부를 판단할까? 당연한 이야기일 수도 있겠지만 일을 할 수 있는 능력이 있느냐, 최종학력은 어떻게 되느냐,..
* 이 글은 coursera에서 진행되는 HW/SW Interface 강의를 요약한 내용입니다. 지난 포스트에서 Virtual memory를 왜 쓰는지와 Virtual memory를 쓰기 위한 mechanism인 indirection에 대해서 설명했다.거기서 언급한 내용 중에 용량 문제를 해결하기 위해서 virtual memory를 쓴다고 했었는데 이에 대해서 조금 더 다뤄보겠다. 사실 virtual memory는 disk에 저장되면서 필요할 때만 physical memory로 load되서 access가 된다. 그러면 상식적으로 생각할때 virtual memory 크기는 physical memory보다는 훨씬 클 것이다. 그러면 과연 이 많은 virtual memory속 data를 physical mem..
* 이 글은 coursera에서 제공되는 HW/SW Interface 강의를 요약한 내용입니다. Virtual Memory라는 말을 들어본 사람이라면 왜 이름에 Virtual 이 들어갔는지 궁금할 것이다. 말그대로 가상이라는 말인데, 우리가 하드웨어로 장착하는 DRAM말고도 또다른 영역이 존재하나 싶기도 하다. 그런데 그 필요성을 따지다보면 Virtual Memory가 왜 필요한지를 알 수 있지 않을까 싶다. memory는 byte로 구성된 아주 큰 array다. 그리고 각 array에 속해있는 element는 자기가 가지고 있는 address를 이용해서 읽거나 쓸 수 있었다. 이런게 옛날에는 당연하게 여겨지는 원칙이었지만 문제는 64bit addressing을 쓰게 되면서부터다. array의 eleme..
* 이 글은 Coursera에서 제공되는 HW/SW Interface 강의를 요약한 내용입니다. 지난 포스트에서 fork의 동작에 대해서 간단하게 소개했다. 그런데 그때도 이야기 했던 것처럼 fork는 단순히 현재 process의 copy만 새롭게 만드는 형태였다. 그래서 fork만 수행하면 process는 다음과 같이 생성된다. 지금의 예시는 만약 /usr/bin에 있는 ls 명령 실행시킬때 fork-exec 의 형태를 표현한 것이다. 이렇게 같은 stack, heap, data, code를 가진 child process가 생성된다. 그런데 계속 반복적으로 나오는 내용이긴 하지만 process는 program을 실행시키는 instance이기 때문에 code의 path가 /usr/bin/bash로 정해진..
* 이 글은 coursera에서 진행되는 HW/SW Interface의 강의 내용을 요약한 글입니다. 지난 포스트를 통해서 Process 가 뭔지 소개하고 process 가 concurrent 하게 실행될때 발생하는 context switching을 다뤘다. 일단 process 가 하는 일은 알았고, 프로그램이 실행되기 위해서는 instance인 process가 필요하다는 건 알았는데 이제 이걸 어떻게 생성할 지가 궁금해진다. 우선 linux system을 가정할 때 process 생성과정은 fork-exec 구조를 따른다.(물론 windows에서는 이런 형태가 아니다.) 그리고 이를 위해서 syscall인 fork()와 execve() 를 사용한다. 어떤 인자를 주느냐에 따라서 execvp()가 될 수..
* 이 글은 coursera에서 제공되는 HW/SW Interface 강의를 요약한 내용입니다. Process란 뭘까? 이 개념에 접근하기 전에 우리가 실행하길 원하는 프로그램들이 컴퓨터 내에서 어떻게 동작하는지를 살펴봐야 한다. 프로그램은 일종의 instruction을 모아둔 집합체이다. 우리가 프로그램을 만들기 위해서 high level language로 구현하는 코드들 역시 컴파일러를 거치게 되면 list of instruction set이 되게 된다. 그런데 단순히 이값이 변환되기만 해서는 프로그램이 실행되지 않는다. 정말로 프로그램을 실행하길 원한다면 해당 instruction들을 memory에 load를 시켜야한다. 막연하게 올려야 된다가 아니고 이렇게 프로그램과 CPU에서 Memory까지 실..
* 이 글은 coursera에 공개되어 있는 강의인 HW/SW Interface의 강의 내용을 요약한 글입니다. cpu의 역할을 뭘까? 당연히 사용자가 명령하는 것을 정해진 주기마다 수행한다. 그런데 사용자의 명령은 내부의 어떤 과정을 통해서 intruction이라는 개념으로 변환이 되고 이걸 읽고 실행하는 과정을 거치게 된다. 우리가 컴퓨터를 켜는 순간부터 끌때까지 말이다. 보통 이런 과정을 control flow라고 한다. 예를 들어서 linux kernel 내부에서 network 기능이 수행될때의 그림은 다음과 같이 표현된다. 아마 cs를 전공하는 사람이라면 초창기에 열심히 control flow 를 그리면서 프로그램을 설계하는 방법을 익혔을 것이다. 앞에 나온 그림처럼 cpu는 일정시간마다 나열된..
- Total
- Today
- Yesterday
- SketchFlow
- Gan
- Offline RL
- Policy Gradient
- DepthStream
- bias
- Kinect SDK
- Distribution
- End-To-End
- PowerPoint
- Pipeline
- Variance
- RL
- Windows Phone 7
- TensorFlow Lite
- processing
- Kinect for windows
- 파이썬
- Kinect
- dynamic programming
- windows 8
- 딥러닝
- reward
- Off-policy
- Python
- 한빛미디어
- Expression Blend 4
- 강화학습
- arduino
- ColorStream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |