일단 씻고 나가자
23.05.02 본문
2023. 05. 02 화요일
- [cmd] . .. tab 키의 의미? cls 명령어란?
: . 은 현재 디렉토리, .. 은 상위 디렉토리를 의미하며
특정 디렉토리나 파일을 검색할 때 첫 글자를 쓰고 tab 키를 누르면 해당 글자로 시작하는 폴더명을 알아서 적어준다.
cls는 clear의 명령어. 현재 창을 모두 지운다.
- 페이지 교체 정책이란? 종류 5가지?
: page replacement policy. 요구 페이지 형식으로 페이지를 올릴 경우 어느 순간 메모리가 모두 차는 순간이 올 텐데, 이때 삭제할 페이지를 고르는 방법.
1. FIFO (First In First Out = Queue)
: 가장 먼저 들어온 페이지를 삭제. 가장 간단한 방법이지만, 운영체제의 이런 작업들은 빈번하게 일어나므로 최대한 간단한 알고리즘을 사용하는 것이 좋음.
2. OPT (OPTimal)
: 최적 페이지 교체 알고리즘. 앞으로 가장 오랫동안 사용하지 않을 페이지를 예상하여 삭제.
예상이므로 일반 OS에선 구현 불가하다.
3. LRU (Least Recently Used)
: 가장 오래전에 사용된 페이지를 교체. OPT의 예측이 불가능하므로, 가장 사용할 가능성이 적은 페이지를 과거 기록을 기반하여 삭제. (메모리 지역성. 어느 시점에서 반복한 특정 구간은 시점이 지나가면 더 이상 사용하지 않는다.)
4. LFU (Least Frequently Used)
: 가장 적게 사용된 페이지를 삭제. 페이지마다의 횟수를 기록하여 비교.
5. NUR (Not Used Recently)
: LRU처럼 최근에 사용하지 않은 페이지를 교체하지만, 페이지마다 참조(Read), 수정(Modify) 비트를 각각 두어 (R,M) = (0,0), (0,1), (1,0), (1,1) 순서로 삭제.
- 스레싱이란?
: Thrashing. 반복적인 페이지 폴트로 인한 과도한 페이지 교체 작업으로, 실제로는 아무런 작업이 실행되지 못하는 상황.
- 파일 시스템? 블록과 파일? 블록 저장 시 생기는 이슈? 해결 방안? 윈도우, 리눅스 방식?
: 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘.
파일을 쓰기 위해선 메모리에 저장해야 하는데, 비트 단위로 관리하기에는 오버헤드가 너무 크므로 페이지처럼 보통 4KB 단위로 나누어 저장한다. (조금 남는 부분도 4KB를 할당하여 채움) 해당 단위를 블록이라 하며, 특정 파일에 어느 블록이 있는지 구분하기 위해 관리 기법을 둔다. 이때 사용자가 블록을 일일이 컨트롤하긴 힘들므로 추상적인 단위로 블록들을 묶어서 관리하는 단위가 파일이다. 즉, 파일의 구현엔 내부에 4KB 단위의 무수한 블록이 존재하며, 해당 블록들이 어느 파일인지 구분하는 방법은 운영체제가 제시한다. 이런 가상 단위가 파일이다.
하나의 파일 내부의 블록들은 최대한 메모리에 연속하여 저장하는 방법이 좋으나, 파일의 삭제 시 생기는 빈공간에 대하여 다음 저장되는 파일의 크기에 따라 저장할 수 없는 문제가 발생하는데 이를 외부 단편화라 한다. 추가로 파일의 최초 저장 이후 수정 시에 파일의 크기가 더 커졌을 때 메모리의 다음 주소에 이미 다른 파일이 자리하여 크기를 키울 수 없는 문제도 존재한다. 이를 해결하기 위하여 블록체인, 인덱스 블록 기법 두 가지가 대표적으로 있다.
두 기법은 블록들을 따로 떨어트려 저장하는 방식을 사용하고, 이를 관리하는 방법이 다르다. 블록체인 방식은 링크드 리스트로 특정 파일 내부의 블록들을 모두 연결하며, 끝의 블록을 찾으려면 맨 처음부터 순차적으로 탐색해야 하는 단점이 존재한다.
인덱스 블록 기법은 각 블록의 위치를 모두 기록하는 방식이며, 인덱스 방식을 활용한다.
윈도우는 FAT, FAT32, NTFS등 블록의 위치를 FAT이란 자료구조에 기록하며
리눅스(UNIX 계열)는 ext2, ext3, ext4 방식으로 인덱스 블록 기법 기반의 inode 방식을 사용한다.