profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .
post-thumbnail

리눅스데브코스 [11주차 - 1]<리눅스 메모리 관리 기술(2) 실습>

debugfs의 kernelpagetables 내용 확인 1. kernel source 다운 > linux-source-5.4.0으로 설치됨.. 2. kernel compile 및 설치 > 안됨... 3. reboot 4.kernel page table 확인 >

2023년 6월 12일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 4]<가상 메모리 관련 시스템콜 실습>

1: 주소공간 확인 > malloc()을 통해 heap 영역의 크기를 키워보기(1MB이상) 1. C 코드 1. malloc 없을 경우 1. 코드 2. cat /proc/[pid]/maps > #### 아래와 같이 heap 영역이 없는 것을 알 수 있다 2. malloc 있을 경우 1. 코드 2. cat /proc/[pid]/maps >- 아래와 같이 heap 영역이 생성된 것을 확인할 수 있다. heap 메모리 주소공간을 계산해보면 대략 1MB가 나오는 것을 확인할 수 있다.

2023년 6월 8일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 3]<리눅스 CFS 로드 밸런싱 실습>

1. rebalance_domains() > 2. load_balance() > cpu들을 상하관계가 존재하는 트리 구조로 생각하여 각 도메인들을 load balancing 하고 단계별로 밸런싱. -도메인을 나눠서 밸런싱한다면 전체 cpu에 대해서 모두 균등하게 밸런싱하는 것보다 연산 복잡도가 낮기 때문. 3. selecttaskrq_fair() > p

2023년 6월 7일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 3]<CFS 스케줄러 실습>

1. 커널 코딩 스타일 1. 공식 문서 >- www.kernel.org wiki.kldp.org 2. 정리 >- 8칸 탭을 사용한다. 한 줄에 80열을 넘지 않는다. statement는 해당 문이 시작하는 줄에서 중괄호를 연다. 이름 있는 함수는 다음 줄에서 시작한다. 한 문장으로 충분할 때 불필요하게 중괄호를 사용하지 않는다. 조건문의 한 블록이 여러 줄일 경우는 모든 조건에 중괄호를 사용한다. sizeof, typeof, alignof 및 \attribute를 제외하고 대부분의 경우 키워드 뒤에 공백을 사용한다. 포인터는 함수나 변수 이름에 인접하고 타입과 인접하지 않는다. 함수는 짧고 간결해야 하며 한

2023년 6월 7일
·
0개의 댓글
·

리눅스데브코스 [10주차 - 2]<리눅스 스케줄러 (FIFO, RR) 분석 및 활용 실습>

1. 오늘 수업 들으려는데 가상머신 오류 2. 가상머신 재생성 후 개발환경 다시 세팅.. 3. 디버깅 안됨 .. 어제까지는 잘 됐는데 .. @ 일단 문제 해결하려고 노력중

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 2]<리눅스 스케줄러 (FIFO, RR) 분석 및 활용>

1 스케줄링 정책 1. First in, First out >- starvation 문제가 있음 2. Round Robin >- simple, easy to implement, and starvation-free latencty 문제가 있음

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 2]<프로세스 상태 및 스케줄러 기본 구조 실습>

1. 오늘 수업 들으려는데 가상머신 오류 2. 가상머신 재생성 후 개발환경 다시 세팅.. 3. 디버깅 안됨 .. 어제까지는 잘 됐는데 .. @ 일단 문제 해결하려고 노력중 복구 완료 1. Kernel/exit.c: doexit() -> exitnotify() 1. 디버깅 > 2. Kernel/sched/core.c:

2023년 6월 6일
·
0개의 댓글
·

리눅스데브코스 [10주차 - 2]<프로세스 상태 및 스케줄러 기본 구조>

1. 리눅스 스레드 스위칭 1. 리눅스 스레드 스위칭이 발생하는 두가지 상황 >- 스레드 스위칭을 통해 환상을 만들도록 함 -> 각 프로세스는 혼자 CPU를 사용하고 있다고 착각 -> 실제로는 스케줄러가 스위칭 1. 자발적인 sleep 과 wait >- 시스템 콜 호출 프로세스는 디바이스 또는 파이프 I/O 대기 2. 선점 >- 일반적으로 타이머 인터럽트 또는 다른 인터럽트 2. 리눅스 스케줄러 디자인 철학 1. 리눅스는 유저와 커널 스레드를 선점하면서 진행 2. 선점 방법 >- 인터럽트(ex. 10ms 타이머 인터럽트) 대부분이 에너지 절약 때문에 tick-less 커널로 동작 3. 특정 유저 프로그램 CPU-hopping 방어 4. 반응성 >- 공정하게 진행 CFS(Complete Fair Schedular) 스케줄러의 철학 2. 커널 슬립 관련 이슈 >1. Lost wakeup Te

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 2]<멀티코어와 커널 동기화>

1. 성능을 향상시키기 위한 방법 1. 시스템을 측정해서 bottleneck 탐색, 해결 1. Bottleneck 해결 방안 >- Better Algorithms Cache data -> ex) page cache Concurrency(동시성) Parallesim (병렬화) 2. 멀티코어 >- 동시성과 병렬화 프로그램은 멀티코어를 이용해 parallel speed-up을 원함 리눅스 커널은 반드시 parallel system calls 처리가 가능해야 함 -> 락 x -> 커널은 데이터를 Parallel로 접근(ex. buffer cache) 3. 락 >- 특정 코드에 진입을 오직 하나의 CPU 만 허용 락은 공유 데이터를 처리하는데 도움을 줌 하지만 락은 Parallel speedup에 방해 요인 1. 락 또는 동기화 처리의 종류 1. Exclusive Lock >![](https://velog.velcdn

2023년 6월 6일
·
0개의 댓글
·

리눅스데브코스 [7주차-2]<시스템 V 메시지 큐 &세마포어& 공유 메모리 실습>

1. 코드 분석 1. tlpi-dist/svipc/svmsgdemoserver.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 2. tlpi-dist/svsem/svsem_demo.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 3. tlpi-dist/svshm/svshmxfr

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 1]<스케줄러 관련 시스템 콜 & 유저레벨 스케줄러 실습>

1. 코드 분석 1. tlpi-dist/procpri/sched_set.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 > 2. tlpi-dist/procpri/sched_view.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 >![](https://velog.velcdn.com/images/w

2023년 6월 5일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 1]<스케줄러 관련 시스템 콜 & 유저레벨 스케줄러>

1. 스케줄링 정책과 우선순위 수정 1. 스케줄링 정책 >- SCHED_FIFO -> Realtime first in first out -SCHED_RR -> Realtime round-robin SCHED_OTHER -> Standard round-robin time-sharing SCHED_BATCH -> Similar to SCHED_OTHER, but intended for batch execution SCHED_IDLE -> Similar to SCHED_OTHER, but with policy even lower than nice value +19 2. CPU 친화도(affinity) 1. CPU 친화도란? >- 스레드가 어떤 CPU에서 동작할지 결정해 주는것 친화도가 설정되면, 해당 CPU에서만 동작하게 된다 3. 유저레벨 스레드 >- 커널 스레드 스케줄러의 축소형 1. 스레드가 바뀌는 과정 > 1. 스케줄링 정책에 따

2023년 6월 5일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 1]<프로세스 관리 분석 환경 구축과 최초 프로세스>

1. 리눅스 커널 디버깅 1. qemu 를 이용한 커널 디버깅 >- vmware와 같은 가상 머신 리눅스 커널 디버깅 앞으로 리눅스 프로세스 분석은 qemu 이용 디바이스 드라이버 초반부 2. Buildroot 이용 >- 전체 시스템 빌드용 3. 스케줄러 디버깅 1. 커널 및 buildroot 빌드를 위한 패키지 설치 > 2. buildroot 다운로드 및 패치 적용 1. 다운로드 > ~ 2. 패치 적용 >- 커널 버전 5.15 로 수정 3. 빌드 설정 > 4. 커널 + rootfs 설정 > 5 .빌드 > 3. qemu 설치, arm 64용 gdb 설치 > 4. qemu 리눅스 실

