일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 마운트
- bWAPP M1
- push-gateway
- 리눅스
- bWAPP install
- AWS Resolver
- S3 PrivateLink
- s3
- DXGW
- DNS Resolver
- sessionManager
- S3 private통신
- ec2
- S3 Interface Endpoint
- VGW
- Route53 Resolver
- ix is lock
- node pod 분리
- s3 sync
- BastianHost
- S3 Gateway Endpoint
- 푸시게이트웨이
- CrossSiteScript
- Terraform
- SessionManager 터널링
- Route53 Endpoint
- 도커
- x lock s lock
- bWAPP arm
- 다이렉트 커넥트
- Today
- Total
목록리눅스 (22)
이것이 점프 투 공작소
간단한 커널 코드를 만들어서 빌드 후에 insmod로 커널에 적재하려고 합니다. 원래 도커 우분투 컨테이너를 사용해서 진행하려했는데 우분투 컨테이너에 맞는 커널 헤더를 못찾아서 결국 vm을 받아서 진행하였습니다.. 1. 커널 헤더 다운받기 apt search linux-headers | grep $(uname -r) 을 통해 우분투에 맞는 커널 헤더를 다운받습니다. 설치된 커널 헤더는 ls -l /lib/modules 명령어로 확인 가능합니다. 2. 커널 코드 작성 간단한 문자열을 출력하는 hello.c 파일을 작성하였습니다. module_init 에는 모듈이 시작될때 실행할 코드를, module_exit에서는 모듈이 종료될떄 동작하는 코드를 작성해주시면됩니다. 3. Makefile 소스파일을 실행파일로..
시스템 호출이란? 시스템 호출(SysCall)은 하드웨어와 사용자 공간 프로세스안에 존재하는 레이어(Layer)이고 장치파일이나 /proc 파일시스템을 호출할때도 시스템 호출을 통하게됩니다. 다음은 시스템 호출의 대표적인 역할입니다. 사용자 공간에 하드웨어 인터페이스를 추상화된 형태로 제공합니다. 시스템 보안 및 안정성을 제공합니다. 사용자공간과 시스템 사이 공간을 둠으로써 프로세스별 가상 시스템 환경을 제공 할 수 있습니다. 시스템 호출 번호 리눅스의 모든 시스콜은 고유의 번호를 가집니다. 사용자 공간 프로세스가 시스콜을 실행하고자 할때 시스콜 번호를 통해 실행할 시스템 호출을 찾아냅니다. 커널에 등록된 모든 시스템 호출 목록은 sys_call_table이라는 테이블에 저장합니다. 어쩌다 시스컬이 제거..
선점이란? 스케줄러에서 실행중인 프로세스의 상태를 모니터링하다 더 높은 우선순위의 프로세스가 실행되어야 할 때 현재 실행중인 프로세스를 중단시키는 행위를 말합니다. 운영체제에서 선점은 성능을 향상시키는데 큰 역할을 합니다. 선점이 동작하는 시점 선점되기 위해서는 기본적으로 스케줄러가 호출되어야 하기에 스케줄러가 호출되는 시점과 유사하며 따라서 스케줄러에 현재 실행중인 프로세스보다 높은 우선순위에 스케줄러가 없다면 선점이 일어나지 않습니다. 1. 인터럽트 발생 시 인터럽트가 발생하면 인터럽트 핸들러가 스케줄러를 호출하여 선점이 일어날 수 있습니다. 2. 시스템 콜 발생 시 시스템 콜이 호출되어 커널모드로 전환 될 때 다른 프로세스가 실행 될 수 있도록 스케줄러가 호출됩니다. 3. 타이머 인터럽트 발생 시 ..
문맥교환(context-switching)이란? 문맥교환은 커널이 프로세스간 스위칭 할 때, 현재 실행 중인 프로세스의 상태를 저장하고, 다음 실행할 프로세스의 상태를 불러오는 과정입니다, 이를 통해 커널에서 여러 프로세스가 동시에 실행(멀티테스킹)하는 것 처럼 보여집니다. 문맥 교환은 멀티테스킹, 인터럽트 , 커널사용자모드 전환 시 발생됩니다. 프로세스의 문맥이란? 1. 하드웨어 문맥 (Hardware Context) CPU가 프로세스를 실행하기 위해 필요한 하드웨어 레지스터의 상태입니다. 하드웨어 문맥에는 아래와 같은 데이터가 존재합니다. 프로그램 카운터(Program Counter, PC): 다음에 실행할 명령어의 메모리 주소를 저장하는 레지스터입니다. 프로세서 레지스터: CPU에서 연산에 사용되는..
Union Mount란? 여러개의 파일 시스템을 하나의 파일 시스템에 마운트하는 기법입니다. Union Mount는 아래와 같은 특징을 가집니다. 1. Image Layer 마지막 레이어를 제외하고는 읽기 전용 속성을 가집니다. 2. CoW(copy-on-write) 변경된 파일만 저장합니다. 중복되는 파일이 있을 경우 나중에 마운트된 파일로 덮어집니다. OverlayFS로 Union Mount sudo mount -t overlay \ -o lowerdir=:,upperdir=,workdir= lower dir : 레이어 가장 아래에 있는 읽기 전용 디렉토리 지정, lower 디렉토리에서 변경이 발생했을 경우 upper 디렉토리에 기록된다 upper dir : 수정,생성 및 삭제가 가능한 상위레이어 디..
리눅스 네임스페이스란? 리눅스에서 프로세스를 격리 시킬 수 있는 가상화 기술입니다. cgroup은 자원의 양을 제한한다면 namespace는 자원의 종류를 제한합니다. 네임스페이스의 종류 종류 설명 PID Process ID를 격리하여, 네임스페이스 외 다른 프로세스에 접근이 불가능하게 합니다. NetWork IP, 포트, 라우팅 테이블 등 네트워크 리소스를 격리합니다. User 프로세스별 UID, GID 정보를 격리합니다. Mount 프로세스별 마운트되는 파일시스템을 격리합니다. 지정된 파일시스템을 루트처럼 생각하여 동작하게됩니다. IPC IPC(프로세스간 통신)를 격리하여, 다른 프로세스의 접근이나 제어를 방지합니다. UTS 호스트명이나 도메인 명을 격리합니다. Time 시간을 격리시킬 수 있습니다...
cgroup이란? 리눅스에서 컨테이너를 구성하는 3가지 주요 기술 중 하나로, 프로세스들이 사용하는 시스템 자원의 사용정보를 수집 및 제한 시키는 커널의 기능입니다. cgroup 사용 가능한 서브시스템 CPU - 스케줄러를 이용해 cgroup에 속한 프로세스의 CPU 사용시간을 제어 Memory - cgroup에 속한 프로세스의 메모리 사용량 제어 freezer - cgroup의 작업을 일시 중지하거나 다시 시작 blkio - cgroup에 블록 장치에 대한 I/O 제한을 설정 net_cls - 트래픽 컨트롤러(tc)가 특정 cgroup 적업에서 발생하는 패킷을 식별하게 하는 네트워크 패킷 태그를 지정 cpuset - 개별 CPU 메모리 노드를 cgroup에 할당 cpuacct - cgoup이 사용한 C..
1. 처리량 초당 전송되는 데이터의 양을 의미합니다. 2. IOPS 초당 IO 요청 개수를 의미합니다. SSD의 경우 최대 I/O크기는 256 KiB, HDD의 경우는 1,024KiB 입니다. 3. 읽기/쓰기 비율 페이지 캐시를 공유합니다, 페이지 캐시 크기가 작을 수록 캐시 미스가 많아집니다. 4. 동기적 쓰기 비율 비동기적인 쓰기에 대하여 성능차이가 매우 크게 나타납니다. 비동기적인 쓰기의 경우 페이지 캐시를 참조합니다. 디스크 접근 유/무의 차이 비동기적 I/O 방식 페이지 캐시란? (읽기 성능 개선) 디스크의 입출력을 최소화 하기 위해 디스크 접근이 필요한 데이터를 물리 메모리(RAM)에 페이지 단위로 저장합니다. 페이지 캐시에 있는 데이터에 대한 접근이 발생하면 디스크에서 처리하지 않고 캐시의 ..
OOM Killer (Out of Memory Killer)란? 메모리가 부족할 경우 운영체제의 설정에 따라 특정 어플리 케이션을 강제로 종료하는 기능입니다. OOM Killer가 동작에 대해서는 /var/log/syslog에 로그가 남게 됩니다. oom_score란? OOM_Killer에서 가지는 종료 기준값으로 가장 높은 oom_score를 먼저 종료시킵니다. score는 0 ~ 1000까지의 범위를 가지게 됩니다. /proc//oom_score 명령어를 통해 해당 프로세스의 oom_score를 조회 할 수 있습니다. 기본적으로 리눅스에서 1번 init프로세스는 0 의 oom_score값을 가집니다. (저는 wsl을 통해 조회해서 666이 나왔습니다.) oom_score의 선정기준 oom_score를..
CSF(Completely Fair Scheduler ) 스케줄러란? 2.6.23커널 버전에서 등장한 리눅스의 일반 프로세스용 스케줄러입니다. 프로세스의 응답시간을 빠르게 하고 시스템 사용률을 최대화 하기 위해 사용됩니다. CFS를 이루는 구성요소(개념) 타임슬라이스(time slice) 프로세스가 부여한 실행 시간입니다. 주어진 타임슬라이스값을 다 사용하면 선점 스케줄링 대상이 되고 이후 문맥교환이 이루어집니다. 시스템 클럭이 한 틱 지날 때 마다 그 틱에 해당하는 시간만큼 타임슬라이스가 줄어듭니다, 0이되면 타임슬라이스가 0보다 큰 프로세스가 해당 프로세스를 선점합니다. 기본값은 1ms입니다. 이 값을 최소 세밀도(minimum granualarity)라고합니다. 프로세스 우선순위(priority) ..