728x90
반응형

Embedded system

728x90
반응형
Embedded system/임베디드 리눅스 프로그래밍 완전정복

[2장/툴체인] 툴체인(toolchain)이란?

툴체인은 임베디드 리눅스의 첫 번째 요소이자 프로젝트의 시작점으로 장치에서 실행될 모든 코드는 툴체인을 통해 컴파일된다. 초기 단계에서의 선택이 최종 산출물에 엄청난 영향을 끼칠 수도 있다. ● 툴체인 요건 프로젝트에 필요한 언어를 지원해야 한다. POSIX (Portable Operatin System Inerface) 및 기타 시스템 인터페이스에 대한 구현을 갖고 있어야 한다. 보안 결함이나 버그가 발견되면 업데이트가 되어야 한다. 프로젝트 내내 바뀌지 않아야 한다. (프로젝트 도중 컴파일러와 개발 라이브러리를 바꾸면 버그가 생기기 쉽다.) ● 툴체인 얻는 방법 파일을 다운로드해서 설치 crosstool-NG 도구를 통해 소스 코드로부터 툴체인 빌드 빌드 시스템이 생성한 툴체인 [ 툴체인 소개 ] 소..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual Memory 6 (Working Set)

[ Working-Set ] 프로그램들이 메모리에서 원활하게 실행이 되려면 어느 정도의 Page Frame을 갖고 있어야 한다. 또한, 프로그램은 특정 시간에는 특정 메모리 위치만 집중적으로 참조하는 특징이 있다. (Reference의 Locality) ​ 예를 들어, for Loop가 실행이 되고 있는 동안에는 Loop를 구성하는 페이지만 집중적으로 참조가 된다. 프로그램이 실행이 되면 함수 구조로 되어있는데, 그 함수를 구성하는 페이지만 집중적으로 참조한다. Working Set은 적어도 한꺼번에 올라와 있도록 보장해 줘야 Page Fault가 자주 발생하지 않는다. ​ 동시에 너무 많은 프로그램들이 메모리에 올라가 있으면 Working Set을 보장할 수 없는 상태가 된다. ​ 예를 들어, Work..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual memory 5 (Page Frame 할당, Thrashing)

[ Page Frame 할당 ] 프로그램 여러 개가 물리적 메모리에 같이 올라와 있는데, 어떤 프로세스의 페이지인지 무관하게 그냥 가장 오래된 페이지를 쫓아냈다. 그런데 프로그램들이 CPU에서 실행이 되면서 Page Fault를 내지 않고 원활하게 실행이 되려면 일련의 페이지들이 다 같이 올라와 있어야 효율적이다. ​ 예를 들어, Instruction을 실행할 때 Loop를 돌고 있는데 그 for 문에 속한 페이지가 3개라고 해보자. 그럼 이 프로그램한테 이 세 개의 페이지를 할당해야 Page Fault가 일어나지 않는다. 즉, for 문을 백만 번 돌고 있을 때, 이 프로그램에게 3개의 페이지만 할당해 주면 Page Fault가 일어나지 않는다. 만약 이 프로그램에게 Page 두 개를 할당시키면 100..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual memory 4 (Paging System에서 LRU, LFU, Clock Algorithm)

[ Paging System에서 LRU, LFU 사용 가능? ] 만약 CPU에서 프로세스 A가 Running 중일 경우, 프로세스 A의 논리적인 메모리에서 Instruction을 하나씩 읽어와서 실행한다. CPU가 프로세스 A에 대한 논리적 주소를 주면 Page Table을 통해서 물리적 메모리 주소로 변환하여 해당 주소의 내용을 CPU로 읽어 들어야 한다. 주소 변환 후, 해당 페이지가 물리적 메모리에 올라와 있으면 물리적 메모리에서 직접 내용을 읽어 CPU로 가져간다. 이 과정에서 운영체제가 하는 일은 없다. 주소 변환은 하드웨어적으로 일어나는 일이며, CPU는 프로세스 A가 가지고 있으면서 주소 변환 후 메모리 참조를 한다. ​ 반면에 프로세스 A가 Running 하면서 주소 변환을 요청했는데 In..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual memory 3 (다양한 캐싱 환경, Paging System, Cache Memory, Buffer Caching, Web Cacging)

