Process에 대해서는 이전 포스트들에서도 많이 다룬 내용이니, 이번 포스트에서는 Linux 관점에서의 Process에 대해서 언급해보고자 한다. Linux에서의 Process 중 가장 먼저 실행되는 process는 Init이고 process ID는 1을 가리킨다. Init Process는 System이 부팅되고 난 후, 제일 처음으로 실행되는 Process이기도 하고, System 종료시점까지 가장 마지막으로 숭해되는 Process이기도 하다. 보통 Init이 실행되고 난 후에 시스템에서 필요한 Process는 Init에서 파생되어서 나오는데, 이 Init과 파생되어 나온 Process 간의 관계를 흔히 부모-자식 관계라고 표현한다. 물론 파생되어서 나온 Process에서 생성된 Process 간에도..
몇 주전에 한빛 미디어를 통해서 O`reilly의 IT 기사를 번역할 기회가 있어서 짬짬히 번역했다. 내용은 Python의 수치연산 Library인 Pandas와 일종의 문서 배포툴인 Jupyter에 대한 간단한 실제 예시를 담은 것이었다. 이전에 한빛 리더스 활동을 통해서 접했던 Pandas는 접할때도 그래프도 이쁘게 그려주고 참 신기한 라이브러리였는데, 이번 기사를 번역하면서 실제로 해보면 이해만 잘하고 있으면 다루기 쉬울거 같다는 느낌을 받았다. 참고로 원문은 Matt Harrison이 쓴 "Python’s pandas make data analysis easy and powerful with a few lines of code" 이라는 글이다. 잘 번역을 해서 사람들이 이해하기 쉬웠으면 하는 바램..
UART driver를 개발하다보면서 많은 문제에 봉착하고, 그걸 해결하려고 노력을 한다. 지금 제일 큰 문제가 UART IP내에 있는 FIFO buffer에 데이터를 읽어오는 속도보다 FIFO buffer로 데이터를 push하는 속도가 빠르다는 점이다. 이게 뭔소리지 하는 사람을 위해서 첨언을 하자면 어떤 크기가 일정한 공간에서 내가 가져오는 속도보다 외부에서 여기에 집어넣는 속도가 더 빠르다는 것이다. 이렇게 되면 어느 순간부터인가는 공간의 크기보다 많은 데이터들이 들어와 중간에 손실되는 것들도 생기게 된다. 지금은 UART에 한정해서 이야기하고 있는거지만, 아마 거진 FIFO buffer를 처리해야하는 작업들 대부분은 위와같은 overflow 현상에 대한 대처를 마련해놔야 한다. 나같은 경우는 이 ..
User가 주로 이용하는 Program은 보통 file을 읽고 쓰는 기능을 수행한다. 이 file은 보통 HDD라고 불리는 secondary storage에 저장되어 있는데, 각각의 file들이 저장되어 있는 위치는 physical memory처럼 뭔가의 일관적인 형태로 되어 있다. 우리야 OS가 올라가 있는 상태에서 file에 접근하니, file의 위치나 그 file이 가진 property를 text 등으로 확인할 수 있지만, 실제로는 이와 같은 정보는 physical I/O layer가 추상화된 형태이고 실제로는 0,1로 이뤄진 정보로 되어 있다. 우리가 0과 1을 이용해서 file을 쓰지 않는 것처럼 중간에 있는 filesystem layer가 사이를 중개해주며, 0과 1을 이용해서 r/w가 이뤄지..
며칠 전에 Udacity 5주년이라고 첫달 수강료를 55% 할인해주겠다길래, 한번 들어볼까 싶었다.맨 처음에는 Machine Learning Engineer course를 밟을려고 했는데, 강의를 끝까지 들을 엄두가 나지 않아 Front-End Nano Degree(FEND) 를 듣게 됬다. 생각보다 Discussion 이나 강의 resource가 잘 구축된거 같고, 무엇보다도 실시간으로 교사가 Review를 해주는게 좋았다. 예시로 두번째 과제 프로젝트하는 것을 소개해본다. 두번째 프로젝트는 html mockup code를 작성하는 것이다. 그래서 예시 그림 파일을 주고 그거와 똑같이 html로 구현해보는 것이다. visual studio code로 html을 작성하고 왼쪽의 chrome에서 새로고침을..
예전에 Process가 뭐냐는 이름으로 포스팅을 한적이 있다.2014/08/29 - [About Study/OS] - [Process] What is a process? 다룬지도 한참되었기도 하고 강의에 해당 주제로 하는게 있어 다시 정리해보고자 한다. Process란 현재 프로그램이 동작하는 개념 그 자체를 말한다. 프로그램이 돌아가면서 사용되는 CPU, MMU, 혹은 input/output device 로부터 resource를 할당받아서 돌아가는 주체이다. 각 process는 state 라는 것을 가지고 있는데, 사용자는 이 state를 보면서 현재 process의 상태를 확인할 수 있다. 물론 state라는 단어 자체가 상태를 의미하긴 하지만 process state에는 보통 아래와 같은 내용들이 ..
이번 포스트에서는 MMU의 효율을 높일 수 있는 방법에 대해서 다뤄보려고 한다. 지난 시간에 언급한 내용중에 보면 - Page map의 entry 중 일부만 physical memory에 상주한다. 라고 한 내용이 있었다. 왜 하필 일부일까. 이때도 항상 계산때 강조한 p, v, m 값을 살펴보면 된다. 지금까지 살펴본 값들을 살펴봐도 일반적으로 virtual page number에 할당된 bit수가 physical page number에 할당된 bit수보다 많은 것을 알 수 있었다. 아무래도 1대1 mapping이 발생하려면 두개의 bit수가 같아야 하는데, 그게 아니니 일부만 상주할 수 있는 것이다. 이런 문제를 해결하기 위한 방안이 multi-level page map이다. 위의 그림과 같이 vir..
Context란 page map상의 entry에 의해서 교환되어지는 정보들을 말한다.사실상 cpu가 memory를 접근하는데 있어서 다뤄지는 정보를 말할 수도 있겠다. 아무튼 프로그램이 구동되려면 해당 프로그램도 실제 physical memory상에 올라가야 하는데, 이 것도 일종의 context로 구성되어 있다고 할 수 있다. 참고로 이런 context는 프로그램상으로 중복되지 않는다. 아는 개념이겠지만, 프로그램이 shared memory를 쓰지 않는 이상, 사용하는 memory 영역은 각각 독립적이며, 예를 등러 어떤 프로그램내에서 virtual address 0번이 가리키는 physical address는 다른 프로그램내의 virtual address 0번이 가리키는 physical address..
이제 TLB (Translation Look-aside Buffer)까지 적용된 MMU의 동작을 살펴볼 차례이다. CPU에서 생성된 virtual address는 맨처음 TLB를 살펴보고 기존에 저장된 cache data중 원하는 VPN->PPN 정보가 있는지를 찾게 된다. 보통 여기서는 miss의 가능성을 최대한 줄이기 위해서 size 자체는 작지만 fully-associative 형태의 SRAM cache가 들어간다. 만약 TLB에 원하는 데이터가 있으면 굳이 Page table을 거치지 않고, 직접적으로 physical memory에 접근할 수 있게 된다. 하지만 원하는 정보가 TLB에 없는 경우라면 virtual address는 page table쪽으로 가서 translation 작업이 이뤄지게 ..
- Total
- Today
- Yesterday
- Python
- Kinect
- Expression Blend 4
- Distribution
- dynamic programming
- windows 8
- TensorFlow Lite
- 강화학습
- Off-policy
- SketchFlow
- Windows Phone 7
- reward
- 한빛미디어
- Offline RL
- RL
- Variance
- Kinect SDK
- End-To-End
- bias
- 파이썬
- Pipeline
- ColorStream
- Gan
- DepthStream
- 딥러닝
- PowerPoint
- arduino
- processing
- Kinect for windows
- Policy Gradient
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |