본문 바로가기 메뉴 바로가기

두찡의 일상

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

두찡의 일상

검색하기 폼
  • 분류 전체보기 (121)
    • 개발 (111)
      • 알고리즘 (6)
      • 일상 (50)
      • 병렬프로그래밍 (8)
      • 도트도전기 (12)
      • 코드로 알아보는 ARM 리눅스 커널 TIL (33)
      • arm64 linux 6 분석 (2)
    • 게임근황 (6)
    • 개발 외 일상 (2)
  • 방명록

전체 글 (121)
proc.S __cpu_setup

| mov_q | move an immediate constant into a 64-bit register |arch/arm64/mm/proc.Sisb : 인스트럭션 fetch 됐던걸, 이전 명령 실행 전까지 미룸msr SCTLR_EL1, x0 ; 시스템 제어 레지스터 변경// 파이프라인에는 다음 명령들이 이미 들어왔음!add x1, x1, #1 // 엔디안값이 SCTLR 에서 바뀌었다면?? (정확한 예시인지는 잘 모르겠음) 확인해보고 싶다->msr SCTLR_EL1, x0isbdsb nshdsb: data synchronization barrier: 모든 이전 명령이 끝날때까지 대기nsh: non-shareable: 현재 코어내에서만 동기화tlbi vmalle1가상 주소를 물리 주소로 바꾸기 위해 ..

개발/arm64 linux 6 분석 2025. 5. 10. 15:39
250503 head.S

| 명령어 | 설명 || adr | 현재 코드 위치 기준으로 label 주소를 저장 || adrp | 4kb page 만큼 포인터를 설정. 따라서 12비트만큼 0가 설정됨 || adr_l | adrp + add 로 오프셋을 더해 실제 주소 구함 || cbnz | 조건이 0이 아니라면 점프 || dmb | data memory barrier. 여러 옵션들이 존재함 || bl | 고정된 함수 주소로 점프 || blr | 레지스터 같은 동적 함수 주소로 점프 || mrs | Move from system register. || cmp | CPSR (Current Program Status Register) 레지스터에 비교된 값 설정 || tbnz | Test bit and Branch if Nonzero. |..

개발/arm64 linux 6 분석 2025. 5. 3. 15:34
250419 9.3 타이머 관리 [완]

9 시간과 타이머 관리9.3 타이머 관리9.3.1 타이머 개요과거 리눅스의 클래식 타이머는 HZ 단위 (1초에 n 번) 로 동작밀리초 단위로 동작하여 고해상도 처리를 하지 못해, 다른 기법들이 요구됨타이머의 용도타임 아웃: 지정된 시간안에 조건이나 이벤트가 발생하기를 기다림. (네트워크의 패킷을 대기)타이머: 지정된 시간 후에 일을 처리함타이머의 요구사항전력 사용 측면: 제한된 전격 용량을 사용하는 경우 에너지를 줄임.고해상도의 필요: 고해상도 타이머는 세밀한 단위로 시간(clock) 을 제공하는 디바이스가 시스템에 존재해야함. 나노초 단위로 관리타이머의 구성요소clock chip 을 CCF 등 추상화된 프레임 워크로 사용클록 이벤트 서브 시스템을 사용하여 주기적 or oneShot 을 처리9.3.2 저..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 4. 19. 17:21
250412 공통 클록 프레임워크 & 타임 서브시스템 (9.1~9.2)

9 시간과 타이머 관리리눅스의 시간은 변화를 인식하기 위한 수단으로 타임라인을 구성하는 기준이다.타이머란 이벤트를 처리할때 프로세스를 제어하거나 측정하는데 사용할 수 있는 특별한 종류의 시계다.시간과 타이머를 관리하기 위한 서비스시간 관리를 위한 타임 키핑클록의 사용 밀 동기화를 위한 관리시간의 표현타이머 이벤트의 인터럽트 스케줄링이런 서비스를 위해 중요 기반 자원인 클록을 사용해야 한다.이 구현이 하드웨어와 연관되어 있어, 추상화를 하기위한 노력이 많이 진행됨. 9장이서는 클록용 프레임워크와 일반 타임 서브 시스템, 타이머 활용을 알아보자.9.1 공통 클록 프레임워크 (CCF)SoC(system on chip) 마다 비슷하게 구현되던 API 를 해결하기 위해 커널 3.4 에서 CCF 가 추가되었다.9...

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 4. 12. 20:19
250405 인터럽트 지연처리 (8.4)

8 인터럽트8.4 인터럽트 지연처리8.4.1 top-half, bottom-half인터럽트 핸들러에서 인터럽트를 처리하는 동인 인터럽트는 비활성화 상태가 됨.이때 blocking 되어 데드락이 걸리거나 인터럽트를 놓칠 수 있고, sleep 하는 경우는 깨어나지 못할 수도 있음이런 문제를 방지하기 위해, 인터럽트 핸들러를 별도의 안전한 컨텍스트에서 실행함구분top-halfbottom-half실행 위치하드웨어 인터럽트 핸들러 내에서 수행하드웨어 인터럽트 핸들러 밖에서 수행실행 컨텍스트하드웨어 인터럽트 컨텍스트소프트웨어 인터럽트 컨텍스트 or 프로세서 컨텍스트인터럽트 활성화 여부인터럽트 비활성화 상태인터럽트 활성화 상태주요 작업다음 인터럽트 발생 가능하도록 최소한의 작업 수행처리시간이 길거나 블록 될 수 있는..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 4. 5. 16:45
펌프 expert 5, 500 등 달성