● 다양한 캐싱 환경 Replacement 알고리즘은 가상 메모리 시스템에서만 사용되는 게 아니라 Caching이라는 다양한 곳에서 사용이 되고 있다. 한정된 빠른 공간에다 데이터를 저장해 놓고, 다음에 똑같은 요청이 왔을 때 느린 저장 장치까지 가지 않고 Cache로부터 바로 서비스를 한다. 속도가 더 빠르다. ​ ✓ Paging System Paging System에서는 한정된 빠른 공간이 메인 메모리이고 느린 저장 장치가 Backing Store이다. 그래서 가능하면 물리적 메모리에서 서비스를 하며, 메모리에 올라와 있지 않을 때 (Page Fault)에만 Backing Store에서 읽어온다. ✓ Cache Memory CPU가 메모리에 접근할 때, 메모리에 직접 접근하는 게 아니라 CPU와 Ma..

Embedded system/[KOCW] 운영체제

[운영체제] Virtual memory 2 (페이지 교체, Page Replacement, Optimal Algorithm, LRU, LFU)

[ 페이지 교체 (Page Replacement) ] 페이지를 쫓아내는 걸 Page Replacement라고 하며 OS가 하는 일이다. 이때 사용하는 알고리즘은 Replacement Algorithm이다. ​비어있는 페이지가 없는 경우에는 어떤 페이지를 쫓아낸 후, 해당 메모리에 페이지를 올려야 한다. 가능하면 Page Fault가 일어나지 않고 되도록이면 메모리에서 직접 처리할 수 있도록 되어있다. 왜냐하면 페이지를 쫓아내고 난 후, 시간이 얼마 지나지 않아 그 페이지가 다시 참조가 되면 해당 페이지를 Swap area에서 메모리로 다시 올려야 한다. 이 과정은 시간이 매우 오래 걸린다. ​ 어떤 페이지를 메모리에서 쫓아내고 그 자리에 어떤 페이지를 올려놓을 것인가를 결정해야 한다. 가능한 Page F..

Embedded system/임베디드 리눅스 프로그래밍 완전정복

[1장/시작] 임베디드 리눅스의 4요소 및 오픈소스

[ 프로젝트 생명주기 ] 이 책은 프로젝트 단계에 따라 네 부분으로 나뉘어 있으며 각 단계가 반드시 순차적인 것은 아니다. 1장 ~ 6장 : 보드 브링업 단계. 개발 환경을 설정하고 플랫폼을 만드는 데 필요한 요소들 7장 ~ 11장 : 시스템 아키텍처와 설계 선택. 프로그램과 데이터의 저장소, 시스템을 어떻게 초기화할지 12장 ~ 13장 : 응용 프로그램 작성. 프로세스와 스레드 모델을 효과적으로 사용하는 방법과 메모리 관리 방법 14장 ~ 15장 : 디버깅과 성능 최적화. 응용 프로그램과 커널의 코드를 추적, 프로파일, 디버깅 방법 16장 : 실시간 프로그래밍 임베디드 리눅스 4요소 모든 프로젝트는 이 4요소를 구하고 수정하고 배포하면서 시작한다. 툴체인 (toolchain) : 타깃 장치를 위한 코드..

Embedded system/etc

[etc] GPL, LGPL, BSD (오픈 소스 라이센스)

● GPL (General Public License) 기본적으로 프로그램을 개발할 때, GPL 코드를 일부라도 사용하게 되면 해당 프로그램은 GPL이 된다. GPL을 가진 프로그램을 유료로 판매(배포)하는 것은 가능하지만 반드시 전체 소스 코드는 무료로 공개해야 한다. 예를 들어, GPL 코드를 수정하거나 일부 사용하여 프로그램을 개발하여 외부에 공개하거나 판매하고자 할 경우에는 반드시 GPL 규청에 따라 프로그램의 전체 소스 코드를 무료로 공개해야 한다. 전체 코드를 공개했다가다른 개발자가 이를 기반으로 좀 더 개선된 버전의 제품을 개발하여 판매할 수도 있다. 그렇다면 억울하겠지 .. ● LGPL (Lesser General Public License) LGPL은 GPL보다 훨씬 완화된 조건의 공개 ..

728x90
반응형
라닝
'Embedded system' 카테고리의 글 목록 (4 Page)