컴퓨터공학 32

파일 시스템

파티셔닝 저장 장치의 논리적인 영역을 나누는 작업 포매팅 파일 시스템을 설정 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비하는 작업 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수 있다 포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리 생성이 가능해짐 파일 할당 방법 포매팅까지 끝난 하드 디스크에 파일 저장하기 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장된다 파일을 보조기억장치에 할당하는 두 가지 방법 연속 할당 이름 그대로 보조기억장치 내 연속적인 블록에 파일 할당 외부 단편화를 야기할 수 있음 불연속 할당 연결 할당 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록..

CS지식 쌓기 2024.01.04

파일과 디렉터리

파일 시스템 파일과 디렉터리를 관리하는 운영체제 내의 프로그램 파일과 디렉터리를 다루어 주는 프로그램 파일 보조기억장치에 저장된 관련 정보의 집합 의미 잇고 관련 있는 정보를 모은 논리적 단위 파일을 이루는 정보 파일을 실행하기 위한 정보 + 부가 정보 파일의 속성 디렉터리 윈도우에서는 폴더 여러 계층으로 파일 및 폴더를 관리하는 트리 구조 디렉터리 최상위 디렉터리, 서브 디렉터리 경로 디렉터리를 이용해 파일/디렉터리의 위치, 나아가 이름까지 특정 지을 수 있는 정보 같은 디렉터리 안에는 동일한 이름의 파일이 존재할 수 없지만, 서로 다른 디렉터리에는 동일한 이름의 파일이 존재할 수 있음 경로 절대경로 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로 상대경로 현재 디렉터리에서 자기 자신까지 이르는 경..

CS지식 쌓기 2024.01.04

페이징의 이점과 계층적 페이징

쓰기 시 복사 부모 프로세스와 동일한 자식 프로세스가 복제되어 생성되면 자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킴 (이 후 쓰기 작업이 없다면 이 상태 유지) 부모/자식 프로세스 둘 중 하나가 페이지에 쓰기 작업 수행 시 해당 페이지만 별도의 공간으로 복제 (프로세스 생성 시간 절약, 메모리 절약) 계층적 페이징 프로세스 테이블의 크기는 생각보다 작지 않다 프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는 것은 큰 낭비 프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않을 방법 페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식 모든 페이지 테이블을 항상 메모리에 필요가 없어짐 CPU와 가장 가까이 위치한 페이지 테이블(Outer 페이지 테이블)은 항상..

CS지식 쌓기 2024.01.04

페이지 교체와 프레임 할당

물리 메모리보다 큰 프로세스를 실행할 수 있지만 그럼에도 물리 메모리의 크기는 한정되어 있다 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고 프로세스들에게 적절한 수의 프레임을 할당 요구 페이징 요구되는 페이지만 적재하는 기법 요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체 요구 페이징 기법으로 페이지를 적재하다보면 메모리가 가득 차게 된다 이 때 당장 실행에 필요한 페이지를 적재하려면 적재되어 있던 페이지를 보조기억장치로 보내야함 이를 결정하는 방법 - 페이지 교체 알고리즘 페이지 폴트가 적은 알고리즘 페이지 폴트가 발생하면 보조기억장치에 접근해야 해서 성능 저하 페이지 참조열 CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지 열 FIFO 페이지 교체 알고리즘 가장 단순..

CS지식 쌓기 2024.01.04

페이징을 통한 가상 메모리 관리

연속 메모리 할당의 두 가지 문제점 외부 단편화 물리 메모리보다 큰 프로세스 실행 불가 가상 메모리 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술 페이징, 세그멘테이션 페이징 프로세스를 일정 크기로 자르록, 이를 메모리에 불연속적으로 할당 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자름 메모리의 물리 주소 공간을 프레임이라는 페이지와 동일한 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법 페이징에서의 스와핑 프로세스 단위의 스왑 인, 스왑 아웃이 아닌 페이지 단위의 스왑 인(페이지 인), 스왑 아웃(페이지 아웃) 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃 실행에 ..

