묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
시즌 2, 3 는 언제 수강할 수 있을까요?
안녕하세요.너무 좋은 강의 재밌게 잘 들었습니다.시즌 1으로만 끝나면 너무 아쉬울것 같습니다.혹시 시즌 2, 3 를 계획하고 계시다면 언제쯤 수강할 수 있을까요?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
전체적인 맥락에 대해서 질문이 있습니다.
안녕하세요. 1강, 2강, 3강 모두 잘 들었습니다. 문득 3강을 듣다가 궁금한 점이 생겨서 이렇게 질문 드립니다.만약 EL2, EL3에서 동작할 Software Entity를 구현하지 않은 시스템에서 hvc, smc와 같은 명령어를 실행시키면 어떻게 되는지 궁금합니다. EL2, EL3를 구현하지 않았다면 VBAR_EL2, 3 레지스터를 초기화하지 않았을 것 이므로, Exception 발생 시 PC가 이상한 주소를 가리켜 MMU가 Fault를 유발할 것 같다고 생각하고 있는데, 해당 흐름이 맞는지 궁금합니다. 만약 틀렸다면 올바른 흐름은 어떻게 되나요?SMP와 같은 멀티 코어 프로세서에서 모든 코어에서 실행중인 User App이 각각 Exception을 발생시키면, 모든 코어에서 동시에 Kernel Code가 동작하게 되는 것 인가요?Kernel, Hypervisor, Secure Monitor는 결국, Exception이 발생하고 이에 대해 HW가 대응되는 동작(SPSR_ELn, ELR_ELn, PSTATE, PC 값 수정)을 수행한 뒤에 Exception Handler의 서브루틴이 실행되는 단순한 소프트웨어 덩어리로 이해해도 괜찮을까요? 즉, User App과 같은 경우는 Linux에서 task_struct라는 구조체로 관리가 되는데 반해, Kernel, Hypervisor, Secure Monitor와 같은 소프트웨어들은 이러한 구조체로 관리되지 않을 것 같아서 문득 궁금해졌습니다.답변 주시면 감사하겠습니다!
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
reordering
안녕하세요, 4-2 강의 5분쯤되는 예시에서 질문이 있습니다. 명령어 셋들이 연관성이 있을 수도 있지 않나요? 포인터라면 memory 가 겹칠 수 도 있으니 사실 같은 주소를 그리킬 수도 있을 것 같아서요, (예, R1 이 R3+8 과 연관이 있다든지)그렇게 되면 어떤 주소가 들어올 지 모르니 Out of Order Execution 알고리즘이 보수적으로 진행되는 것이 맞을 것 같은데, Arm core 알고리즘 상에서는 레지스터 이름이 다르면 dependency 가 없는 것으로 파악하게 되나요?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
멀티 스레드 스택공간
안녕하세요,멀티 스레드 환경시 하나의 스택 공간을 사용하게 된다고 배웠는데요, arm 아키텍쳐 상에서 스레드 별로 스택을 공유하게 되는 것은 따로 지원이 되지 않는 것 같은데, 운영체제 상에서 전부 구현하게 되나요? 아니면 다른 방법이 있을까요(, arm 을 이용해서)?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
ARM multi core programming
software 개발 관점에서 보았을 때 arm 에서 제공하는 명령어 들을 잘 구성해서(sharability 와 함께)여러 동시성 모델을 구현한 것인가요? 저 명령어 들이 캐시간의 정보 동기화 메커니즘multi core bus 점유 같은 문제들을 다 처리해 주나요?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
리눅스 memory map
https://developer.arm.com/documentation/100166/0001/Programmers-Model/Processor-memory-modelhttps://m.blog.naver.com/sheld2/222021173697 Arm document 랑 St microelectronics 에서 구현한 m4 chip 인데 메모리가 묘하게 다른 것 같아요어디까지 구현했느냐의 차이인가요? 이러면 프로그램 실행에 문제가 없나요?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
SoC
SoC 설계 메모리 맵과 arm 에서 말하는 메모리 맵, 그리고 process 가 보는 virtual memory map 이 다 다른데요, os 단에서 그러면 SoC 메모리 매핑 영역(memory mapped i/o) 을 모아서 운영체제에 알려주면 운영체제가 알아서 table 에 기록하게 되는 것인가요? 또 arm architecture 가 바라보는 memory map 으로 리눅스 커널의 로더 단에서 virtual memory 공간을 바꾸어주게 되는 것인가요? 역할이 다소 헷갈립니다
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
하이퍼바이져 스택
안녕하세요, 하이퍼바이져 단으로 컨트롤이 넘어 오면 프로세스 스택을 쓰게 되는지 궁금합니다. (커널에서 그렇게 하는 것 처럼)아예 새로 만들게 되나요?
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
하이퍼바이져
하이퍼바이져 단의 페이지테이블은 mapping 을 다시한다. 즉, os 단에서 할당해준다고 한 physical memory 는 hypervisor level 에서 보면 가상메모리가 된다.라고 이해하면 되나요? 속도가 많이 느려질 것 같긴 하네요..
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
device memory
안녕하세요, device memory region 은가상화가 되었다고 했을 때 translation 이 어떻게 일어나나요? 혹시 그냥 바로 물리 메모리로 링크 되나요? (os 단에서)
-
미해결Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
mmu table 위치
안녕하세요mmu 가 page walk 를 한다고 나와 있는데요,mmu 가 multi level page 인 경우 page walk 를 알아서 찾아 가게 설계 되어 있는 건가요?(hardware 단에서 처리?) 어디까지 하드웨어 상에서 "알아서" 처리해서 가져가는지 잘 모르겠습니다..
-
미해결Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
mmu page walk
안녕하세요, mmu 가 page walk 할 때 다음 레벨 페이지 주소가 가상주소인가요, 실제주소인가요? 가상주소라면 mmu 를 또 거치게 될 것 같은데, page walk 에서 page fault 가 너무 많이 일어날 수 있을 것 같아요.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
exception handler 주소
안녕하세요, exception handler 에서 vectors: 라고 붙어있는태그의 주소는 가상주소인가요? 0xFFFF .. 로 시작하는 것으로 보아 가상주소 같은데, 그런데 만약 page fault 가 나게 되면 exception handler 를 실행하는데 시간이 추가로 더 걸려서 좋지 않을 수도 있지 않나요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
3.2.2.4 모드 복귀 부분
IRQ 모드에서 슈퍼바이저 모드로 복귀할 때의 SPSR_irq.M에 왜 다시 0x13을 넣어주는지 잘 모르겠습니다. 이미 해당 레지스터는 0x13으로 지정되어 있는데 SPSR_irq가 아니라 SPSR_svc.M에 CPSR.M을 넣고 오히려 CPSR.M을 0x13으로 변경해야하는 것이 아닌가요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
Armv8의 Exception Level에서 질문이 있습니다.
svc, hvc, smc와 같은 어셈블리 명령어를 수행하면, 내부적으로 exception이 발생하고 el이 변경된다고 말씀해주셨는데, 여기서 el이 변경된다는 건 하드웨어적으로는 단순히 PSTATE의 EL 비트 필드의 값이 갱신되는 것으로 이해해도 될까요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
5.4.3 실습에서 궁금한점이 있습니다.
해당 실습을 진행하던 도중 궁금한점이 있어 이렇게 글 남기게 되었습니다! data abort exception이 발생해서 vector_dabt라는 주소로 분기하게 된 상태에서는 SPSR_abt 레지스터에 이전 동작 모드인 user_mode bit encoding값이 설정이 되어있는 걸 볼 수 있었습니다. 그런데, Data abort를 처리하기 위해 supervisor mode로 진입하는 과정에서 movs pc, lr 명령어를 실행하면 supervisor mode로 진입은 하지만, SPSR_svc 레지스터에는 이전 동작 모드가 로드되지 않은 걸 볼 수 있었는데, 그렇다면 exception이 유발이 되어야만 SPSR_<mode>의 값이 갱신되는 것 인지 단순히 movs, subs와 같은 동작 모드를 변경하는 명령어로는 SPSR이 갱신되지 않는 것 인지 궁금합니다.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
virtualization 예시
안녕하세요, virtualization hypervisor 도 보통 context switching 기능을 탑재하고 있나요? 자동차 쪽에서 많이 사용된다고 하는데, 어떻게 전환이 되는지 잘 연상이 안 되네요 계기판, 네비게이션 예시를 드셨는데, 계기판 같은 경우 RTOS 구현이 되게 되면 Virtualization context switching 기능이 있으면위험성이 있을 것 같습니다. 또 계기판 기능을 돌다가 네비게이션이 작동하면 계기판이 안돌아서 위험할 것 같은데요..
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
exception handler
exception handler 는 어느 공간에서 실행될까?를 듣고 hypervisor, trusted zone 을 듣고 나니일단 process 가 EL0 에서 실행되고 있었을 때 에는 프로세스 공간에서 스택에 쌓아 나간다는 사실(이게 프로세스 스택인가요, 커널 스택인가요?)을 알았는데요, 이 때 과연 hypervisor , trusted zone 의 level EL2, EL3 에서는 어떻게 처리가 되는지? 궁금해졌습니다.EL0 -> EL1 의 흐름에서는 유저 프로세스 스택에서 다 담을 수 있다고 해도, EL1 이나 EL2, EL3 가 관여하게 되면 프로세스라는 개념이 사실 커널(EL1) 단에서 에러 처리한다는 개념하고는 조금 달라져야 할 것 같아서요,
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
WFE, WFI, HVC
3가지 EL2 로 가는 instruction 이 있다고 했는데요,이 세 가지는 굳이 왜 나누었고,(찾아보니 이 질문은 동 강의 "트랩 명령어 질문" 에 나와 있네요)또 WFE, WFI 에 저전력 기능이 왜 같이 포함되어 있는지 궁금합니다.추가로 저전력모드가 hypervisor 모드 관련해서만 있는 것 같은데 하드웨어적으로 무슨 연관이 있는 건지.. 궁금합니다감사합니다.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
virtualization
안녕하세요, 가상화에 대해서 질문이 있습니다. 가상화를 하드웨어 단에서 지원을 해준다는 것은, 여러가지 지원을 해준 다는 의미인 것 같습니다. hypervisor 에서 os 를 바꿀 때 각 os 별로 메모리 공간을 관리해주어야 하는 데, 각 os 는 다른 os 의 존재를 모를 테니 마치 context switching 하는 것 처럼 모든 os 의 정보를 백업하고 스위칭 해야 할 것 같은데요.. 이것을 hypervisor 에서 구현하고 있는지 궁금합니다.