LINUX

포스트: 487|아이템:LINUX(477)
Tags

Posts

487 posts

[리눅스커널][스케줄링] 컨택스트 스위칭 관련 자료 구조 알아보기

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

[리눅스커널][인터럽트후반부] IRQ 스레드 핸들러 실행 시각 측정하기

Guillermo Austin Kim|2019년 2월 28일

IRQ 스레드 핸들러 실행 시각 측정하기 이전 절에서는 ftrace 로 콜스택과 함께 인터럽트가 언제 발생하고 언제 IRQ Thread를 깨우는지 알아봤습니다. 이번에는 실제 인터럽트 핸들러와 IRQ Thread 핸들러 함수 실행 시간을 측정하는 방법을 소개합니다. 각 함수의 실행 시간을 측정하고 실행 시간이 오래 걸리면 인터럽트 핸들러 함수 코드를 점검할 필요가 있습니다. 나중에 여러분이 인터럽트 핸들러를 작성한 후 이 방법을 써서 실행 시간을 측정해 보시길 바랍니다. ftrace에서 지원하는 function_graph 트레이서를 쓸려면 다음 config가 설정돼 있어야 합니다.CONFIG_DYNAMIC_FTRACE=yCONFIG_DYNAMIC_FTRACE_WITH_REGS=yCONFIG_FUNCTI

[리눅스커널][인터럽트후반부] IRQ 스레드 생성 실습하기

Guillermo Austin Kim|2019년 2월 27일

IRQ 스레드 생성 실습하기 이번에는 IRQ 스레드를 직접 생성하는 실습을 하겠습니다. 직접 손으로 코드를 작성하고 로그로 동작을 확인하면 배운 내용을 더 오랫동안 기억할 수 있습니다. 다른 리눅스 시스템보다 라즈베리파이는 IRQ 스레드 개수가 많지 않습니다. 아래와 같이 “ps –ely” 을 입력하면 92번 mmc1 인터럽트를 처리하는 IRQ 스레드가 1개만 보입니다.root@raspberrypi:/home/pi/dev_raspberrian# ps -elyS UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMDS 0 1 0 0 80 0 6012 6750 SyS_ep ? 00:00:02 s

[Photon OS] linux용 MSSQL 서버 기동시켜 동작시키기

지훈현서|2019년 2월 25일

십년인가 십몇년 전인가에 MSSQL의 TransactSQL 을 이용하여 수백 줄 이상의프로그램을 한 적이 있었습니다만, 시간이 지나 이제는 다 까먹었습니다. 최근에 필요에 따라 가능하면 MSSql 서버를 구축하고 이를 테스트 하는 환경을 구축하려고하는데 윈도우 서버를 설치해야 하나? 하고 조금 살펴보았더니, MS가 그동안 일을 많이 하여 mssql server를 리눅스용으로 만들어 놓았군요.얼씨구나 하고 돌려 보았습니다. 우선 docker-compose.yaml 파일에 다음과 같은 내용을 넣습니다. version: "3"services: db: image: "mcr.microsoft.com/mssql/server" volumes: - ${PWD}/dhv/mssql:/var/op