컴파일러

프로그램을 만드는 프로그램사람의 언어를 CPU의 언어(기계어)로 번역프로그램을 만든다.기계어 코딩 -> 어셈블리어 -> 기타 언어(컴파일러) -> C언어CPU : 00 더해라 , 01 빼라 , 10 불러와라너무 불편하다어셈블리어가 나타남01 ADD 덧셈02 SUB 뺄셈

2023년 10월 4일
·
0개의 댓글
·

DFS 예외처리

문제 ) 첫째 줄에는 어떤 지역을 나타내는 2차원 배열의 행과 열의 개수를 나타내는 수 N이 입력된다. N은 2 이상 100 이하의 정수이다. 둘째 줄부터 N개의 각 줄에는 2차원 배열의 첫 번째 행부터 N번째 행까지 순서대로 한 행씩 높이 정보가 입력된다. 각 줄에는

2023년 9월 13일
·
0개의 댓글
·

BFS 2가지 방향

무조건 가기 갔던 곳은 안가기

2023년 9월 12일
·
0개의 댓글
·
post-thumbnail

인접 리스트

연결 리스트를 여러개0 {1,2,3}1 {0}2 {0,1}3 {0}===> adj라는 변수를 사용하게 될 예정정점마다 adj가 있다.1000번짜리 정점정점 10개visited : 방문연결하려는 정점이 있고 방문하지 않았다면 go함수 작동연결되는 정점이 방문되었다면 컨티

2023년 9월 7일
·
0개의 댓글
·
post-thumbnail

인접행렬

연결되어있다.무방향 간선 = 양방향 간선인접행렬이란 그래프에서 정점과 간선간의 관계를 나타내는 bool타입의 정사각형 행렬정사각형 행렬의 각 요소가 0 또는 1이라는 값으로 가짐을 의미 ,0은 두 정점 사이의 경로가 없음을 의미하며 1은 두 정점 사이의 경로가 있음을

2023년 9월 7일
·
0개의 댓글
·
post-thumbnail

이진트리 , 이진탐색트리

각각의 노드의 자식노드 수가 2개 이하로 구성되어있는 트리완전이진트리 : 포화 이진 트리가 되기 직전균형이진트리 : 모든 노드의 왼쪽 하위트리와 오른쪽 하위트리의 차이가 1이하인 트리=> 높이차이가 2개 이상이면 안됨오른쪽 하위 트리에는 '노드의 값보다 큰 값'을 가진

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

트리

자식 노드와 부모 노드로 이루어진 계층적인 구조를 가지며 무방향 그래프의 일종이자 사이클이 없는 자료구조리프 노드 : 가장 끝에 있는 노드(자식 노드가 없음)루트 노드 : 가장 첫 번째 노드내부 노드 : 루트 노드와 리프 노드 사이에 있는 노드위 : 부모아래 : 자식계

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

Boot-time ftrace 부팅 과정 분석

디바이스 드라이버나 커널 드라이버가 초기화되는 레벨 빌트인 타입으로 등록된 모든 디바이스 드라이버가 초기화됨빌트인 타입 : 작성한 디바이스 드라이버가 커널 이미지에 포함이 되어서 커널의 기능이 하나로 부팅이 됨모듈 타입 : insmod 명령을 사용해서 디바이스 드라이

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

Boot-time ftrace tracer 로그 분석

initcall:\* printk:console디바이스 드라이버가 가장 먼저 초기화 될 때 호출되는 함수.타임스탬프를 확인하여 함수의 실행시간을 체크할 수 있다.구현부 아래에 late_initcall로 지정된 매크로가 확인 가능하다.리눅스 커널이 부팅하는 과정에서 특

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

Boot time ftrace tracer

커널 소스를 수정할 필요가 없음boot-time ftrace tracing이 필요한 이유부팅 시간 이슈 대응부팅 초반 tracing을 위해서 (0.0002 초부터 트레이싱 가능) 부팅 시간이 느려짐 아예 부팅을 못함 (모든 event를 활성화) 자주 트레이싱되는 이벤트

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

