[리눅스커널][스케줄링] 컨택스트 스위칭이란 무엇인가
By Guillermo Austin Kim | 2019년 3월 3일 |
컨택스트 스위칭이란 무엇인가컨택스트 스위칭 세부 동작을 알기 위해서 context_switch() 함수를 분석할 필요가 있습니다. context_switch() 함수를 분석하기 전 컨택스트 스위칭의 개념을 소개하겠습니다. 먼저 컨택스트 스위칭이란 용어에 대해서 살펴봅시다. 컨택스트 스위치란 용어는 컨택스트 + 스위치란 단어의 합성어입니다. 컨택스트를 바꾼다는 의미입니다. 여기서 컨택스란 용어는 무슨 뜻일까요? 컨택스트는 프로세스가 실행 중인 그 자체를 의미합니다. 이 표현은 추상적이라 이해하기 어렵습니다. 프로세스 실행 그 자체를 어떻게 표현할까요? 그것은 레지스터 세트입니다. CPU 레지스터 세트가 프로세스 실행 자체를 표현하기 때문입니다. 다음 테이블을 보면서 컨택스트 스위칭에 대한 개념을 알아봅시
[RISC-V] 익셉션 벡터 핸들러 코드 산책 - 리눅스 커널
By Guillermo Austin Kim | 2020년 9월 27일 |
이번 시간에는 RISC-V 기반 리눅스 커널에 구현된 익셉션 벡터 테이블과 익셉션 벡터 핸들러를 분석하겠습니다. 익셉션 벡터 핸들러를 호출하는 코드 확인하기 다음은 익셉션 벡터 핸들러의 구현부입니다. RISCV_PTR do_trap_insn_misaligned RISCV_PTR do_trap_insn_fault RISCV_PTR do_trap_insn_illegal RISCV_PTR do_trap_break RISCV_PTR do_trap_load_misaligned RISCV_PTR do_trap_load_fault RISCV_PTR do_trap_store_misaligned RISCV_PTR do_trap_store_fault RISCV_PTR do_trap_ecall_u /* system cal
[리눅스커널][스케줄링] 유저 프로세스 실행 중 인터럽트 발생으로 선점 스케줄링
By Guillermo Austin Kim | 2019년 2월 9일 |
선점 스케줄링 실행 진입점 중 하나가 인터럽트를 핸들링 후 입니다. 이번 소절에서 유저 프로세스가 실행하던 도중 인터럽트가 발생했을 때 어떤 방식으로 선점 스케줄링(Preemption)이 시작하는지 살펴보겠습니다. 다음 블록 다이어그램을 같이 봅시다. 위 블록 다이어그램은 유저 레벨 프로세스가 실행 도중 선점 스케줄링되는 흐름도입니다.유저 레벨 프로세스 실행 도중 선점 스케줄링은 다음 과정으로 실행합니다. 1. 인터럽트가 발생해서 __irq_usr란 인터럽트 벡터 실행 2. 인터럽트 핸들러 실행으로 인터럽트 핸들링 마무리 3. __irq_usr 레이블에서 ret_to_user_from_irq 레이블 실행 4. 프로세스 struct thread_info 구조체 flags 필드를 점검해서 _TI
[리눅스] 도움말 : man [섹션번호] 명령어 또는 파일명
By 별일없는 범고래님의 이글루입니다 | 2018년 1월 15일 |
섹션번호 분류 기준 1 사용자 명령어 2 시스템 콜 함수 3 라이브러리 함수 4 특수 파일, 즉 장치 파일 5 시스템 정보가 포함되어 있는 파일의 형식 6 게임 7 기타 프로그램 8 시스템 관리 명령어 9 커널 관리 명령 프로그램 개발자들이 각종 함수에 대한 도움말이 필요하다면, 2, 3번섹션 번호를 사용.관리자로서 관리 명령이나 설정 파일에 대한 도움말이 필요하다면, 5, 8번을사용할 수 있다. man 화면에서 다음 화면으로 이동하려면, space, 종료하려면 q를 누른다. 섹션 번호의 사용