운영체제(OS)

    [OS] 메모리

    [OS] 메모리

    [프로세스에 할당되는 메모리의 각 영역] 프로세스의 주소 공간은 코드, 데이터, 스택 힙 영역으로 구성된다. 이렇게 나눔으로써 데이터를 공유할 수 있게 되고 메모리 사용량이 줄어든다. 코드 영역 : 사용자가 작성한 프로그램 함수 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간 (컴파일 타임에 결정되며, 읽을 수만 있다.) 데이터 영역 : 전역 변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공산 스택 영역 : 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터(지역변수, 매개변수, 리턴값 등)을 임시로 저장하는 공간. 힙 영역 : 프로그래머가 필요할 때마다 사용하는 메모리 영역으로 런타임 시점에 결정된다. [메모리 구조의 순서 (CPU에서 가까운 순으로 ..

    [운영체제] 할당 방법

    [운영체제] 할당 방법

    보조저장장치의 직접 접근 특성은 파일의 구현에 융통성을 허용한다. 하지만 주요 문제는 파일들을 어떻게 저장장치 공간에 배치해야 디스크 공간을 효율적으로 사용할 수 있고, 파일들을 빨리 접근할 수 있는가 하는 것이다. 저장장치 공간을 할당하기 위해서는 연속, 연결 그리고 인덱스 기법이 사용된다. 1 ) 연속 할당 : 각 파일이 저장장치 내에서 연속적인 공간을 차지하도록 요구한다. -> 대부분의 경우에서 좋은 성능을 보인다. -> 간단하다 : 시작 지점과 길이만 필요하다. -> 파일을 지우고 쓰는 과정에서 단편화 문제가 생길 수 있다. -> Ex) 아주 큰 공간을 예약한 후, 파일이 장기간에 걸쳐서 서서히 커질 때는 많은 공간이 내부 단편으로 낭비된다. : 어느 정도의 연속된 공간만 초기에 제공하고 추후 n..

    [운영체제] 데릭터리 구현

    디렉터리 공간을 어떻게 할당하고 어떻게 관리하는가는 파일 시스템의 효율, 성능과 신뢰성에 큰 영향을 미친다. 따라서 이들과 관련된 알고리즘과 문제점들을 이해할 필요가 있다. [디렉터리 구현] 1 ) 선형 리스트 ->가장 일반적인 방법으로 선형적으로 디렉터리를 구현한다. -> 속도가 느리다는 단점이 있다. 2 ) 해쉬 테이블 -> 서칭 시간을 감소시킨다. -> 충돌 문제가 있다. (연결리스트로 해결 가능)

    [운영체제] 파일 시스템 구조와 구현

    [운영체제] 파일 시스템 구조와 구현

    파일 시스템을 유지하기 위한 보조저장장치로 디스크가 주로 사용된다. 그 이유는 다음과 같다. 1 ) 디스크는 추가 장소를 사용하지 않고 재기록이 가능하다. 2 ) 디스크에 있는 임의의 블록의 정보를 직접 접근할 수 있다. 파일 시스템은 쉽게 데이터를 저장하고, 찾고 또한 인출할 수 있게 함으로써 저장장치를 더욱 효율적이고 편리하게 사용할 수 있게 도와준다. -> 파일 시스템이 사용자에게 어떻게 보여야 할지 정의해야함 (파일은 무엇이고 속성, 디렉터리 구조 등) -> 논리 파일 시스템을 물리적인 2차 저장장치로 사상하는 알고리즘과 데이터 구조를 정의해야 함. 파일 구조는 파일 제어 블록(FCB)에 의해 유지된다. [계층적 파일 시스템] 1 ) 입/출력 제어 층 : 장치 드라이버 루틴들과 인터럽트 핸들러로 ..

    [운영체제] 디렉토리 구조

    [운영체제] 디렉토리 구조

    1 ) Single-Level Directory(단일 계층 구조) → Naming, Grouping 안됨. 2 ) Two-Level Directory → Path name : /user/a → 다른 사용자라면 같은 이름 사용 가능 → 효과적인 searching but 그룹화는 안됨. 3 ) 나무 구조 → 효율적인 탐색 → 그룹화 가능 → 새로운 파일은 현재 폴더에 생김. → 절대경로 상대경로 사용가능 → 만약 e라는 폴더를 삭제하면 hex와 count도 삭제되는 문제 발생 4 ) Acylic-Graph Directories → 두 사람이 같은 파일에 작업할 때 유용 → 비 순환 그래프디렉토리 : 파일 공유가 쉬워짐 → w나 words를 삭제했을 때 dangling pointer문제를 해결하기 위해서 링크..