2023년 6월 5일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [10주차 - 1]<리눅스 프로세스 관리와 스케줄러 트레이스 실습>

1. 스케줄러 트레이스: toy_system > 2. 스케줄러 트레이스: 크롬 + syscalls >

2023년 6월 5일
·
0개의 댓글
·

리눅스데브코스 [10주차 - 1]<리눅스 프로세스 관리와 스케줄러 트레이스>

1. 공부해볼 것 >- 토이 프로젝트에 스케줄러 정책 적용 스케줄러 트레이스 방법 습득 첫 프로세스 생성/ 실행 코드 이해 최초 시스템 콜 코드 이해 커널 디버깅 방법 습득 유저 레벨 스케줄러 이해 프로세스 스케줄링 멀티코어와 동기화 전력관리 관련 내용 2. 응용프로그램이 OS에 요구하는 사항 >- 하드웨어를 더 편리하게 제어 여러 응용 프로그램이 하드웨어를 동시에 사용 -> 다중화(프로세스 스케쥴링) 다른 응용 프로그램의 버그로 부터 보호 -> 격리를 통해 응용 프로그램간에 공유 가능 -> 메모리 공유, 디스크 공유, 각종 디바이스 공유 3. 프로세스 >- 격리로부터 시작 -> 메모리 격리 -> CPU 격리 스레드 + 주소 공간 마치 하나의 가상 머신 -> 실제 프로세스를 활용해 컨테이너를 생성 프로세스는 자신이 CPU 와 메모리를 소유하고 있다고 생각 서로 다른 프로세스에 영향을 주지 않음 1. 프로세스

2023년 6월 5일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [7주차 - 4]<컨테이너 관련 시스템 콜 실습>

1. 코드 분석 1. tlpi-dist/namespace/nschildexec.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 2. tlpi-dist/namespace/demoutsnamespaces.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석

2023년 6월 4일
·
0개의 댓글
·

리눅스데브코스 [7주차 - 4]<보안 관련 시스템 콜 실습>

1. 코드 분석 1. tlpi-dist/seccomp/dumpseccompfilter.c 1. 코드 2. 동작 모습 >- 응용 프로그램이 시스템 콜의 허락/거절 정책을 결정 내가 만든 프로그램 안에서 어떤 시스템 콜은 막고 다른 것은 허용하는 식으로 활용 가능 프로그래머가 자유롭게 권한을 제어할 수 있기 때문에 보안을 강화 STRIC_MODE -> read, write, exit, sigreturn 시스템 콜의 호출만 허용 -> 외의 시스템 콜은 SIGKILL 시그널 전송 FILTER_MODE -> 어플리케이션 기능에 맞춰 유연하게 시스템 콜 실행 허용 및 거부 3. 디버깅 및 분석

2023년 6월 4일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [7주차 - 3]<공유 라이브러리 실습>

1. 코드 분석 1. tlpi-dist/shlibs/dynload.c 1. 2. 동작 모습 > 3. 디버깅 및 분석

2023년 6월 4일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [7주차 - 3]<대체 I/O 모델(epoll) 실습>

1. 코드 분석 1. tlpi-dist/altio/epoll_input.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석

2023년 6월 4일
·
0개의 댓글
·
post-thumbnail

리눅스데브코스 [7주차 - 3]<파일 관련 시스템 콜 실습>

1. 코드 분석 1. tlpi-dist/files/t_stat.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 2. tlpi-dist/files/t_chown.c 1. 코드 2. 동작 모습 > 3. 디버깅 및 분석 3. tlpi-dist/dirslinks/listfiles.c 1. 코드 2. 동작 모습 >![](https://velog.velcdn.com/images/w10sim/post/90c30c1d-2adb-40dc-9bd7-5f1c9

2023년 6월 4일
·
0개의 댓글
·