From cpu to os

작은시스템인 경우 persistent한 스토리지가 없는 경우가 많다.ex) IoT디바이스 , 센서처음에는 Boot Flash에 모두 저장이 되어있다.파워 => 부트 플래시NOR은 반도체 셀이 병렬로 배열, 소스라인이 DRAM처럼 주소 하나마다 Random accessN

2023년 8월 27일
·
0개의 댓글
·
post-thumbnail

디바이스트리

임베디드 개발자는 하드웨어를 변경해야할 때가 많이 생긴다.커널이 어떤 하드웨어가 있는지 알아야 초기화 하고 사용한다.하드웨어 자원의 명세를 어떻게 알까?flash가 SD카드였다가 eMMC였다가커널에 하드코딩을 한다. => 하드웨어가 바뀌면 소스코드가 바뀌고 다시 빌드하

2023년 8월 27일
·
0개의 댓글
·
post-thumbnail

Ext4, FAT, NFS

속성 + 디스크블럭 위치위치 : Direct + Indirecttree 구조로 나타낼 수 있다.inode는 imbalanced tree.대부분의 파일은 작다 // 작은파일을 효과적으로 지원해야함큰 파일이 스토리지의 대부분을 차지한다. // 큰 파일도 지원해야함 ==>

2023년 8월 26일
·
0개의 댓글
·
post-thumbnail

UFS,FFS

모든 것이 파일아이노드 + Direct , Indirect 포인터디스크 블럭의 위치정보를 포함한 uid ,gid ,time 등등 여러가지 정보를 아이노드에서 찾을 수 있다.디렉토리는 파일명과 inumber의 쌍으로 이루어져 있다.리눅스(미닉스)의 첫 번째 파일 시스템

2023년 8월 26일
·
0개의 댓글
·
post-thumbnail

자료구조

task_struct가 가장 중요한 자료구조.task_struct는 fork가 될 때 마다 하나씩 만들어진다.pid mm => 메모리 => vmarea => text segmentpgd => 페이지테이블 => 페이지프레임files => fd => 파일 테이블 => in

2023년 8월 25일
·
0개의 댓글
·
post-thumbnail

for_each_process_task

offset :0x10스크립트의 동작방식은 이전 게시글과 유사하다.

2023년 8월 23일
·
0개의 댓글
·
post-thumbnail

CMM

해당 cmm 파일을 분석라즈베리파이에 설치된 모듈 드라이버를 출력해주는 동작이 커널로그가 어느 함수에서 호출이 되는것인가?다음 함수에서 출력이 된다.modules라는 변수가 있다. 링크드리스트 자료구조가 보인다.list 확인오프셋 : 0x8이 주소에서 8만큼 빼주면 s

2023년 8월 23일
·
0개의 댓글
·

커널 드라이버 분석법

소스 그 자체 보다는 소스의 변화를 분석하자 전처리 파일을 활용하자 디버깅 툴과 함께 소스를 분석하자 ftrace message를 자주 활용하자 상용 드라이버 코드를 분석하자: e.g: Qualcomm kernel BSP code embetronicx.com/

2023년 8월 22일
·
0개의 댓글
·
post-thumbnail

Trace32

y : sYmbol 메모리 데이터 덤프elf파일 로딩 , d.load키워드를 잘 설정해야함소스 위치를 파악할 수 있음주소가 출력됨 (주소를 모를 때)(void (\*)()) &schedule = 0xFFFFFFD174D4FDF0 = schedule ->시작주소 확인d.

2023년 8월 17일
·
1개의 댓글
·
post-thumbnail

Crash Utility

log -m : 커널 로그 출력runq-m : 런큐에서 실행중인 현재 프로세스 목록 / 태스크 디스크립터 확인 가능==> bash에서 크래쉬 발생CPU 2: 0 00:00:00.000 PID: 1591 TASK: ffffff805d66dac0 COMMAND: "

2023년 8월 8일
·
0개의 댓글
·