728x90

CS 46

[Linux] 파일 시스템(/etc/fstab)

/etc/fstab 파일은 리눅스 시스템에서 파일 시스템을 부팅 시 자동으로 마운트 할 수 있도록 설정하는 중요한 구성 파일이다. 이 파일에는 시스템의 각 파일 시스템, 스왑 공간, 네트워크 파일 시스템(NFS) 등을 정의하고, 부팅 시 어떤 위치에 어떻게 마운트 할지를 결정한다.만약 이 파일의 구성이 잘못되어 버린다면 부탕시 파일시스템 마운트 과정에서 부팅이 멈추어 버릴것이다. /etc/fstab 파일의 형식각 라인은 특정 파일 시스템 또는 스왑 공간을 나타내며, 다음과 같은 필드를 포함한다:파일 시스템 (UUID 또는 디바이스 경로):예: UUID=0400035f-3725-4df6-822a-4d41da31ff41파일 시스템의 고유 식별자(UUID) 또는 장치 파일 경로(예: /dev/sda1)를 지정..

CS 2024.08.26

[Linux] 호스트네임 관리와 네트워크 설정

시스템 호스트네임 관리리눅스 시스템에서 호스트네임은 시스템을 네트워크 상에서 식별하는 중요한 요소이다. 호스트네임은 네트워크 통신에서 다른 컴퓨터와의 연결 및 식별에 사용된다. 호스트네임 설정hostnamectl 명령어는 시스템의 호스트네임을 설정하거나 변경하는 데 사용된다. 단순히 시스템의 이름을 설정하는 것 이상으로, 이 명령어는 시스템이 재부팅되더라도 설정된 호스트네임을 유지하게 하며, 네트워크 상에서의 시스템 정체성을 확립한다.새로운 호스트네임을 설정하려면 다음과 같은 명령어를 사용한다.sudo hostnamectl set-hostname new-hostname이 명령어를 실행하면, 시스템의 호스트네임이 new-hostname으로 변경된다. 이 변경 사항은 즉시 적용되며, 시스템의 네트워크 식별자..

CS 2024.08.26

[Linux] 스왑 공간

스왑 공간은 리눅스 시스템에서 물리적 메모리(RAM)가 부족할 때, 디스크의 일부를 임시 메모리로 사용하는 공간이다. 시스템의 RAM이 가득 차면 사용하지 않는 데이터나 프로그램의 일부를 스왑 공간으로 옮겨 RAM을 확보하게 된다. 이 과정을 스왑아웃(swap out)이라고 하며, 스왑 공간에서 다시 RAM으로 데이터를 가져오는 과정은 스왑인(swap in)이라고 한다.스왑은 크게 두 가지 형태로 존재할 수 있다:스왑 파티션: 디스크의 일부를 스왑 전용 파티션으로 할당한 것.스왑 파일: 일반 파일 시스템에서 파일로 존재하는 스왑 공간. 스왑 공간의 역할메모리 부족 시 도움: RAM이 부족해지면 스왑 공간을 활용하여 시스템의 안정성을 유지할 수 있다.대용량 작업 지원: 스왑 공간을 활용하면 대규모 데이터 ..

CS 2024.08.26

[CS] Blocking I/O & Non-Blocking I/O

블록 I/OI/O 작업을 요청한 프로세스나 스레드가 작업이 완료될 때까지 대기하는 방식이다. 이 방식은 단순하고 직관적이지만, 블록 상태로 인해 자원 활용에 비효율적일 수 있다.물론, 스레드가 I/O 작업 때문에 블록 되는 동안, CPU 코어는 다른 스레드에게 할당될 수 있다. 이 경우 CPU는 여전히 다른 작업을 수행할 수 있지만 대량의 스레드가 블록 상태로 대기하면 시스템 자원(메모리, 스레드 관리 오버헤드 등)을 낭비할 수 있다.동작 과정스레드가 read 시스템콜을 수행한다.스레드는 블락 상태가 되어 커널 모드로 전환된다.커널이 I/O 작업을 수행하고 관련 디바이스에 요청을 보낸다.디바이스가 요청을 처리하고 커널로 응답을 보낸다.커널이 유저 스페이스로 데이터를 이동시킨다.스레드는 작업이 완료되면 다..

CS 2024.08.12

[CS] 스레드의 종류

하드웨어 스레드CPU가 메모리에서 데이터를 읽거나 쓸 때 지연이 발생한다. 이 시간을 비효율적으로 보내지 않기 위해 생겨난 기술로, 물리적 CPU 코어가 동시에 여러 작업을 수행할 수 있도록 지원하는 기술이다.이 스레드는 운영 체제(OS)에서 가상의 코어로 인식되며, OS는 이를 실제 물리적 코어로 간주하여 스케줄링한다.싱글 코어 CPU에 하드웨어 스레드가 두 개 있다면, OS는 이를 듀얼 코어 CPU로 인식해 스레드를 할당하고 스케줄링한다.인텔 Hyper-Threading: 인텔의 하이퍼 스레딩 기술은 하나의 물리적 코어에 두 개의 하드웨어 스레드를 할당하여, 코어가 동시에 두 개의 스레드를 처리할 수 있게 한다. 이를 통해 CPU의 유휴 시간을 줄이고 자원을 최대한 활용할 수 있다. 예를 들어, 하이..

