임베디드(411)
-
[수정 전] Makefile 작성하기 2019.11.16
-
LRU Cache의 자료구조
페이지 교체 알고리즘 중 하나로 가장 hit율이 좋다고 알려진 LRU는 Least Recently Used의 약자로 가장 늦게 쓰여진 페이지가 교체 대상이 되는 것이다 자료구조는 map을 원소로 하는 리스트 기반으로 이뤄져 있다 [참고] https://www.geeksforgeeks.org/lru-cache-implementation/
2019.11.16 -
signed 자료형에서의 비트 반전
signed char 값의 범위는 -128 ~ 127이다 비트 반전 ~ 연산자를 signed char에 씌우면 값은 어떻게 변하게 될까 0 ~ 127은 부호가 반전이 되면서 1이 더해진 값이 반전된 값으로 된다 -1 ~ -128도 부호가 반전이 되지만 1이 빼진 값이 반전된 값으로 된다 #include int main(void) { char num = 10; printf("not num = %d\n", ~num); return 0; }
2019.11.13 -
vim 여러 줄 주석하기
여러 특정 줄을 주석하는 주석하는 방법은 여러가지가 있다 1. esc모드에서 다음과 같이 설정할 수 있다 :s/^/\/\/ :s/^/# :시작행,끝행/^/# 2. [참고] https://www.youtube.com/watch?v=CRgbuVx59dY 1) ctrl + V로 주석을 하고 싶은 행을 정한다, 화살표 혹은 j, k로 움직인다 2) shift + I를 누르면 블록을 잡은 것을 맨 앞 행으로 움직인다 3) insert 모드로 진입할텐데 자신이 원하는 주석 문자를 쓴다. 예를 들어 //, # 4) 그리고 esc를 누르면 잡았던 블럭에 문자가 생긴다 반대로 주석을 지우는 방법은 1) ctrl + V로 주석을 지우고 싶은 행을 정한다, 화살표 혹은 j, k로 움직인다 2) 그리고 x를 눌러 삭제를 한다
2019.11.12 -
세그멘테이션 기법
페이징 기법과 대비되는 기법으로 동일한 사이즈로 페이지 블록을 만드는 페이징 기법과 달리 세그멘테이션 기법은 가상메모리를 서로 다른 크기의 논리적 단위인 세그먼트를 분할하는 것을 말한다 페이징 기법에서 초래되는 내부 단편화 문제는 해결할 수 있지만, 실제로 연속적인 물리 메모리 공간이 할당되지 않으면 해당 세그먼트는 물리 메모리 위에 올라가지 못하므로 반대로 외부 단편화를 초래하게 된다
2019.11.10 -
가상 메모리 동작 방식 정리
1. 가상 메모리는 왜 필요한가? - 폰 노이만 구조에서는 데이터와 명령어가 하나의 메모리로 묶여 있기 때문에, 메모리에 상주해야만 코드를 읽어오는 구조다 - 32비트 리눅스 기준으로 각 프로세스는 4G의 메모리를 할당받는다. 하지만 물리 메모리 크기 한계로 배치 시스템이 아니라면 2개 이상의 프로세스가 상주해야 하는데 불가능하다 2. 가상 메모리를 읽는 방법 - CPU가 MMU에게 현재 프로세스의 가상 주소를 부른다 - CR3 레지스터에 있는 페이지 테이블의 시작주소를 읽고 해당 프로세스의 페이지 테이블로 접근해 물리 주소를 읽어온다. 물리 주소에 접근해서 값을 가져온다 - 페이지 테이블 효율을 위해 약 2단계의 디렉토리로 나누어 페이지 테이블을 생성한다. 만일 4KB의 모든 페이지 테이블을 생성한다면..
2019.11.08