임베디드

임베디드

  • 분류 전체보기 (1142)
    • PL (150)
      • C++ (108)
      • Python (39)
      • Java (3)
      • Kotlin (0)
    • 알고리즘 (462)
      • 암기 (91)
      • 백준 (328)
      • 삼성 (17)
      • 종만북 (4)
      • 프로그래머스 (22)
    • 임베디드 (411)
      • 하드웨어지식 (12)
      • ATmega128 (98)
      • 32F429IDISCOVERY (57)
      • 임베디드리눅스 (15)
      • 리눅스커널스터디16기 (2)
      • 리눅스시스템프로그래밍 (97)
      • 운영체제 (26)
      • 컴퓨터구조 (4)
      • dd (1)
      • ubuntu (81)
      • opencv (18)
    • 드론 (99)
    • TIP (12)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

임베디드

컨텐츠 검색

태그

#linuxbirthday_a_message_from_Seoul_Korea !!

최근글

댓글

공지사항

아카이브

분류 전체보기(1142)

  • malloc/free와 new/delete 차이

    2019.11.12
  • 세그멘테이션 기법

    2019.11.10
  • 가상 메모리 동작 방식 정리

    2019.11.08
  • return 0와 exit(0)의 차이

    2019.11.08
  • cutoff 주파수가 -3dB인 이유

    2019.11.08
  • copy on write의 내부 동작

    2019.11.08
malloc/free와 new/delete 차이

malloc/free와 new/delete의 공통점은 heap 영역에 메모리를 할당하고 해제하는 함수다 기본적으로 태생을 살펴보면 malloc/free는 glibc 라이브러리 함수다 하지만 new/delete는 특정 헤더파일 안에서 동작하는 함수가 아니라 기본적으로 C++ 언어에서 제공되는 연산자다 둘의 가장 큰 차이점은 malloc/free는 클래스의 생성자/소멸자를 호출하지 못하지만, new/delete는 호출한다는 점이다 new/delete로 생성하면 생성자/소멸자가 모두 호출되는 점을 알 수 있다 #include #include using namespace std; class A { private: int num; public: A() { num = 3; cout

2019. 11. 12. 11:43
세그멘테이션 기법

페이징 기법과 대비되는 기법으로 동일한 사이즈로 페이지 블록을 만드는 페이징 기법과 달리 세그멘테이션 기법은 가상메모리를 서로 다른 크기의 논리적 단위인 세그먼트를 분할하는 것을 말한다 페이징 기법에서 초래되는 내부 단편화 문제는 해결할 수 있지만, 실제로 연속적인 물리 메모리 공간이 할당되지 않으면 해당 세그먼트는 물리 메모리 위에 올라가지 못하므로 반대로 외부 단편화를 초래하게 된다

2019. 11. 10. 11:52
가상 메모리 동작 방식 정리

1. 가상 메모리는 왜 필요한가? - 폰 노이만 구조에서는 데이터와 명령어가 하나의 메모리로 묶여 있기 때문에, 메모리에 상주해야만 코드를 읽어오는 구조다 - 32비트 리눅스 기준으로 각 프로세스는 4G의 메모리를 할당받는다. 하지만 물리 메모리 크기 한계로 배치 시스템이 아니라면 2개 이상의 프로세스가 상주해야 하는데 불가능하다 2. 가상 메모리를 읽는 방법 - CPU가 MMU에게 현재 프로세스의 가상 주소를 부른다 - CR3 레지스터에 있는 페이지 테이블의 시작주소를 읽고 해당 프로세스의 페이지 테이블로 접근해 물리 주소를 읽어온다. 물리 주소에 접근해서 값을 가져온다 - 페이지 테이블 효율을 위해 약 2단계의 디렉토리로 나누어 페이지 테이블을 생성한다. 만일 4KB의 모든 페이지 테이블을 생성한다면..

2019. 11. 8. 22:26
return 0와 exit(0)의 차이

컴파일러 동작을 살펴보면, 실제 main이 중심이긴 하지만 _start라는 커널 함수가 먼저 호출된다. _start 함수 내부를 살펴보면 _start() { main() exit() } 와 같이 구성되어 있어 마지막에 상태값이 들어간 exit를 호출하게 된다. 다만 main 안에서 exit를 바로 호출하면 프로세스가 바로 종료되기 때문에 _start 안에서의 main 아래 코드는 호출되지 않고 끝나버린다

2019. 11. 8. 21:02
cutoff 주파수가 -3dB인 이유

먼저 dB 단위는 좌표계를 log 스케일로 했을 때, 나오는 수치다. 보통 계산을 편하게 하기 위해 10 * log X 값으로 계산하는데 이때 값의 단위를 dB로 한다. log 좌표계의 장점은 큰 수를 간략하게 표현할 수 있다. 전력을 기준으로 할 때는 10*log(X), 전압 혹은 전류를 기준으로 할 때는 20*log(X) dB로 표현한다. 어떠한 기준값 1에 대해서 전력이 반으로 줄어들 때 dB 값이 -3dB이다. 계산은 10log(0.5)로 -3dB가 된다. 다르게 신호에 대해서는 1/sqrt(2)로 0.707로 계산이 된다 [참고] http://www.rfdh.com/bas_rf/begin/whydb.htm

2019. 11. 8. 16:33
copy on write의 내부 동작

리눅스에서 최근에 프로세스 생성 시 copy on write 기법을 도입해서 물리메모리를 효율적으로 관리하고 있다 1. 자식 프로세스를 생성할 때, 초기에 따로 페이지 테이블을 생성하지 않는다. 부모 프로세스의 페이지 테이블을 우선 사용한다 (포인터 참조의 개념으로 이해) 2. 부모 또는 자식 프로세스가 읽기가 아닌 쓰기를 진행할 때 페이지를 복사하고 분리하게 된다 프로세스 생성 시간과 생성되어야 하는 페이지 수도 줄어든다는 장점이 있다

2019. 11. 8. 02:27
1 2 3 4 5 6 7 8 ··· 191
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바