CS 2024.08.12

[CS] 운영 체제의 모드와 시스템 콜

커널 (Kernel)커널은 운영체제의 핵심 부분으로, 시스템 하드웨어와 사용자 응용 프로그램 간의 중개자 역할을 한다.역할:시스템 자원 관리: CPU 스케줄링, 메모리 관리, 파일 시스템 관리, I/O 장치 관리 등을 통해 시스템 자원을 효율적으로 관리한다.보안 및 보호: 프로그램이 하드웨어 자원에 직접 접근하지 못하도록 보호하고, 시스템의 무결성을 유지한다.프로세스 관리: 프로세스 생성, 스케줄링, 동기화 및 통신을 처리하며, 각 프로세스가 서로 간섭 없이 실행될 수 있도록 관리한다.인터페이스 제공: 시스템 콜을 통해 응용 프로그램이 커널의 기능을 사용할 수 있는 인터페이스를 제공한다. 유저 모드 (User Mode)유저 모드는 일반 사용자 프로그램이 실행되는 보호된 실행 모드이다. 이 모드에서는 프로..

CS 2024.08.11

[CS] CPU Scheduler & Dispatcher

CPU Scheduler역할: 스케줄러는 준비 상태(ready state)에 있는 여러 프로세스 중에서 다음에 CPU를 할당받을 프로세스를 선택하는 역할을 한다. 스케줄러는 CPU 자원을 어떤 프로세스에게, 언제 할당할지를 결정하는 정책을 구현한다. 이 과정에서 스케줄러는 프로세스의 우선순위, 프로세스의 도착 시간, CPU 사용 시간 등 다양한 요소를 고려하여 선택한다.작동 방식: CPU 스케줄러는 레디 큐(Ready Queue)에서 실행 가능한 프로세스 중 하나를 선택하여 실행을 결정한다. 스케줄링 알고리즘에 따라 선택 기준이 달라질 수 있다.Ready Queue레디 큐는 실행 준비가 된 프로세스들이 대기하고 있는 큐를 말한다. 프로세스가 생성되거나 입출력 작업을 마친 후, 실행을 위해 이 큐에 추가된..

CS 2024.08.11

[CS] 프로세스/스레드 상태 변화

프로세스 상태 변화프로세스 상태 변화는 운영체제에서 프로세스가 생성되고 종료될 때까지의 다양한 상태 전환을 설명하는 개념이다. 프로세스는 여러 가지 이유로 상태가 변할 수 있으며, 이러한 상태 변화는 운영체제의 스케줄링 및 자원 관리와 밀접하게 연관되어 있다. 프로세스 상태상태설명New (생성)- 새로운 프로세스가 생성된 상태- 이 상태에서 프로세스는 아직 큐에 들어가지 않았으며, 필요한 초기화 작업이 진행중이다.Ready (준비)- 프로세스가 실행될 준비가 된 상태- 여러 프로세스가 이 상태에 있을 수 있으며, 이들 중 하나가 스케줄러에 의해 선택되어 실행된다.Running (실행)- 프로세스가 CPU를 할당받아 실제로 실행 중인 상태- 이 상태에서 프로세스는 CPU에서 명령을 수행한다.Waiting ..

CS 2024.08.11

[CS] Deadlock

교착상태(Deadlock)란?동기화 기법을 사용하는 시스템에서 두 개 이상의 프로세스나 스레드가 서로가 가진 리소스를 기다리면서 무한 대기에 빠지는 상태를 의미한다. 데드락 발생의 네 가지 조건데드락이 발생하려면 다음 네 가지 조건이 모두 충족되어야 한다. 이 조건들 중 하나라도 충족되지 않으면 데드락이 발생하지 않는다.Mutual Exclusion (상호 배제): 자원은 한 번에 하나의 프로세스만 사용할 수 있다.Hold and Wait (점유 및 대기): 최소한 하나의 자원을 점유한 상태에서 다른 자원을 추가로 요청하며, 해당 자원이 할당될 때까지 대기하는 프로세스가 있다.No Preemption (비선점): 다른 프로세스에 할당된 자원을 강제로 빼앗을 수 없다. 자원을 사용하는 프로세스는 자발적으로..

CS 2024.08.11

[CS] 동기화

Race Condition (경쟁 조건)여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 의미한다. 동기화 (Synchronization)여러 프로세스나 스레드가 공유 자원에 접근하는 것을 제어하여 데이터 무결성을 유지하고 경쟁 조건을 방지하는 메커니즘이다. 동기화는 뮤텍스, 세마포어, 모니터 등을 사용하여 구현된다. Critical Section (임계 영역)공유 자원에 대해 동시에 하나의 프로세스나 스레드만 접근할 수 있는 코드 영역이다. 이를 통해 데이터의 무결성을 유지하고, 여러 스레드가 동시에 자원에 접근하여 발생할 수 있는 충돌을 방지할 수 있다. Critical Section Problem (임계 영역 문제)임계 영역에 대한 ..

CS 2024.08.09
728x90