Linux OS File System
·
Interview/OS
Linux에서는 파일을 관리하는 방식이 여러 가지 요소와 구조로 이루어져 있습니다. 다음은 Linux의 파일 시스템 및 파일 관리에 대한 주요 개념과 구성 요소입니다.1. 파일 시스템 구조계층적 구조: Linux 파일 시스템은 트리 구조로 되어 있으며, 모든 파일과 디렉터리는 루트 디렉터리(/)를 기준으로 계층적으로 구성됩니다.디렉터리: 디렉터리는 파일을 조직하는 방법을 제공하며, 다른 디렉터리를 포함할 수 있습니다. 주요 디렉터리에는 /bin, /etc, /home, /usr, /var 등이 있습니다.2. 파일 시스템 타입Linux는 여러 가지 파일 시스템을 지원합니다. 각 파일 시스템은 고유한 특성과 용도가 있습니다. 일반적인 파일 시스템 타입에는 다음이 포함됩니다:ext4: Linux에서 가장 널리..
Linux OS File Descriptor
·
Interview/OS
파일 디스크립터파일 디스크립터(File Descriptor)는 Linux와 Unix 기반 운영체제에서 파일이나 입출력 리소스에 접근할 때 사용하는 추상적인 핸들입니다. 운영체제는 파일 디스크립터를 통해 파일, 소켓, 파이프, 표준 입출력 장치와 같은 다양한 입출력 자원을 관리하고 접근할 수 있습니다.파일 디스크립터의 역할파일 식별자 역할파일 디스크립터는 운영체제 내부에서 열린 파일을 식별하는 데 사용됩니다. 프로세스가 파일을 열면, 운영체제는 해당 파일에 대한 파일 디스크립터를 생성하고, 이를 통해 프로세스가 파일에 접근할 수 있게 합니다.파일 디스크립터는 정수 값으로, 운영체제는 이를 통해 열린 파일에 대한 메타데이터(파일의 위치, 상태 등)를 추적합니다.입출력 연산 관리파일 디스크립터는 파일과의 입출..
Linux OS fork
·
Interview/OS
forkfork()는 Linux 및 Unix 기반 운영체제에서 프로세스를 생성하는 가장 기본적인 시스템 호출입니다. 이 호출은 현재 프로세스(부모 프로세스)를 복사하여 자식 프로세스를 생성하는데, 부모와 자식 프로세스는 거의 동일한 환경을 가지지만, 프로세스 ID(PID)와 몇 가지 자원은 서로 다릅니다.fork() 호출의 내부적인 동작 방식을 단계별로 설명해 보겠습니다.1. 시스템 호출 fork() 발생사용자 공간에서 fork()를 호출하면, 커널 모드로 진입하여 커널이 새로운 프로세스를 생성하는 작업을 시작합니다.fork()는 부모 프로세스의 주소 공간을 그대로 복사해서 자식 프로세스를 만들지만, 커널 내부에서 몇 가지 최적화를 적용합니다.2. 프로세스 테이블 엔트리 생성커널은 프로세스 관리를 위해 ..
Heap 영역 메모리 동적 할당 내부 로직
·
Interview/OS
Heap 영역 메모리 동적 할당 내부 로직힙(Heap) 영역에서 메모리 동적 할당이 이루어지는 내부 로직은 복잡하지만,기본적인 과정은 다음과 같은 단계로 이루어집니다.주로 malloc()과 같은 함수를 호출할 때의 동작을 설명하겠습니다.1. 프로그램 시작 시 힙 영역 설정프로그램이 시작되면, 운영체제는 프로세스에 힙 영역을 할당합니다. 힙은 일반적으로 메모리 주소 공간의 낮은 주소에서 시작하고, 동적 할당 요청에 따라 힙의 크기가 커질 수 있습니다.운영체제는 sbrk() 또는 mmap() 같은 시스템 호출을 사용하여 힙 영역의 크기를 늘릴 수 있습니다.sbrksbrk는 힙 영역의 끝을 조정하여 메모리를 할당하는 시스템 호출입니다. 이 함수는 주로 동적 메모리 할당(예: malloc)에 사용됩니다.sbrk..
OS 프로세스 데이터 영역
·
Interview/OS
OS 프로세스 데이터 영역코드(Code) 영역:프로그램의 기계어 명령어가 저장되는 영역입니다. 소스 코드를 컴파일하여 기계어로 변환한 후 이 영역에 저장됩니다.프로그램 실행 동안 CPU가 이 영역에서 명령어를 가져와 실행하게 됩니다.읽기 전용으로 설정되어 있으며, 프로그램이 끝날 때까지 메모리에 상주합니다.데이터(Data) 영역:초기화된 전역 변수와 정적(static) 변수가 저장됩니다.전역 변수와 static 변수는 프로그램 시작 시 할당되며, 프로그램이 종료될 때까지 유지됩니다.이 영역의 데이터는 프로그램이 시작할 때 값이 초기화되며, 메모리의 해당 위치는 프로그램 전체에서 참조 가능합니다.BSS 영역:초기화되지 않은 전역 변수 및 정적 변수들이 저장되는 영역입니다.이 변수들은 프로그램 시작 시 자동..
Memory 단편화 Fragmentation 과 병합 Coalescing
·
Interview/OS
Memory Fragmentation메모리 단편화(Fragmentation)는 동적 메모리 할당 시스템에서 발생하는 문제로, 메모리가 사용 가능한 작은 조각들로 나뉘어져 큰 메모리 블록을 할당하지 못하는 상황을 의미합니다. 단편화는 크게 두 가지로 나뉩니다:외부 단편화(External Fragmentation): 사용 가능한 메모리 공간이 여러 작은 조각으로 나뉘어져 있어, 비록 전체적으로는 충분한 공간이 있지만 요청된 크기의 연속적인 공간을 제공할 수 없는 경우.내부 단편화(Internal Fragmentation): 할당된 메모리 블록이 실제 필요한 크기보다 더 커서, 블록 내의 일부 공간이 낭비되는 경우.Memory Coalescing메모리 병합(Coalescing)은 주로 외부 단편화를 해결하기 ..
Snowflake ID란 C, C++, Java, Golang
·
Interview/Etc
Snowflake ID?Snowflake ID는 Twitter에서 개발한 분산 시스템을 위한 고유한 ID 생성 알고리즘입니다.이 방식은 빠르고 효율적으로 중복되지 않는 고유 ID를 대규모 시스템에서 생성할 수 있도록 설계되었습니다.Snowflake ID는 64비트 정수로 이루어져 있으며, 주로 분산 환경에서 고유한 ID를 생성할 때 사용됩니다.Snowflake ID의 구성은 64비트(8바이트)로 되어 있으며, 다음과 같은 4가지 주요 부분으로 나뉩니다:1. Timestamp (41비트)Snowflake ID는 41비트를 타임스탬프에 할당합니다.이 타임스탬프는 특정 기준 시점(예를 들어, Twitter에서는 1970년이 아니라 2010년 11월 4일 기준)을 기준으로 현재 시간을 밀리초 단위로 저장합니다...
김 정출
'Interview' 카테고리의 글 목록 (10 Page)