파일 시스템? 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록, 유지 및 관리하는 방법 저장매체에는 수많은 파일이 있기 때문에, 이런 파일들을 관리하는 방법 특징 커널 영역에서 동작 파일 CRUD 기능을 원활히 수행하기 위한 목적 계층적 디렉터리 구조를 가짐 디스크 파티션 별로 하나씩 둘 수 있음 역할 파일 관리 보조 저장소 관리 파일 무결성 메커니즘 접근 방법 제공 목적 하드디스크와 메인 메모리 속도차를 줄이기 위함 파일 관리 하드디스크 용량 효율적 이용 구조 메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간정보, 삭제유무 등의 파일 정보 데이터 영역 : 파일의 데이터 파일(File)? 컴퓨터는 정보들을 자기 디스크, 자기 테이프, 광 디스크와 같은 다양한 저장 매체에 저장할 수 ..
CS
메인 메모리(Main Memory) 메인 메모리는 CPU가 직접 접근할 수 있는 기억 장치 프로세스가 실행되기 위해선 프로그램이 메모리에 적재되야함 주소가 할당된 일련의 바이트로 구성되어 있음 CPU는 레지스터가 지시하는대로 메모리에 접근하여 다음에 수행할 명령어를 가져옴 명령어 수행 시 메모리에 필요한 데이터가 없으면 해당 데이터를 우선 가져와야 함 이 역할을 하는 것이 바로 MMU이다. MMU(Memory Management Unit, 메모리 관리 장치) 논리 주소를 물리 주소로 변환해 준다. 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해 주는 하드웨어임 메모리의 공간이 한정적이기 때문에, 사용자에게 더 많은 메모리를 제공하기 위해 '가상 주소'라는 개념이 등장 가상 주소는 ..
페이지 교체(Page Replacement) 알고리즘? 페이지 부재 발생 -> 새로운 페이지를 할당 해야함 -> 현재 할당된 페이지 중 어떤 것을 교체할지 결정하는 방법 가상 메모리는 요구 페이지 기법을 통해 필요한 페이지만 적재하고 사용하지 않는 부분은 그대로 둠 필요한 페이지만 올려도 메모리는 결국 가득 차게 될 것 올라와있던 페이지가 사용이 다 된 후에도 자리만 차지하고 있을 수 있음 메모리가 가득 차면 추가로 페이지를 가져오기 위해 안쓴는 페이지는 out하고, 해당 공간에 필요한 페이지를 in 시켜야 함 이때 어떤 페이지를 out 시켜야할 지 결정해야함 out 되는 페이지를 victim page라고 함 교체되는 페이지는 가능한 수정되지 않은 페이지를 선택해야 좋음 만약 수정되면 메인 메모리에서 내..
사용 이유? 다중 프로그래밍 시스템에서 다수의 프로세스를 수용하기 위해 주 기억장치를 동적으로 분리하는 메모리 관리 작업이 필요 메모리 관리 요구 조건 재배치 보호 공유 논리적 구성 물리적 구성 이때 논리적 구성에서 대표적인 메모리 관리 기술인 세그먼테이션이 있다. 메모리 관리 프로그램을 어떻게 메모리에 적재할 것인지 판단하는 것은 페이징과 세그먼테이션 외에 다른 기법도 존재 연속 메모리 관리 프로그램 전체가 하나의 커다란 공간에 연속으로 할당되어야 하는 방법 고정 분할 기법 주 기억 장치가 고정된 파티션으로 분할 구현이 간단하여 운영체제에 오버헤드가 거의 없음 내부 단편화 발생 동적 분할 기법 파티션들이 동적으로 생성되며 자신의 크기와 같은 파티션에 적재 내부 단편화가 없고, 주 기억장치를 보다 효율적..
공유 자원? 여러 스레드가 공유 자원에 접근 시 race condition이 발생 프로그램의 안정성과 일관성을 해치게 될 것 공유 자원 접근 시 아래와 같은 문제가 발생 일관성이 없는 데이터 두 개 이상의 스레드가 동시에 공유 자원을 변경하거나 읽을 때 서로 다른 데이터를 읽게되어 다른 정보를 제공 받을 수 있다. 데드락(Deadlock) 두 개 이상의 스레드가 서로 다른 자원을 점유하고, 서로 상대방 자원을 기다릴 때 교착 상태가 발생할 수 있다. 성능 저하 스레드간의 경쟁 상태로인해 성능이 저하된다. 위와 같은 상황을 방지하기 위해 동기화 기법인 뮤텍스나 세마포어를 통해 하나의 스레드만이 공유 자원에 접근하도록 한다. 세마포어(Semaphore) 세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생..
Race Condition? 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과 값에 영향을 줄 수 있는 상태 자원 동시 접근 시 자료의 일관성을 해치는 결과가 나타남 공유 메모리를 사용하는 프로세스간에는 경쟁 상태가 발생할 수 있으며 이에 대한 해결책은 동기화다 Race Condition 발생하는 경우 커널 작업 수행 중 인터럽트 발생 커널 모드에서 데이터를 로드하여 작업을 수행하다 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다. 프로세스가 시스템 콜을 통해 커널모드로 진입하여 작업을 수행하는 중 문맥 교환이 발생하였을 때 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이..
IPC? 프로세스는 독립적으로 실행된다. 독립되어있다는 것은 다른 프로세스에게 영향을 받지 않는다는 의미 스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다. 독립적 구조를 가진 프로세스 간의 통신을 해야하는 경우 IPC 통신을 사용 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 진행할 수 있음 공유된 자원을 프로세스간에 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용함 공유된 자원에 한번에 하나의 프로세스만 접근시킬 때 사용 IPC 종류 익명 PIPE 파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 쓰기만, 다른 프로세스는 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능한 반이중(Half-Duplex) 통신이라고 한다. 양쪽 모두 송/수신을 하고 싶으면 2개의 파이..
DeadLock? 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. DeadLock의 발생 이유 프로세스1과 프로세스2가 자원1, 2를 모두 얻어야 하는 경우 t1 : 프로세스 1이 자원 1을 얻음 / 프로세스 2가 자원 2를 얻음 t2 : 프로세스 1은 자원 2를 기다림 / 프로세스 2는 자원 1을 기다림 현재 서로 원하는 자원이 상대방에게 할당되어 두 프로세스는 무한히 wait 상태에 빠짐 DeadLock 발생 주로 발생하는 이유 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 동시에 그 자원을..