FAT(File Allocation Table) 기반 파일 시스템FAT는 저용량 보조기억장치(USB, SD카드 등)에서 주로 사용되는 파일 시스템입니다. 연속적 블록 할당으로 외부 단편화 문제가 발생할 수 있어, 불연속적 할당 방식을 사용합니다. FAT의 특징파일 저장 구조FAT에는 블록 주소와 다음 블록 주소가 기입되어 있습니다. 운영체제는 파일 시작 블록 주소를 디렉토리 엔트리에서 확인하여 파일에 접근합니다. 다음과 같은 파티션 구조로 되어있습니다. 예약 영역: 시스템 정보를 저장FAT 영역: 파일 할당 정보를 저장루트 디렉토리 영역: 디렉토리 정보를 저장데이터 영역: 파일과 디렉토리 데이터가 저장디렉토리 구성 요소파일 이름파일 위치 정보(블록 주소)파일 속성(생성 시간, 수정 시간, 크기 등)FA..
파일 시스템을 이용하기 위한 준비운영체제에서 파일 시스템을 사용하기 위해서는 보조기억장치를 적절히 구획하고 초기화하는 작업이 필요하다. 이를 위해 주로 파티셔닝, 포매팅, 마운트와 같은 단계가 이루어진다. 1. 파티셔닝(Partitioning)정의: 보조기억장치의 영역을 구획하는 작업파티션(Partition): 보조기억장치에서 나뉘어진 각각의 구획된 영역목적:하나의 보조기억장치가 지나치게 크면 관리와 검색 효율이 떨어지기 때문에, 적절히 나누어 효율적으로 사용서로 다른 파일 시스템(예: NTFS, ext4 등)을 동일한 보조기억장치에서 동시에 사용할 수 있도록 구성활용 사례:운영체제를 설치할 때 파티션을 자동으로 나눔보조기억장치를 용도에 따라 나누어 데이터 관리 용이파티셔닝이 필요 없는 경우보조기억장치..
파일 시스템파일 시스템은 운영체제에서 파일과 디렉토리를 관리하는 커널의 중요한 구성 요소이다 이를 통해 데이터를 체계적으로 저장하고 접근할 수 있으며, 다양한 파일 시스템을 동시에 사용할 수도 있다. 1. 파일(file)파일은 보조기억장치에 저장된 의미 있는 정보의 집합으로, 운영체제가 데이터를 관리하고 활용하는 기본 단위이다. 1.1. 파일의 구성 요소 이름(Name): 파일을 식별하는 고유한 이름실행 정보: 실행 가능 여부 또는 실행을 위한 관련 데이터부가 정보: 파일의 메타데이터 및 속성 1.2. 파일의 속성파일은 여러 속성을 통해 관리된다. 유형(Type): 파일의 형식(예: 텍스트, 바이너리)크기(Size): 파일의 크기(바이트 단위)생성 날짜(Creation Date): 파일이 생성된 시간마..
copy-on-write프로세스를 `fork`하면 동일한 프로세스 두 개가 메모리에 복제된다. 그 이유는 프로세스끼리는 기본적으로 자원을 공유하지 않기 때문이다. 부모 프로세스에서 `fork`를 해서 생긴 자식 프로세스는 새로운 메모리를 할당받아 부모와 독립적으로 생성된다.이러한 `fork`방식은 메모리 공간 낭비와 프로세스 생성 시간을 낭비하게 된다. 복제 프로세스를 생성할 경우 이를 중복 저장하지 않고, 동시에 프로세스 간의 자원을 공유하지 않게끔 하는 방법이 `copy-on-write`이다. 다음과 같이 처음 자식 프로세스를 생성할 경우 부모와 동일한 프레임 번호가 지정되게 된다. 여기서 만약 두 프로세스 중 어느 곳에 쓰기 작업이 발생했을 경우 그 페이지를 그제서야 복사하게 된다. 이와 같이 ..
페이지 교체 알고리즘요구 페이징을 통해 페이지들이 메모리에 점차 적재하다 보면 언젠가는 메모리가 가득 찰 것이다. 메모리에 페이지가 가득 찬 상황에서 추가적으로 페이지를 적재해야 한다면 메모리에 적재된 일부 페이지를 스왑 아웃(페이지 아웃) 해야 한다. 이때 메모리에 적재된 페이지 중 보조기억장치로 내보낼 페이지를 선택하는 방법을 페이지 교체 알고리즘이라고 한다. 페이지 교체 알고리즘은 컴퓨터 전체 성능과 직결되며, 좋은 페이지 교체 알고리즘은 페이지 폴트를 적게 일으키는 알고리즘이다. 페이지 폴트를 적게 일으킨다는 것은 페이지 참조열을 보면 된다. 페이지 참조열은 CPU가 참조하는 페이지 중 연속된 페이지를 생략한 페이지열이다.참조한 페이지 [ 2, 2, 2, 3, 5, 5, 5, 3, 3, 7 ]페이..
요구 페이징(Demand Paging)요구 페이징은 프로세시 실행 시 필요한 페이지만 메모리에 적재하는 기법이다. 프로그램 전체를 메모리에 적재하지 않고, 처음에는 최소한의 페이지만 메모리에 적재한다. 실행 중 필요한 페이지가 요청될 때마다, 보조기억장치에서 해당 페이지를 가져온다. 이 말은 즉, 페이지 폴트를 발생하면 그때 페이지를 적재한다는 말과 같다. 순수 요구 페이징(Pure Demand Paging)순수 요구 페이징(Pure Demand Paging)은 프로그램 실행 시 아무 페이지도 미리 메모리에 적재하지 않고, 프로그램이 필요로 할 때만 페이지를 메모리에 적재하는 방식이다. 일반적인 요구 페이징에서는 최소한의 페이지(프로젝트 시작 시 필수적인 초기 코드나 데이터)를 미리 메모리에 적재하는 경..
들어가기 앞서서 용어정리스와핑(Swapping)프로세스를 보조기억장치의 스왑 영역으로 내보내고, 당장 필요한 프로세스를 메모리에 적재하는 메모리 관리 기법스왑 아웃(Swap-out)실행 중인 프로세스를 메모리에서 제거하고, 보조기억장치의 스왑 영역으로 이동시키는 작업스왑 인(Swap-in)스왑 아웃된 프로세스를 보조기억장치에서 다시 메모리로 적재하는 작업스왑 영역(Swap Area)스왑 아웃된 프로세스가 저장되는 보조기억장치의 특정 영역일반적으로 디스크의 일부 공간이 사용되며, 메모리 관리의 효율성을 높이는 데 활용됨 스와핑의 동작방식스와핑을 사용할 시 현재 메모리의 크기보다 더 많은 프로세스를 적재할 수 있는 장점이 있다. 만약 프로세스 A, B, C, D가 있고 이 프로세스의 메모리의 합은 현재 메..
교착 상태교착 상태는 시스템 내에서 두 개 이상의 프로세스가 서로의 작업을 완료하기 위해 상대방이 점유하고 있는 자원을 기다리며 무한정 대기하는 상황을 말한다. 즉, 교착 상태(deadlock)는 일어나지 않을 사건을 기다리며 프로세스의 진행이 멈춰 버리는 현상을 의미한다. 교착 상태 발생 조건 교착상태가 발생하기 위한 네 가지 조건은 상호 배제, 점유와 대기, 비선점, 원형 대기이다. 이 중 하나라도 만족하지 않는다면 교착 상태는 발생하지 않고, 네 가지 조건이 모두 만족할 때 교착 상태가 발생할 가능성이 생긴다. 상호배제한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상호 배제의 상황에서 교착 상태가 발생한다.점유와 대기한 프로세스가 어떤 자원을 할당받은 상황(점유)에서 다른 자원을 ..
기존 동기화 도구의 문제점세마포어는 훌륭한 동기화 도구지만 사용에 있어선 불편한 점이 있다. 다음과 같은 실수를 발생할 가능성이 있다.세마포어를 누락할 가능성wait과 signal 순서를 헷갈리는 경우wait과 signal를 중복하여 사용하는 경우 조건 변수와 모니터모니터는 운영체제에서 사용이 간편한 동기화 도구로, 공유 자원에 대한 접근을 제어하는 인터페이스를 제공하여 상호 배제를 보장한다. 조건 변수는 모니터 내에서 실행 순서 제어를 위한 동기화 도구로 사용되며, 특별한 변수로 `wait()`와 `signal()`연산을 지원한다. wait(): 호출한 프로세스를 대기 상태로 전환하는 함수signal(): 대기 중인 프로세스를 깨워 실행을 재개하는 함수 조건 변수를 활용한 실행 순서 제어는 다음과 같..
동기화 해결의 세 가지 원칙 운영체제에서 임계 구역 문제를 해결하기 위한 세 가지 원칙은 다음과 같다.상호 배제 (mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없다.진행 (progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 진입이 가능하다. 유한 대기 (bounded waiting): 한 프로세스가 임계 구역에 진입하고 싶다면 언젠가는 임계 구역에 진입이 가능해야 한다. 동기화 기법1. 뮤텍스 락 (Mutex Lock)상호 배제를 위한 동기화 도구이다. 공유 자원이 하나만 있는 경우에 적용이 가능하다. 자물쇠(lock)의 기능을 코드로 구현한 게 뮤텍스 락이다. 뮤텍스 락은 다음과 같이 구성된다. 자물쇠 역할을..