목록운영체제 (12)
철학과 학생의 개발자 도전기
1. File and File System 파일은 논리적인 저장 단위로, 관련된 정보 자료들의 집합이다. 레코드 혹은 블록 단위로 비휘발성 보조기억장치에 저장된다. 파일 속성 또는 파일의 메타데이터는 파일을 관리하기 위한 정보다. 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근 권한, 소유자, 시간(생성/변경/사용) 등 파일 시스템은 파일의 저장과 접근을 위한 기법을 제공한다. 계층적 디렉터리 구조이고, 파일 및 파일의 메타데이터, 디렉터리 정보 등을 관리한다. 2. Access Methods a. 순차 접근(Sequential Access) 가장 단순한 방법으로 파일의 정보가 레코드 순서대로 처리된다. 카세트테이프를 사용하는 방식과 동일하다. 현재 위치에서 읽거나 쓰면 offset이 자동으로 증가..
1. 메인 메모리 메인 메모리는 CPU가 직접 접근할 수 있는 기억 장치이다. 프로세스가 실행되려면 프로그램이 메모리에 올라와야 한다. 주소가 할당된 일련의 바이트들로 구성되어 있다. CPU는 PC 레지스터가 가르키는 메모리 주소에 접근하여 다음에 수행할 명령어를 가져온다. 명령어 수행 시 메모리에 필요한 데이터가 없으면 해당 데이터를 우선해서 가져와야 한다. 2. MMU (Memory Management Unit) 논리 주소를 물리 주소로 빠르게 변환하는 하드웨어다. 메모리 보호나 캐시 관리 등 CPU의 메모리 접근을 관리한다. 한정적인 메모리 공간을 효율적으로 사용하기 위해 '가상 주소' 개념이 등장한다. 가상 주소로 실제 데이터를 가져오기 위해서는 빠른 주소 변환이 필요한데 MMU가 바로 그 역할을..
1. FIFO(first in first out) 메모리에서 가장 오래된 페이지를 교체한다. 타임스탬프나 큐를 사용해서 순서를 확인한다. 단순한 알고리즘이지만, 사용빈도를 고려하지 않기 때문에 Page Fault가 자주 발생할 위험이 있다. 2. LRU(least-recently-used) 가장 오랫동안 사용되지 않은 페이지를 교체한다. 단순하지만 효과적인 알고리즘이다. 3. 계수-기반(Counting-Based) 페이지 교체 각 페이지가 현재까지 참조된 횟수를 카운팅하는 방법이다. 이 방법을 이용해 두 가지의 알고리즘을 만들 수 있다. 1) LFU(least-frequently-used) 참조 횟수가 가장 작은 페이지를 교체한다. 교체 대상이 여러 개일 경우, LRU에 따라 선택한다. 초기에 자주 사용..

1. 메모리 관리 기법 연속 메모리 기법 프로그램을 연속적인 메모리에 할당 고정 분할 기법 메모리를 고정된 크기의 파티션으로 나누고, 프로그램에게 하나의 파티션을 할당한다. 내부 단편화가 발생한다. 만약 프로그램의 크기가 파티션보다 크다면 메모리를 할당받을 수 없다. 동적 분할 기법 프로그램이 필요로 하는 메모리 크기만큼만 할당한다. 외부 단편화가 발생한다. 프로그램이 종료되면 메모리에 빈 구역들이 듬성듬성 생기기 때문이다. 불연속 메모리 기법 프로그램이 메모리에 불연속적으로 할당되는 기법 페이징과 세그먼테이션 기법이 존재한다. 가상 메모리 실제 메모리 크기보다 더 많은 메모리를 할당할 수 있도록 가상 메모리 주소를 사용한다. 프로그램의 일부분(당장 필요한 데이터, 자주 사용하는 데이터 등)만 메모리에 ..
0.개요 공유 자원에 대한 동시 접근을 방지하여 Race Condition을 제거할 수 있다. 이를 위해 동기화 기법을 사용한다. 대표적인 예로 뮤텍스와 세마포어가 있다. 1. 뮤텍스 동작 원리 뮤텍스는 공유 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘이다. 임계구역(Critical Section)을 가진 스레드들의 실행시간이 서로 겹치지 않도록 한다. 특정 객체의 Key를 소유한 스레드/프로세스만이 공유자원에 접근할 수 있게 하여 상호배제(Mutual Exclusion)를 달성한다. 사용 시기 뮤텍스는 동기화 대상이 하나일 때 사용한다. 소유와 해제 자원을 소유하고 있는 스레드만이 뮤텍스를 해제할 수 있습니다. 범위와 종료 뮤텍스는 프로세스의 범위를 가지며 프로세스가 종료될 때 자동으로 ..
1. Race Condition 둘 이상이 공유 자원에 동시에 접근하여 결과값에 영향을 줄 수 있는 상황 race condition이 발생하는 코드 영역을 critical section이라고 한다. race condition을 해결하기 위해 동기화 기법을 사용한다. 2. Dead Lock race condition일 때 서로 자원을 잠그고 있어 진행이 안되는 상태 다음 4가지를 모두 충족할 때 발생한다. Mutual Exclusion 자원을 둘 이상이 동시에 사용할 수 없다. Non-Preemptive 할당된 자원을 외부에서 강제로 뺏을 수 없다. Hold & Wait 최소 하나의 자원을 점유하면서 다른 자원을 기다리고 있는 상태다. Circular Wait 자원을 대기하는 상태가 원형을 이룬다. (A는..
1. 개념 CPU에 할당할 프로세스를 선택하는 알고리즘 비선점형: 프로세스에게서 CPU 할당을 뺏을 수 없는 방식 선점형: 프로세스에게서 CPU 할당을 뺏을 수 있는 방식 발생상황 (프로세스 상태 변화) 실행 -> 대기: I/O 발생 실행 -> 준비: 타임아웃 발생 대기 -> 준비: I/O 종료 종료 2. 스케줄링 종류 FCFS 스케줄링 가장 간단한 CPU 스케줄링 알고리즘으로 먼저 요청이 들어온 프로세스를 먼저 처리하는 방식 간단하고 이해하기 쉽지만, 짧은 작업이 긴 작업 뒤에 대기하게 되는 'Convoy Effect'라는 문제가 발생할 수 있다. SJF (Shortest Job First) 스케줄링 실행 시간이 가장 짧은 작업부터 처리하는 방식 평균 대기 시간을 최소화하는 것을 목표로 한다. 하지만,..
1. IPC란 개념 프로세스는 독립된 메모리를 가지고 다른 프로세스 메모리에 직접 접근할 수 없다. 다른 프로세스와 소통하기 위해 커널이 제공하는 IPC 기법 사용해야 한다. 프로세스들이 서로 협력하여 작업을 수행하기 위해 중요한 기능 주요 역할 작업 결과나 데이터를 공유 복잡한 작업을 여러 프로세스가 분담하기 위한 통신 프로세스간 동기화를 위한 통신 2. IPC 종류 1. 파이프 익명 파이프: 주로 한 방향의 통신에 사용되며, PID를 정확히 아는 부모 프로세스와 자식 프로세스 간의 통신에 사용된다. 이 파이프는 메모리 내에서만 존재하며 파일 시스템에는 나타나지 않는다. 네임드 파이프: 두 프로세스가 서로 다른 시간에 실행되거나, 서로 관련이 없을 때도 통신할 수 있도록 해준다. 네임드 파이프는 파일 ..