System
-
[Linux] cgroup cpu.max 설정 알아보기System 2024. 6. 20. 07:23
- 목차 들어가며.이번 글에서는 Docker 와 Container 가상화 기술의 근간이 되는 cgroup 과 cpu.max 설정에 대해서 알아보도록 하겠습니다.cgroup 은 Control Group 의 약자로 리눅스 커널에서 프로세스들의 리소스 사용을 제한, 추적, 관리하는 기능을 제공합니다.cgroup 을 사용하면 시스템의 CPU, 메모리, I/O 등을 프로세스 그룹 단위로 제한할 수 있으며, 이를 통해 서버 리소스를 효율적으로 분배하고 과도한 리소스 소비를 방지할 수 있습니다. cgroup은 기본적으로 cgroup v1과 cgroup v2 두 가지 버전으로 나뉩니다.cgroup v2는 구조가 단순하고 더 강력한 기능을 제공하는 방식으로 최신 리눅스 배포판에서 기본적으로 사용됩니다. /sys/fs/c..
-
[Linux] unshare 과 PID Namespace 격리 알아보기System 2024. 6. 19. 07:03
- 목차 들어가며.이번 글에서는 Docker 와 같은 Container 가상화 기술의 근간이 되는 PID Namespace 에 대해서 알아봅니다.PID Namespace 격리는 unshare 명령어를 통해서 구현할 수 있습니다.기본적으로 Root Level 의 PID Namespace 가 존재합니다. 아래와 같이 PID 가 1번인 Root Process 를 포함하여 9 ~ 15번에 해당하는 여러 Process 가 생성될 수 있습니다.UID PID PPID C STIME TTY TIME CMDroot 1 0 0 23:58 pts/0 00:00:00 bashroot 9 1 0 23:58 pts/0 00:00:00 sle..
-
심볼릭 링크 알아보기 ( Symbolic Link )System 2024. 6. 9. 08:17
- 목차 들어가며.파일 시스템을 사용하다 보면 심볼릭 링크(Symbolic Link) 라는 용어를 종종 접하게 됩니다.심볼릭 링크는 "파일의 또 다른 이름" 처럼 보이지만, 실제로는 파일 시스템에서 데이터를 효율적으로 관리하고 파일 경로를 참조하는 중요한 역할을 합니다.이 글에서는 심볼릭 링크가 무엇인지, 어떻게 동작하는지, 그리고 어떤 상황에서 활용할 수 있는지 자세히 알아보겠습니다. 심볼릭 링크란 ?심볼릭 링크(Symbolic Link) 는 파일이나 디렉토리의 경로(Path)를 참조하는 별도의 파일입니다.심볼릭 링크 자체는 데이터를 저장하지 않으며, 원본 파일의 위치 정보를 문자열로 저장하여 이를 통해 원본 데이터에 접근합니다.마치 Windows 의 "바로 가기" 와 유사하게 동작하지만, 심볼릭 링..
-
Standard Input (표준입력) 이해하기System 2023. 10. 16. 08:24
- 목차 소개. 프로그래밍 입문 수업을 들을 때, 표준 입출력에 대한 강좌가 꼭 하나씩 있곤 합니다. Stdin.read() 와 같은 형식으로 코드 한 줄을 입력하고 나면, 키보드로 타이핑한 텍스트가 터미널로 출력되곤 했습니다. 사실 실무에선 이러한 코드를 다룰 일이 드물고, UI 를 다루는 대부분의 프론트엔드 영역에서도 사용자의 input 을 다루는 코드들이 굉장히 추상화 되어있죠. HTML 의 태그, Android 나 IOS 에서도 사용자의 입력을 다루는 컴포넌트들이 추상화되어 있습니다. 그래서 표준 입력을 다루는 코드를 다룰 일은 거의 없습니다. 세월이 흘려서 궁금증이 생겨서 Standard Input 에 대한 글을 작성해보려고 합니다. Standard Input 이란? Standard Input ..
-
RPC (Remote Procedure Call) 알아보기System 2023. 10. 14. 11:24
- 목차 소개. RPC 는 Remote Procedure Call 의 약자입니다. 의미는 "원격 서버에 있는 함수를 사용한다" 라는 뜻인데요. 프로그래밍에서 함수를 뜻하는 여러 표현들이 있습니다. Function, Procedure, Method 등은 제각각 고유의 목적이 있어서 약간의 차이는 존재하지만, 이번 글에선 다 같은 함수라고 생각하겠습니다. 어떤 프로그램이 하나 존재한다고 했을 때, 이 프로그램이 프로그램 내부에 선언된 함수들을 사용할 수 있습니다. 하지만 이 프로그램이 그 함수를 가지고 있지 않다면, 다른 곳에 있는 함수를 사용해야할 상황이 생길 수 있겠죠. RPC 는 이러한 상황을 커버하기 위해서 만들어진 Procedure Call 방식입니다. 이어지는 내용에서 자세히 알아보도록 하겠습니다..
-
IPC Signal 알아보기System 2023. 10. 7. 18:44
- 목차 함께 보면 좋을 글 https://westlife0615.tistory.com/345 Shared memory communication 알아보기 - 목차 소개. IPC (Inter-Process Communication) 의 방식 중의 하나로 Shared memory Communication 방식이 존재합니다. Shared memory 는 메모리 상에 존재하는 공유 메모리인데요. 모든 프로세스들이 Shared memory 에 접 westlife0615.tistory.com 소개. Signal 은 IPC 통신의 한가지 방식입니다. IPC 는 Inter-Process Communication 의 약자로 프로세스 간의 통신을 의미합니다. 대표적인 IPC 의 방식은 Shared Memory 와 Sign..
-
Shared memory communication 알아보기System 2023. 10. 7. 10:13
- 목차 관련된 글 https://westlife0615.tistory.com/347 IPC Signal 알아보기 - 목차 함께 보면 좋을 글 https://westlife0615.tistory.com/345 Shared memory communication 알아보기 - 목차 소개. IPC (Inter-Process Communication) 의 방식 중의 하나로 Shared memory Communication 방식이 존재합니다. Shared mem westlife0615.tistory.com 소개. IPC (Inter-Process Communication) 의 방식 중의 하나로 Shared memory Communication 방식이 존재합니다. Shared memory 는 메모리 상에 존재하는 공..
-
[memory management] page 알아보기System 2023. 9. 22. 17:28
- 목차 * 소개page 는 메모리를 구성하는 단위입니다. 하나의 프로그램이 메모리로 로딩이 될 때 프로그램을 구성하는 데이터들은 page 라는 단위로 나뉘어져서 메모리에 로딩이 됩니다. 보통 프로그램은 code segment 로 표현되는 코드 영역과 data segment 라고 불리는 데이터 영역으로 나뉘는데요. 이러한 segment 들이 page 라는 단위로 메모리에 존재합니다. page 는 디스크와 메모리 사이로 전달되는 전송의 단위이자 저장되는 단위입니다. 그리고 page 의 단위는 보통 4KB 인 경우가 많은데, 프로그램 하나의 크기가 page 의 사이즈와 일치하는 경우는 거의 없을 겁니다. 그래서 하나의 프로그램으로부터 생성된 많은 page 들은 메모리 상에서 흩어져서 존재하게 되는데요. 이러..
-
Call Stack 이해하기System 2023. 9. 21. 17:24
- 목차 * 소개 어떤 프로그램을 사용한다는 의미에 대해서 생각해 볼 필요가 있습니다. 예를 들어, 크롬같은 웹 브라우저를 사용한다거나 Spring 같은 서버를 실행시킨다거나 하는 행동들을 말이죠. 프로그램은 컴파일 과정을 거쳐 바이너리 파일이 되는데요. 우리가 흔히 아는 0과 1로 구성된 상태가 되어 CPU 에 의해서 인식될 수 있게 됩니다. 이러한 바이너리 상태의 프로그램이 실행 상태가 되면 프로세스라고 불립니다. 프로세스는 CPU 를 비롯한 컴퓨터 리소스에 의해서 순차적으로 실행되게 됩니다. 실행 방식은 여러 종류가 있습니다. - Sequential Execution : 일반적인 실행입니다. Top-Down 방식으로 한 줄 씩 실행되는 방식 - Branching Execution : If-else ..
-
리눅스 프로세스System 2023. 1. 24. 20:43
프로그램과 프로세스의 차이 프로그램은 단순한 파일입니다. 실행파일이라고도 하죠. 이 실행파일을 실행한 결과물이 바로 프로세스입니다. 프로세스는 기본적으로 CPU 와 메모리를 사용합니다. 그 외 프로그램의 내용에 따라 다른 리소스를 활용하죠. 그래픽 요소를 렌더링하는 게임, 웹 등은 그래픽 자원을 많이 활용할 것이고, 서버와 같은 프로그램은 네트워크 자원을 활용합니다. PCB ( process control block) 리눅스에서 프로세스를 관리하기 위한 자료구조입니다. 운영체제가 프로세스를 한눈에 관리하기 위해 PCB 는 프로세스의 대표적인 정보들로 구성됩니다. 프로세스는 컴퓨터 자원들 중 기본적으로 CPU 를 사용합니다. 하지만 CPU 는 제한적인 리소스이기 때문에 프로세스들이 CPU 점유와 반환을 반..