Guillermo Austin Kim

Sources

Posts

998 posts

[리눅스커널] 메모리관리: 가상 주소 변환 과정 전체 구조 파악하기

Guillermo Austin Kim|2019년 7월 14일

이번 절에서는 가상 주소를 물리 주소로 바꾸는 전반적인 흐름과 세부 개념에 대해 상세히 알아봅니다. 가상 주소를 물리 주소로 변환하는 과정은 리눅스 커널에서 CPU 아키텍처에 의존적입니다. 다음은 라즈베리파이에서 ‘/proc/cpuinfo’ 파일로 확인한 CPU정보입니다. [https://www.raspberrypi.org/forums/viewtopic.php?t=155181]pi@raspberrypi:~ $ less /proc/cpuinfo processor : 0model name : ARMv7 Processor rev 4 (v7l)BogoMIPS : 38.40Features : half thumb fastmult vfp edsp neon vfpv3 tls

[리눅스커널] 시스템 콜: 유저 공간에서 전달한 문자열 처리 방법

Guillermo Austin Kim|2019년 7월 12일

유저 공간에서 시스템 콜 아규먼트로 지정한 파일 이름은 커널 공간에 그대로 전달됩니다. 한 가지 예를 들어볼까요?[https://elixir.bootlin.com/linux/v4.19.30/source/fs/open.c]SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode){ if (force_o_largefile()) flags |= O_LARGEFILE; return do_sys_open(AT_FDCWD, filename, flags, mode);} 위 sys_open() 함수 첫 번째 아규먼트로 filename이 전달됩니다.이번에는 다른 예시를 들겠습니다.[https://elixir.bootlin.com/l

[리눅스커널] 스케줄링: CFS 스케줄러를 이루는 주요 개념 알아보기

Guillermo Austin Kim|2019년 7월 8일

CFS(Completely Fair Scheduler)는 2.6.23 커널 버전 이후 적용된 리눅스의 기본 스케줄러입니다. CFS이란 용어를 그대로 풀면 ‘완벽하게 공정한 스케줄러’라고 해석할 수 있습니다. 즉, 런큐에서 실행 대기 상태로 기다리는 프로세스를 공정하게 실행하도록 기회를 부여하는 스케줄러입니다. 이번 절에서는 CFS 알고리즘의 개념을 알아보고 코드 분석으로 세부 동작을 살펴보겠습니다. CFS 스케줄러를 이루는 주요 개념 알아보기CFS는 실행 대기 상태인 프로세스들을 우선 순위에 따라 최대한 공정하게 실행하는 스케줄러입니다. CFS 세부 동작과 알고리즘을 이해하려면 다음과 같은 개념을 파악할 필요가 있습니다. - 타임 슬라이스 - 우선순위 - 가상 실행 시간(vruntime) 이번

[IT] 좋은 IT회사를 입사하기 전에 대략적이라도 판단할 수 있는 방법

Guillermo Austin Kim|2019년 7월 4일

부서내 편차는 어느 탑 클래스 IT업체에서도 존재하며 화려한 스팩과 경력의 개발자도 '벌레처럼' 기어다닐 수도 있습니다.신입 개발자가 좋은 부서로 배치 받는 것은 '운에 좌우된다.'라고 말할 수 밖에는 없습니다. 또한 IT 업체마다 '개발 문화/개발 방식/평가 기준'이 다르기 때문에 '어느 업체는 어떻다.'라고 이야기하긴 어렵습니다.만약 어떤 분이 코드 작성 속도가 느리나 사이드 없이 제대로 과제를 마무리한다고 가정하겠습니다. 저 같으면 이런 분을 아주 높게 평가하고 과제를 끝낼 때 까지 기다려 줄 것입니다. 하지만 관점이 다른 분은 이런 부류의 개발자를 낮게 바라볼 수 있는 것입니다.또한 부서과 과제의 미션에 따라 달라질 수 있습니다. 이에 대한 평가는 제각각입니다. 하지만 그래도 어떤 IT업체가

[리눅스커널] 커널 소스 읽기가 제일 쉬었어요(1) - /proc/cpuinfo

Guillermo Austin Kim|2019년 7월 2일

/proc/cpuinfo/proc/cpuinfo 파일은 CPU 아키텍처 정보를 저장합니다. root:/proc $ cat cpuinfoProcessor : AArch64 Processor rev 0 (aarch64)processor : 0BogoMIPS : 38.40Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddpCPU implementer : 0x51CPU architecture: 8CPU variant : 0xdCPU part : 0x805CPU revision : 14 processo