게임근황 2025. 3. 29. 16:21
250329 인터럽트 개념과 핸들러 등록 (8.1~8.3)

8 인터럽트8.1 인터럽트의 개념8.1.1인터럽트란?프로세서(cpu, gpu ..) 에 즉각적인 주의를 요청하기 위한 시그널하드웨어나 소프트웨어에서 생성8.1.2 인터럽트 컨트롤러여러 디바이스들이 보내는 인터럽트를 인터럽트 컨트롤러에서 멀티플렉싱(하나의 통신 채널을 통해 여러 개의 신호나 데이터 스트림을 동시에 전송하는 기술) 한다.인터럽트 컨트롤러의 역할멀티플렉싱 및 라우팅인터럽트 우선순위 지정인터럽트 마스킹인터럽트 컨트롤러를 여러개 사용하기도 한다. 종속 구조, 계층 구조를 사용.8.2 리눅스 인터럽트 서브 시스템리눅스는 인터럽트 컨트롤러와 신호를 추상화 하여, 아키텍처와 플랫폼에 상관없이 동일한 디바이스 드라이버로 인터럽트 처리가 가능하다.8.2.1 include/linux/irq.h irq_chi..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 3. 29. 16:18
250322 Secondary Booting (7.3)

7.3 Secondary Bootingboot cpu 로 커널을 초기화 한 후 non-boot cpu 를 초기화7.3.1 ARM: SMP 오퍼레이션bootcpu 가 smp cpu 를 init 후 boot_secondary 호출ARM 의 SMP 오퍼레이션cpu_kill, cpu_die, cpu_can_disable, cpu_disable7.3.2 AEM64: cpu 오퍼레이션ARM64 커널을 활용하는 플랫폼은 부팅을 위해 펌웨어나 다른 인터페이스가 필요한 경우가 생겨, SMP 오퍼레이션을 사용하지 않는다.기존 ARM 의 smp_operations 을 사용하지 않고 cpu_operations 구조체를 사용한다.ARM64 의 cpu operation 종류디바이스 트리에따라 결정됨. cpu_operations ..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 3. 22. 16:40
250317 SMP 를 위한 커널지원 & cpu topology(7.1~7.2)

7 smp 와 cpu topologySMP각각의 코어가 동일한 메모리 인터페이스를 공유하며, 동등한 액세스 권한을 얻는다.태스크들은 모든 코어에서 동시에 실행될 수 있다.고려사항cache coherencytask migrationexplicit parallelism: 유저가 병렬처리를 실제로 제어자원 동기화7.1 SMP 를 위한 커널 지원여러 cpu 를 상용하며 소비전력이 증가, 전력 관리의 필요성이 높아짐cpu 토폴로지IPC 인터페이스cpu hotplugcpufre/cpuidle : cpu 부하에 따라 성능과 전력 균형을 유지7.2 cpu 토폴로지토폴로지 : 물리적인 배치의 형태로 이루어진 구조를 설명하는 것.멀티코어 cpu 를 추상화하기 위해 구성한다.Hardware 구성클러스터코어쓰레드리눅스 커널에..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 3. 17. 23:16
250308 스케줄링 엔티티의 실행시간 관리하기 & 스케줄러 초기화 (6.3~6.4)

6.3 CFS(Completely Fair Scheduling)SCHED_NORMAL, SCHED_BATCH, SCHED_IDLE 정책을 사용하는 태스크를 처리하는 스케줄러6.3.5 스케줄링 엔티티의 실행시간 관리하기실제 실행시간 : exec_start, sum_exec_start가상 실행시간 : vruntime, min_vruntime6-38 kernel/sched/fair.c update_currcurrent task 의 sched_entity 와 run queue 의 런타임 정보 갱신static void update_curr(struct cfs_rq *cfs_rq){ struct sched_entity *curr = cfs_rq->curr; curr->exec_start = now; //..

개발/코드로 알아보는 ARM 리눅스 커널 TIL 2025. 3. 8. 19:27
이전 1 2 3 4 ··· 13 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
  • 링크드인
  • 깃허브
TAG
  • 봄날에 스케치
  • chrome-extension
  • 클래스 맴버 변수 출력하기
  • Reciprocal n-body Collision Avoidance
  • shared_from_this
  • vrpit
  • set value
  • vr핏
  • 잘못된 빨간줄
  • it's called a vrpit
  • 면접
  • 카카오
  • Visual Studio
  • C++
  • red underline
  • mysql
  • Obstacle Avoidance
  • boost
  • hole-punching
  • Golang
  • cockroach db
  • ad skip
  • print shared_ptr class member variable
  • 코어 남기기
  • Quest2
  • 영상 픽셀화 하기
  • SuffixArray
  • RVO
  • 에러 위치 찾기
  • 우리는 vr핏이라고 부릅니다
more
«   2025/05   »
일 월 화 수 목 금 토
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
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바