[리눅스커널][스케줄링] 컨택스트 스위칭 관련 자료 구조 알아보기
By Guillermo Austin Kim | 2019년 3월 6일 |
컨택스트 스위칭 관련 자료 구조 알아보기이전 소절에서 컨택스트는 프로세스가 실행 중인 그 자체라고 소개했습니다. 프로세스 실행 그 자체는 레지스터 세트 표현할 수 있습니다. 어떤 프로세스가 CPU에서 실행하면 CPU 레지스터 세트에 프로세스가 실행 중인 코드와 함수 정보가 채워집니다. 컨택스트 스위칭으로 CPU 레지스터 세트를 어딘가에 저장할 것입니다. 그러면 CPU 레지스터 세트를 표현하는 자료구조는 무엇일까요? 다음 8 번째 줄 struct thread_info 구조체에서 cpu_context 필드입니다.[https://elixir.bootlin.com/linux/v4.14.70/source/arch/arm/include/asm/thread_info.h]1 struct thread_info {2un
Linux Desktop에 대한 고찰
By 지훈현서 | 2018년 12월 1일 |
현재 사용하고 있는 컴퓨터 운영체제를 꼽으라면Linux, Mac, Windows 로 대변된다고 해도 틀린 말은 아닐 겁니다.이런 구도가 상당히 오래 되어 왔지요.불과 리눅스가 세상에 알려지기 전, SUN-OS, HPUX, OS2 등등의*NIX 시스템을 비롯하여 MS-DOS 에서 비롯된 Windows 계열까지..거기에다 맥, NEXT, OS X 으로 이어지는 애플의 운영체제까지... 이런 다양한 운영체제가 실은 기능에 따라 역할이 많이 달라지는 것 같습니다.(개인적인 견해이니 딴지는 댓글로 부탁드립니다) Mac - 당연히 개발자 혹은 좀 튀고싶은 사용자 와 같은 이미지Windows - 당연히 아무런 생각없이 컴을 배우는 사람부터 대부분 사용하던 관습대로Linux - 주로 백엔드 서비스를 동작시키는 서버
[Linux][Kernel] data abort@cpuacct_charge - 리눅스 커널
By Guillermo Austin Kim | 2018년 1월 25일 |
CPU3에서 실행 중인 "Binder:15701_2" 프로세스가 데이터 어보트로 커널 크래시가 발생했습니다.커널 로그가 데이터 어보트 발생 시 어떤 동작을 했는지 레지스터 정보와 함께 알려주네요. [69350.929482] <26>Unable to handle kernel paging request at virtual address 11ad4e80[69350.929511] <26>pgd = d57f0000[69350.929527] <22>[11ad4e80] *pgd=00000000[69350.929548] <6>Internal error: Oops: 5 [#1] PREEMPT SMP ARM[69350.929563] <c2>Modules linked in:
[리눅스커널][SoftIRQ] Soft IRQ 서비스란
By Guillermo Austin Kim | 2019년 2월 23일 |
Soft IRQ를 설명하면서 낯선 용어를 설명했는데, 이제부터 그 의미를 하나하나씩 살펴 보겠습니다. Soft IRQ 서비스란 용어를 소개합니다. Soft IRQ 서비스를 빨리 이해하려면 코드를 먼저 봐야 합니다. Soft IRQ 서비스는 아래 enum으로 정의한 코드와 같습니다.[include/linux/interrupt.h]enum{ HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, BLOCK_SOFTIRQ, IRQ_POLL_SOFTIRQ, TASKLET_SOFTIRQ, SCHED_SOFTIRQ, HRTIMER_SOFTIRQ, RCU_SOFTIRQ, NR_SOFTIRQS}; const char * const softirq_to_name[