CS지식 쌓기 2024.01.02

연속 메모리 할당

연속 메모리 할당 프로세스에 연속적인 메모리 공간 할당 스와핑 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고(스왑아웃) 생긴 공간에 새 프로세스 적재(스왑인) 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 일 때 메모리 할당 방식 프로세스는 메모리의 빈 공간에 할당되어야 한다. 빈공간이 여러개 있다면? 최초 적합 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치 검색 최소화 , 빠른 할당 최적 적합 운영체제가 빈 공간을 모두 검색해본 후 적재 가능한 가장 작은 공간에 배치 최악 적합 운영체제가 빈 공간을 모두 검색해본 후 적재 가능한 가장 큰 공간에 배치 외부 단편화 프로세스를 연속적으로 메모리에 할당하는 ..

CS지식 쌓기 2024.01.02

교착 상태 해결 방법

교착 상태 해결 방법 : 예방, 회피, 검출 후 회복 교착 상태 예방 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나 없애버리기 상호 배제를 없애면? 모든 자원을 공유 가능하게? - 현실적으로 불가능 점유와 대기를 없애면? 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 - 자원의 활용률을 낮출 수 있는 방식 비선점 조건을 없애면? 선점이 가능한 자원에 한해 효과적 - 모든 자원이 선점 가능한 것은 아니다 원형 대기 조건을 없애면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않음 자원에 번호를 붙이는 것은 어려운 작업 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라짐 교착 상태가 발생하지 않음은 보장할 수 있으나 부작용..

CS지식 쌓기 2024.01.02

교착 상태(데드락)

교착 상태 일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상 해결 방법 자원 할당 그래프 - 교착 상태 발생 조건 파악 프로세스는 원으로, 자원의 종류는 사각형으로 표현 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 프로세스가 어떤 자원을 할당 받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시 교착 상태가 일어난 그래프의 특징 - 원의 형태를 띄고 있다 교착상태가 일어나는 근본적인 이유를 알아보기 아래 네 가지 조건 모두 만족해야만 교착 상태 발생 상호 배제 - 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 점유와 대기 - 자원을 할당 받은 상태에서 다른 자원 할당을 기다리는 상태 ..

CS지식 쌓기 2024.01.02

동기화 기법

뮤텍스 락 상호 배제를 위한 동기화 도구(자물쇠 역할), 뮤텍스 락 공유 자원이 하나만 있을 경우 전여 변수 하나, 함수 두 개 자물쇠 역할 ; 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할 : acquire 함수 임계 구역의 잠금을 해제하는 역할 : release 함수 acquire 함수 프로세스가 임계 구역에 진입하기 전에 호출 임계 구역이 잠겨있다면, 임계 구역이 열릴 때까지 임계 구역을 반복적으로 확인 ( lock이 false가 될때까지) 임계 구역이 열려있다면, 임계 구역 잠그기(lock을 true로 바꾸기) release 함수 임계 구역에서의 작업이 끝나고 호풀 현재 잠긴 임계 구역을 열기(lock을 false로 바꾸기) 바쁜 대기(busy waiting) 세마포 좀 더 일..

CS지식 쌓기 2024.01.02

동기화

동기화 공동의 목적을 위해 동시에 수행되는 프로세스 프로세스들의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 실행 순서 제어를 위한 동기화 : reader writer problem writer : Book.txt 파일에 값을 저장하는 프로세스 Reader : Book.txt 파일에 저장된 값을 읽어 들이는 프로세스 reader와 writer프로세스는 무작정 아무렇게나 실행되어선 안된다 실행의 순서가 있기 때문 Reader프로세스는 Book.txt 안에 값이 존재한다는 특정 조건이 만족되어야만 실행 가능 상호 배제를 위한 동기화 : Bank account problem 공유가 불가능한 자원의..

CS지식 쌓기 2024.01.02